Working:
Código COBOL:
01 CONTROL-ADO-3A OBJECT REFERENCE POW-COBJECT.
Procedure:
Código COBOL:
MOVE SPACES TO CONEXION-ADO
STRING "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
WST-ARCHIVO-MBD(1:WST-TAMANO-VARIABLE)
";Mode=ReadWrite;Persist Security Info=False"
DELIMITED BY SIZE INTO CONEXION-ADO
MOVE CONEXION-ADO TO "ConnectionString" OF ADO-HYDRA-CABECERA
MOVE SPACES TO SQL-CONDICION
STRING "SELECT * FROM cabecera"
" WHERE d_fecha BETWEEN FORMAT('" WST-FECAX-INICIO "', 'yyyy/mm/dd')"
" AND FORMAT('" WST-FECAX-FINAL "', 'yyyy/mm/dd')"
" ORDER BY d_fecha ASC"
DELIMITED BY SIZE INTO SQL-CONDICION
MOVE SQL-CONDICION TO "CommandText" OF ADO-HYDRA-CABECERA
INVOKE ADO-HYDRA-CABECERA "SETREF-Recordset" USING CONTROL-ADO-3A
IF "RecordCount" OF "Recordset" OF ADO-HYDRA-CABECERA NOT = ZEROS
MOVE "RecordCount" OF "Recordset" OF ADO-HYDRA-CABECERA TO WST-REGISTROS
INVOKE "Recordset" OF ADO-HYDRA-CABECERA "MoveFirst"
PERFORM WITH NO LIMIT
IF "EOF" OF "Recordset" OF ADO-HYDRA-CABECERA NOT = POW-FALSE
EXIT PERFORM
END-IF
MOVE "Value" OF "Item"(6) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA TO WST-CAMPO-IMPORTES
...........
MOVE WST-PRECIO-F TO "Value" OF "Item"(34) OF "Fields" OF "Recordset" OF ADO-HYDRA-CABECERA
INVOKE "Recordset" OF ADO-HYDRA-CABECERA "Update"
INVOKE "Recordset" OF ADO-HYDRA-CABECERA "MoveNext"
END-PERFORM.
El número de item partenece al número de columna que corresponde en el orden de la consulta empezando desde el 0 que sería la primera.
En SQL Server, se puede poner el nombre del campo entre comillas, así dejas de usar el número de item.
http://www.connectionstrings.com
Aquí puedes mirar los strings de conexión disponibles de todos los motores de base de datos.
Saludos.