Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] PostgreSQL con ADO... (https://www.cobolforo.es/showthread.php?t=1197)

Fito 28 de julio de 2020 16:59

PostgreSQL con ADO...
 
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...

Hrmcobol 28 de julio de 2020 17:20

JAJAJAJAJ El viejo truco eliminar y crear !!!!

Kuk 28 de julio de 2020 22:45

@Fito, has probado sin la palabra FROM?

Nitzer 29 de julio de 2020 10:49

Hola, para eso hay una opción de SQL, que es TRUNCATE, eso elimina los datos pero no la estructura de la tabla :)

Me encantaría tener tiempo para que veáis como trabajo con SQL.

Fito 29 de julio de 2020 21:13

Hola Andrés:

y a nosotros nos encantaría verlo...

Saludos.

Fito


La franja horaria es GMT +2. Ahora son las 16:19.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.