Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Cocina Casera Cocina PowerCOBOL
Cocina PowerCOBOL Rutinas y ejemplos codificados por nuestros foreros.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[PowerCOBOL] Ocx, Dll y ejemplo envío Mail desde PWC Josber Cocina PowerCOBOL 23 27 de septiembre de 2022 15:53
[Sintaxis] Sql Embebido condición where Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 3 25 de abril de 2020 21:43
[Compilador] Microfocus Cobol y SQL Embebido EBERCAMACHO Micro Focus COBOL 3 9 de agosto de 2019 16:07
[Sintaxis] Sql Embebido Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 23 28 de junio de 2017 01:09
[Sintaxis] Variables en programa con SQL embebido DYANY IBM Enterprise COBOL 1 20 de diciembre de 2016 16:26

Respuesta
 
Herramientas

  #1
Antiguo 9 de noviembre de 2015, 10:50
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Aquí tenéis un pequeño ejemplo de como utilizar PWC y MySQL

Entorno: PWC9,(aunque lo más seguro es que en PWC7 funcione)
Tipo: Ejecutable
Contenido: Ejecutable, Proyecto, Iconos y BMP
Otros: Se incluye archivo COBOL85.cbr y BD.inf

Consideraciones:
  • Antes de ejecutar, hay que modificar los archivos COBOL85.cbr y BD.inf, para que se ajuste a los parámetros de cada uno.
  • Si alguien tiene una manera mejor de hacerlo, que la diga, que estoy abierto a toda sugerencia.

No estoy muy ducho aún en SQL embebido, pero ... poco a poco

Un saludo.-

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  Ejemplo SQL.jpg
Vistas: 354
Tamaño:  65,2 KB  
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo SQL.zip (60,1 KB)Descargas: 416
Josber is offline   Responder Con Cita
  #2
Antiguo 12 de noviembre de 2015, 23:42
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Josber,
Tentei correr o teu programa de exemplo de SQL Embebido e dá erro.
Onde está indicada a ligação à BDados???
É por ODBC??

Queria experimentar com SQL Server.

Un Saludo,
Rui
Rapinto is offline   Responder Con Cita
  #3
Antiguo 13 de noviembre de 2015, 07:52
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de Rapinto Ver Mensaje
É por ODBC??
Si Rui, através de ODBC de SQL

Un saludo.-
Josber is offline   Responder Con Cita
  #4
Antiguo 13 de noviembre de 2015, 11:04
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

Utilizar el control ADO, funciona como SQL integrado, y puedes mover valores como otro control de powercobol, y además puedes utilizar OLE-DB sin OBDC por medio mediante string de conexión.
Dasije is offline   Responder Con Cita
  #5
Antiguo 13 de noviembre de 2015, 12:39
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de Dasije Ver Mensaje
Utilizar el control ADO, funciona como SQL integrado, y puedes mover valores como otro control de powercobol, y además puedes utilizar OLE-DB sin OBDC por medio mediante string de conexión.
No lo he usado nunca, ¿podrías poner un ejemplo?

Un saludo.-
Josber is offline   Responder Con Cita
  #6
Antiguo 14 de noviembre de 2015, 13:15
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

Working:

Código COBOL:
  1. 01 CONTROL-ADO-3A OBJECT REFERENCE POW-COBJECT.

Procedure:

