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:
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.
Código COBOL:
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...