PDA

Ver la Versión Completa : [Sintaxis] PostgreSQL con ADO...


Fito
28 de julio de 2020, 16:59
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).


ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.

01 codigo pic 9999 value 1.
01 nombre pic x(35) value "Prueba 1".

PROCEDURE DIVISION.

comienzo.
*> crea los objetos principales
invoke COM "CREATE-OBJECT" using ADO-CONNECTION-TYPE returning OBJ-CONNECTION.
invoke COM "CREATE-OBJECT" using ADO-RECORDSET-TYPE returning OBJ-RECORDSET.

*> define y abre la conexión
invoke OBJ-CONNECTION "SET-CONNECTIONSTRING" using ADO-CONNECT-STRING returning RETURN-ERROR.
invoke OBJ-CONNECTION "OPEN" returning RETURN-ERROR.

string 'SELECT * FROM public."Actividades";' low-value delimited by size into ADO-SQL-STRING.

invoke OBJ-RECORDSET "OPEN" using ADO-SQL-STRING OBJ-CONNECTION WLOCK WCURSOR returning RETURN-ERROR.
invoke OBJ-RECORDSET "GET-RECORDCOUNT" returning RECORDCOUNT.

invoke OBJ-RECORDSET "GET-FIELDS" returning OBJ-FIELDS *> cargo el objeto fields

invoke OBJ-FIELDS "GET-COUNT" returning OBJ-FIELDS-COUNT *> cantidad de fields que tiene la tabla

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
invoke OBJ-FIELDS "GET-ITEM" using W-INDEX returning OBJ-FIELD(W-INDEX + 1)
end-perform.

invoke OBJ-RECORDSET "ADDNEW".

invoke OBJ-FIELD(1) "SET-VALUE" using codigo.
invoke OBJ-FIELD(2) "SET-VALUE" using nombre.

invoke OBJ-RECORDSET "UPDATE".

invoke OBJ-RECORDSET "Close".
invoke OBJ-CONNECTION "Close".

invoke pow-self "DisplayMessage" using "Terminó".

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.


move spaces to cTexto.
string 'DROP TABLE Actividades ' delimited by size
into cTexto
end-string.
invoke OBJ-CONNECTION "EXECUTE" using cTexto.

move spaces to cTexto.
string 'CREATE TABLE Actividades ( ' delimited by size
'actividad integer, ' delimited by size
'actnombre character varying(35) ' delimited by size
')' delimited by size
into cTexto
end-string.
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