Ver Mensaje Individual
  #1
Antiguo 28 de julio de 2020, 16:59
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243
Predeterminado PostgreSQL con ADO...
1 Inactivo Inactivo

Hola Amigos:

Tengo una BBDD postgres con una tabla de Actividades. Desde mi sistema tengo que actualizarla, eso ya lo resolví (abajo les paso la rutina). Lo que no logro hacer ahora es limpiar esta tabla antes de actualizar (DELETE FROM).

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  
  5.  01  codigo      pic 9999 value 1.
  6.  01  nombre      pic x(35) value "Prueba 1".
  7.  
  8.  PROCEDURE       DIVISION.
  9.  
  10.  comienzo.
  11.     *> crea los objetos principales
  12.      invoke COM "CREATE-OBJECT" using ADO-CONNECTION-TYPE returning OBJ-CONNECTION.
  13.      invoke COM "CREATE-OBJECT" using ADO-RECORDSET-TYPE  returning OBJ-RECORDSET.
  14.  
  15.      *> define y abre la conexión
  16.      invoke OBJ-CONNECTION "SET-CONNECTIONSTRING" using ADO-CONNECT-STRING returning RETURN-ERROR.
  17.      invoke OBJ-CONNECTION "OPEN" returning RETURN-ERROR.
  18.  
  19.      string 'SELECT * FROM public."Actividades";' low-value delimited by size into ADO-SQL-STRING.
  20.      
  21.      invoke OBJ-RECORDSET "OPEN" using ADO-SQL-STRING OBJ-CONNECTION WLOCK WCURSOR returning RETURN-ERROR.
  22.      invoke OBJ-RECORDSET "GET-RECORDCOUNT" returning RECORDCOUNT.
  23.  
  24.      invoke OBJ-RECORDSET "GET-FIELDS" returning OBJ-FIELDS    *> cargo el objeto fields
  25.      
  26.      invoke OBJ-FIELDS "GET-COUNT" returning OBJ-FIELDS-COUNT  *> cantidad de fields que tiene la tabla
  27.      
  28.      perform varying W-INDEX from 0 by 1 until W-INDEX > (OBJ-FIELDS-COUNT - 1) *> cargo el los objetos field con cada campo de la tabla
  29.         invoke OBJ-FIELDS "GET-ITEM" using W-INDEX returning OBJ-FIELD(W-INDEX + 1)
  30.      end-perform.
  31.  
  32.      invoke OBJ-RECORDSET "ADDNEW".
  33.  
  34.      invoke OBJ-FIELD(1)  "SET-VALUE" using codigo.
  35.      invoke OBJ-FIELD(2)  "SET-VALUE" using nombre.
  36.  
  37.      invoke OBJ-RECORDSET "UPDATE".
  38.      
  39.      invoke OBJ-RECORDSET "Close".
  40.      invoke OBJ-CONNECTION "Close".
  41.      
  42.      invoke pow-self "DisplayMessage" using "Terminó".
  43.      
  44.      exit program.

Si alguien me puede ayudar cómo meter ese "DELETE FROM"

Saludos

Fito...

---------- Post añadido : 11:59 ---------- Post anterior : 14:48 ----------

Hola:

Me contesto solo. jajajaja.

Lo resolvi, eliminando la tabla y creándola de nuevo. Para este caso me queda mejor, así si tengo que cambiar la estructura lo hago directamente desde mi programa.

Código COBOL:
  1.      move spaces                     to cTexto.
  2.      string 'DROP TABLE Actividades '       delimited by size
  3.         into cTexto
  4.      end-string.      
  5.      invoke OBJ-CONNECTION "EXECUTE" using cTexto.
  6.  
  7.      move spaces                     to cTexto.
  8.      string 'CREATE TABLE Actividades ( '           delimited by size
  9.                'actividad integer, '                delimited by size
  10.                'actnombre character varying(35) '   delimited by size
  11.                ')'                                  delimited by size
  12.         into cTexto
  13.      end-string.      
  14.      invoke OBJ-CONNECTION "EXECUTE" using cTexto.

Saludos.

Fito...
Fito is offline   Responder Con Cita