Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Componente] Unir 2 Tables con ADO hbetancur PowerCOBOL (ActiveX, v4 - v11) 0 7 de mayo de 2021 02:36
[Sintaxis] PostgreSQL con ADO... Fito PowerCOBOL (ActiveX, v4 - v11) 4 29 de julio de 2020 21:13
[Compilador] Powercobol & ADO Joseg PowerCOBOL (ActiveX, v4 - v11) 11 14 de julio de 2018 16:51
[Sintaxis] PowerCOBOL Microsoft ADO diegodm NetCOBOL 1 17 de agosto de 2017 23:52
[Sintaxis] Conectar con MySQL via ADO dmosca PowerCOBOL (ActiveX, v4 - v11) 7 29 de junio de 2017 16:59

Respuesta
 
Herramientas

  #1
Antiguo 27 de abril de 2022, 18:47
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243
Tableta Microsoft ADO con PowerCobol
3 Inactivo Inactivo

Dos ejemplos de cómo usar Microsoft ADO con PowerCobol

@Breew

Ejemplo 1:
Utiliza el objeto de conexión ADO para establecer una conexion con la BD y utiliza el objeto Recordset para leer los registros de la a BD (.DBF) FoxPro
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01 BD-VARIABLES.
  3.     05 OBJ-CONNECTION OBJECT REFERENCE OLE.
  4.     05 OBJ-RECORDSET  OBJECT REFERENCE OLE.
  5.     05 OBJ-FIELDS     OBJECT REFERENCE OLE.
  6.     05 OBJ-FIELD      OBJECT REFERENCE OLE.
  7.  01 PROGID-CONNECTION       PIC X(8192) VALUE "ADODB.Connection".
  8.  01 PROGID-RECORDSET        PIC X(8192) VALUE "ADODB.Recordset".
  9.  
  10.  01 NAME-PROVIDER           PIC X(8192) VALUE "Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE IV".
  11.  01 DIRECTORIO-DB           PIC X(8192) VALUE "c:\downosva\fujitsu\bd". *> Directorio donde estan las BD .DBF
  12.  01 Connection-TABLE        PIC X(8192) VALUE "Select * from Factura1". *> SET-CONNECTION STRING
  13.  01 Cantidad-RECORDCOUNT    PIC S9(9) COMP-5.
  14.  
  15. * Modos de Apertura de las BD
  16.  01  WLOCK   PIC S9(9) COMP-5 VALUE 1. *> adOpenKeyset
  17.  01  WCURSOR PIC S9(9) COMP-5 VALUE 1. *> adLockReadOnly
  18.  01  WOPTION PIC S9(9) COMP-5 VALUE -1. *> default option
  19.  
  20. *--------------------------------------
  21. * Nombre de los Campos de la Tabla
  22.  01 NAME-FIELD-CLICODIGO     PIC X(8192) VALUE "Clicodigo".
  23.  01 NAME-FIELD-NRFACTURA     PIC X(8192) VALUE "N_Factura".
  24.  
  25. *--------------------------------------
  26. * Variables de Retorno de los campos de la tabla.
  27.  01 WK-VAL1   PIC X(8192).
  28.  01 WK-VAL2   PIC X(8192).
  29. *----------------------------------------
  30.  
  31.  01 IS-EOF       PIC S9(4) COMP-5.
  32.  
  33.  
  34.  
  35.  01 Version-Ole  PIC X(30).
  36.  01 IDX1         PIC S9(9).
  37.  01 Version-ConnectionString pic x(400).
  38.  
  39.  
  40.  PROCEDURE       DIVISION.
  41. * Create ADO Connection object and Connect to DB
  42.         invoke OLE "CREATE-OBJECT"           using PROGID-CONNECTION returning OBJ-CONNECTION.
  43.           invoke OBJ-CONNECTION "SET-Provider" using NAME-PROVIDER.
  44.  
  45.           invoke OBJ-CONNECTION "GET-Version" returning Version-Ole .
  46. *         display "version " , Version-Ole.
  47.           invoke OBJ-CONNECTION "Open"         using DIRECTORIO-DB.
  48.  
  49. * Create ADO Recordset object , String Connection
  50.  
  51.           invoke OLE "CREATE-OBJECT" using PROGID-RECORDSET returning OBJ-RECORDSET.
  52.           invoke OBJ-RECORDSET "Open" using Connection-TABLE OBJ-CONNECTION  WLOCK  WCURSOR  WOPTION.
  53.  
  54. * * Leo la Cantidad de registros Dependiendo los valores de la apertura del RecordSet
  55.     invoke OBJ-RECORDSET "GET-RecordCount" RETURNING Cantidad-RECORDCOUNT.
  56. *   display "Cantidad de Registros " , Cantidad-RECORDCOUNT.
  57.     MOVE Cantidad-RECORDCOUNT TO "CAPTION" OF CMSTATIC3.
  58.           INVOKE POW-SELF "Refresh".
  59.        
  60. *leo Connection String
  61. *         invoke OBJ-CONNECTION "GET-ConnectionString" returning Version-ConnectionString.
  62. *         display "ConnectionString " , Version-ConnectionString.
  63. *      
  64.           MOVE 0 TO IDX1.
  65.          
  66.           MOVE 11 to "MousePointer" OF POW-SELF.
  67.           invoke OBJ-RECORDSET "GET-EOF" returning IS-EOF.
  68.  
  69. *Bucle de lectura de los registros          
  70. *Muestra los registros en ListView solamente 2 campos
  71.           perform with test before until IS-EOF not = 0
  72.  
  73.                   invoke OBJ-RECORDSET "GET-Fields" returning OBJ-FIELDS
  74.                  
  75.                   invoke OBJ-FIELDS "GET-Item" using NAME-FIELD-CLICODIGO  returning OBJ-FIELD
  76.                   invoke OBJ-FIELD  "GET-VALUE" returning WK-VAL1
  77.  
  78.                   invoke OBJ-FIELDS "GET-Item" using NAME-FIELD-NRFACTURA  returning OBJ-FIELD
  79.                   invoke OBJ-FIELD  "GET-VALUE" returning WK-VAL2
  80.  
  81.                   ADD 1 TO IDX1
  82.                     invoke cmlistview3 "Add" USING 1 1
  83.  
  84.  
  85.                   MOVE WK-VAL1 TO  "Text"(1) OF "ListItems"(idx1) OF cmlistview3
  86.                   MOVE WK-VAL2 TO  "Text"(2) OF "ListItems"(idx1) OF cmlistview3
  87.                   INVOKE cmlistview3 "Refresh"
  88.                  
  89.            set OBJ-FIELD  to Null
  90.            set OBJ-FIELDS to Null
  91.            
  92.               invoke OBJ-RECORDSET "MoveNext"
  93.               invoke OBJ-RECORDSET "GET-EOF" returning IS-EOF
  94.              
  95.          end-perform.
  96. * * cierro conexion
  97.      invoke OBJ-RECORDSET "Close".
  98.      set OBJ-RECORDSET to Null.
  99.      invoke OBJ-CONNECTION "Close".
  100.      set OBJ-CONNECTION to Null.        
  101.      MOVE 0 to "MousePointer" OF POW-SELF.