Código COBOL:
  1. MOVE SPACES TO CONEXION-ADO
  2. STRING "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
  3.            WST-ARCHIVO-MBD(1:WST-TAMANO-VARIABLE)
  4.            ";Mode=ReadWrite;Persist Security Info=False"
  5.            DELIMITED BY SIZE INTO CONEXION-ADO
  6. MOVE CONEXION-ADO TO "ConnectionString" OF ADO-HYDRA-CABECERA
  7. MOVE SPACES TO SQL-CONDICION
  8. STRING "SELECT * FROM cabecera"
  9.            " WHERE d_fecha BETWEEN FORMAT('" WST-FECAX-INICIO "', 'yyyy/mm/dd')"
  10.            " AND FORMAT('" WST-FECAX-FINAL "', 'yyyy/mm/dd')"
  11.            " ORDER BY d_fecha ASC"
  12.            DELIMITED BY SIZE INTO SQL-CONDICION
  13. MOVE SQL-CONDICION TO "CommandText" OF ADO-HYDRA-CABECERA
  14. INVOKE ADO-HYDRA-CABECERA "SETREF-Recordset" USING CONTROL-ADO-3A
  15. IF "RecordCount" OF "Recordset" OF ADO-HYDRA-CABECERA NOT = ZEROS
  16.     MOVE "RecordCount" OF "Recordset" OF ADO-HYDRA-CABECERA TO WST-REGISTROS
  17.     INVOKE "Recordset" OF ADO-HYDRA-CABECERA "MoveFirst"
  18.     PERFORM WITH NO LIMIT
  19.                  IF "EOF" OF "Recordset" OF ADO-HYDRA-CABECERA NOT = POW-FALSE
  20.                      EXIT PERFORM
  21.                  END-IF
  22.                  MOVE "Value" OF "Item"(6) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA TO WST-CAMPO-IMPORTES
  23.  
  24.                  ...........
  25.  
  26.                  MOVE WST-PRECIO-F TO "Value" OF "Item"(34) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA
  27.                  INVOKE "Recordset" OF ADO-HYDRA-CABECERA "Update"
  28.                  INVOKE "Recordset" OF ADO-HYDRA-CABECERA "MoveNext"
  29.     END-PERFORM.

El número de item partenece al número de columna que corresponde en el orden de la consulta empezando desde el 0 que sería la primera.

En SQL Server, se puede poner el nombre del campo entre comillas, así dejas de usar el número de item.

http://www.connectionstrings.com

Aquí puedes mirar los strings de conexión disponibles de todos los motores de base de datos.

Saludos.
Dasije is offline   Responder Con Cita
  #7
Antiguo 4 de mayo de 2016, 10:52
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 17.09.2026 18:23
Posts Posts: 401
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Citación del post de Dasije Ver Mensaje
Working:

Código COBOL:
  1. 01 CONTROL-ADO-3A OBJECT REFERENCE POW-COBJECT.

Procedure:

Código COBOL:
  1. MOVE SPACES TO CONEXION-ADO
  2. STRING "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
  3.            WST-ARCHIVO-MBD(1:WST-TAMANO-VARIABLE)
  4.            ";Mode=ReadWrite;Persist Security Info=False"
  5.            DELIMITED BY SIZE INTO CONEXION-ADO
  6. MOVE CONEXION-ADO TO "ConnectionString" OF ADO-HYDRA-CABECERA
  7. MOVE SPACES TO SQL-CONDICION
  8. STRING "SELECT * FROM cabecera"
  9.            " WHERE d_fecha BETWEEN FORMAT('" WST-FECAX-INICIO "', 'yyyy/mm/dd')"
  10.            " AND FORMAT('" WST-FECAX-FINAL "', 'yyyy/mm/dd')"
  11.            " ORDER BY d_fecha ASC"
  12.            DELIMITED BY SIZE INTO SQL-CONDICION
  13. MOVE SQL-CONDICION TO "CommandText" OF ADO-HYDRA-CABECERA
  14. INVOKE ADO-HYDRA-CABECERA "SETREF-Recordset" USING CONTROL-ADO-3A
  15. IF "RecordCount" OF "Recordset" OF ADO-HYDRA-CABECERA NOT = ZEROS
  16.     MOVE "RecordCount" OF "Recordset" OF ADO-HYDRA-CABECERA TO WST-REGISTROS
  17.     INVOKE "Recordset" OF ADO-HYDRA-CABECERA "MoveFirst"
  18.     PERFORM WITH NO LIMIT
  19.                  IF "EOF" OF "Recordset" OF ADO-HYDRA-CABECERA NOT = POW-FALSE
  20.                      EXIT PERFORM
  21.                  END-IF
  22.                  MOVE "Value" OF "Item"(6) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA TO WST-CAMPO-IMPORTES
  23.  
  24.                  ...........
  25.  
  26.                  MOVE WST-PRECIO-F TO "Value" OF "Item"(34) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA
  27.                  INVOKE "Recordset" OF ADO-HYDRA-CABECERA "Update"
  28.                  INVOKE "Recordset" OF ADO-HYDRA-CABECERA "MoveNext"
  29.     END-PERFORM.