Ejemplo 2:
Utiliza el objeto de conexión ADO para establecer una conexion con la BD y utiliza el objeto Recordset para leer los registros de la a BD (.MDB) Access
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01 BD-VARIABLES.
  3.     05 OBJ-CONNECTION OBJECT REFERENCE OLE.
  4.     05 OBJ-RECORDSET  OBJECT REFERENCE OLE.
  5.     05 OBJ-FIELDS     OBJECT REFERENCE OLE.
  6.     05 OBJ-FIELD      OBJECT REFERENCE OLE.
  7.  01 PROGID-CONNECTION       PIC X(8192) VALUE "ADODB.Connection".
  8.  01 PROGID-RECORDSET        PIC X(8192) VALUE "ADODB.Recordset".
  9.  
  10.  01 NAME-PROVIDER           PIC X(8192) VALUE "Microsoft.Jet.OLEDB.4.0".
  11.  01 NAME-DB                 PIC X(8192) VALUE "c:\downosva\fujitsu\bd\Test.mdb". *> Directorio y nombre de la BD
  12.  01 Connection-TABLE        PIC X(8192) VALUE "Select * from Customers". *> SET-CONNECTION STRING
  13.  01 Cantidad-RECORDCOUNT    PIC S9(9) COMP-5.
  14.  
  15. * Modos de Apertura de las BD
  16.  01  WLOCK   PIC S9(9) COMP-5 VALUE 1. *> adOpenKeyset
  17.  01  WCURSOR PIC S9(9) COMP-5 VALUE 1. *> adLockReadOnly
  18.  01  WOPTION PIC S9(9) COMP-5 VALUE -1. *> default option
  19.  
  20. *--------------------------------------
  21. * Nombre de los Campos de la Tabla
  22.  01 NAME-FIELD-ID          PIC X(8192) VALUE "ID".
  23.  01 NAME-FIELD-Company     PIC X(8192) VALUE "Company".
  24.  
  25. *--------------------------------------
  26. * Variables de Retorno de los campos de la tabla.
  27.  01 WK-VAL1   PIC X(8192).
  28.  01 WK-VAL2   PIC X(8192).
  29. *----------------------------------------
  30.  01 IS-EOF       PIC S9(4) COMP-5.
  31.  
  32.  
  33.  
  34.  01 Version-Ole  PIC X(30).
  35.  01 IDX1         PIC S9(9).
  36.  01 Version-ConnectionString pic x(400).
  37.  
  38.  
  39.  PROCEDURE       DIVISION.
  40. * Create ADO Connection object and Connect to DB
  41.         invoke OLE "CREATE-OBJECT"           using PROGID-CONNECTION returning OBJ-CONNECTION.
  42.           invoke OBJ-CONNECTION "SET-Provider" using NAME-PROVIDER.
  43.  
  44.           invoke OBJ-CONNECTION "GET-Version" returning Version-Ole .
  45. *         display "version " , Version-Ole.
  46.           invoke OBJ-CONNECTION "Open"         using NAME-DB.
  47.  
  48. * Create ADO Recordset object , String Connection
  49.  
  50.           invoke OLE "CREATE-OBJECT" using PROGID-RECORDSET returning OBJ-RECORDSET.
  51.           invoke OBJ-RECORDSET "Open" using Connection-TABLE OBJ-CONNECTION  WLOCK  WCURSOR  WOPTION.
  52.  
  53. * Leo la Cantidad de registros Dependiendo los valores de la apertura del RecordSet
  54.     invoke OBJ-RECORDSET "GET-RecordCount" RETURNING Cantidad-RECORDCOUNT.
  55. *   display "Cantidad de Registros " , Cantidad-RECORDCOUNT.
  56.     MOVE Cantidad-RECORDCOUNT TO "CAPTION" OF CMSTATIC3.
  57.           invoke POW-SELF "Refresh".
  58.          
  59. *leo Connection String
  60. *         invoke OBJ-CONNECTION "GET-ConnectionString" returning Version-ConnectionString.
  61. *         display "ConnectionString " , Version-ConnectionString.
  62. *      
  63.           MOVE 0 TO IDX1.
  64.          
  65.           MOVE 11 to "MousePointer" OF POW-SELF.
  66.           invoke OBJ-RECORDSET "GET-EOF" returning IS-EOF.
  67.  
  68. *Bucle de lectura de los registros          
  69. *Muestra los registros en ListView solamente 2 campos
  70.           perform with test before until IS-EOF not = 0
  71.  
  72.                   invoke OBJ-RECORDSET "GET-Fields" returning OBJ-FIELDS
  73.                  
  74.                   invoke OBJ-FIELDS "GET-Item" using NAME-FIELD-ID       returning OBJ-FIELD
  75.                   invoke OBJ-FIELD  "GET-VALUE" returning WK-VAL1
  76.  
  77.                   invoke OBJ-FIELDS "GET-Item" using NAME-FIELD-Company  returning OBJ-FIELD
  78.                   invoke OBJ-FIELD  "GET-VALUE" returning WK-VAL2
  79.  
  80.                   ADD 1 TO IDX1
  81.                     invoke cmlistview3 "Add" USING 1 1
  82.  
  83.  
  84.                   MOVE WK-VAL1 TO  "Text"(1) OF "ListItems"(idx1) OF cmlistview3
  85.                   MOVE WK-VAL2 TO  "Text"(2) OF "ListItems"(idx1) OF cmlistview3
  86.                   INVOKE cmlistview3 "Refresh"
  87.                  
  88.            set OBJ-FIELD  to Null
  89.            set OBJ-FIELDS to Null
  90.            
  91.               invoke OBJ-RECORDSET "MoveNext"
  92.               invoke OBJ-RECORDSET "GET-EOF" returning IS-EOF
  93.              
  94.          end-perform.
  95. * cierro conexion
  96.      invoke OBJ-RECORDSET "Close".
  97.      set OBJ-RECORDSET to Null.
  98.      invoke OBJ-CONNECTION "Close".
  99.      set OBJ-CONNECTION to Null.        
  100.      MOVE 0 to "MousePointer" OF POW-SELF.
  101. *    
Dejo el link con la explicacion de ActiveX Data Objects
ActiveX Data Objects - Wikipedia, la enciclopedia libre

Saludos ...
fastpho 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 16:21.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.