El número de item partenece al número de columna que corresponde en el orden de la consulta empezando desde el 0 que sería la primera.

En SQL Server, se puede poner el nombre del campo entre comillas, así dejas de usar el número de item.

http://www.connectionstrings.com

Aquí puedes mirar los strings de conexión disponibles de todos los motores de base de datos.

Saludos.

Quando tento fazer MOVE XXXX TO "Value" OF "Item"(x) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA (claro, com dados meus)

Da erro

Pode, por favor, disponibilizar um exemplo com update e insert numa BD usando ADO?
Estou a necessitar muito usar esta forma de actualizar (query) uma BD.

Consigo Ler, mas estou com dificuldade em atualizar ou criar novos registos.

Gracias,
Jose
Joseg is offline   Responder Con Cita
  #8
Antiguo 6 de mayo de 2016, 02:45
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

Hola buenas.

En ADO, solo puedes hacer consultas, y después leer, añadir nuevo registro, actualizar y eliminar.

Si has conseguido leer, no debe ser un problema grabar, asegúrate de no tener en propiedades de modos de acceso en la opción que no te permita grabar.

Solo debes comprobar, leer el registro, mover valores, y actualizar:

Añadir un nuevo registro:

Código COBOL:
  1. INVOKE "Recordset" OF ADO-HYDRA-CABECERA "AddNew"

Nota: Debes hacerlo antes de mover los valores

Actualizar datos:

Código COBOL:
  1. INVOKE "Recordset" OF ADO-HYDRA-CABECERA "Update"

Nota: Sí es un nuevo registro, debes ejecutar antes de mover valores el método Addnew.

Saludos.



Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije is offline   Responder Con Cita
  #9
Antiguo 6 de mayo de 2016, 13:53
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 17.09.2026 18:23
Posts Posts: 401
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Gracias
Tenha nas propriedades do objecto para leitura/escrita.

Ja esta funcionando, dá erro apenas quando tento alterar um registo com "key with duplicates" ...ainda não sei qual o motivo.


Eu uso: move MyQuery to "Filter" OF "Recordset" of CmADODataSource1 .
para filtrar um registo, mas a Microsoft recomenda que se use o comando "Find" que é mais rápido (tabelas grandes), mas não estou conseguindo.

Como fazia query dos registos ? Usando "Select..." ou métodos do object CmADODataSource1 ?

Muitas gracias



Citación del post de Dasije Ver Mensaje
Hola buenas.

En ADO, solo puedes hacer consultas, y después leer, añadir nuevo registro, actualizar y eliminar.

Si has conseguido leer, no debe ser un problema grabar, asegúrate de no tener en propiedades de modos de acceso en la opción que no te permita grabar.

Solo debes comprobar, leer el registro, mover valores, y actualizar:

Añadir un nuevo registro:

Código COBOL:
  1. INVOKE "Recordset" OF ADO-HYDRA-CABECERA "AddNew"

Nota: Debes hacerlo antes de mover los valores

Actualizar datos:

Código COBOL:
  1. INVOKE "Recordset" OF ADO-HYDRA-CABECERA "Update"

Nota: Sí es un nuevo registro, debes ejecutar antes de mover valores el método Addnew.

Saludos.
Joseg is offline   Responder Con Cita
  #10
Antiguo 19 de mayo de 2016, 02:29
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79

La clasula SELECT se puede utilizar la instrucción completa como su motor de base de datos indique utilizar, no es estándar, se puede filtrar de muchas maneras, por ejemplo, añadiendo clasula NOT IN ('valor'), NOT LIKE '%pepe', etc ... incluso hacer uniones entre dos o más tablas y seleccionar valores en una de ellas, hay muchos ejemplos.

Saludos.



Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:54.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.