Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Error sintaxis ADODB Mariadb variables host (https://www.cobolforo.es/showthread.php?t=689)

dmosca 21 de julio de 2017 23:24

Error sintaxis ADODB Mariadb variables host
 
Estimados
Estoy trabajando con powercobol v9

tengo error de sintaxis al transferir desde un "select...into..." información a variables de trabajo.

al ejecutar da error de sintaxis,

este es el codigo
Código COBOL:
  1.      invoke OBJ-CONNECTION "Open" using NAME-DB.
  2.      invoke COM "CREATE-OBJECT" using PROGID-RECORDSET
  3.                                 returning OBJ-RECORDSET.
  4.      STRING "SELECT Orden, Campo1, Campo2, Campo3 "
  5.             "INTO :WORDEN, :WCAMPO1, :WCAMP2, :WCAMPO3 "            
  6.             "FROM ejemplo WHERE Campo1 = 'manzana' "
  7.             "ORDER BY Campo1 ASC LIMIT 1;"
  8.             LOW-VALUE DELIMITED BY SIZE INTO ADO-OPEN-STRING.
  9.     invoke OBJ-RECORDSET "open" using ADO-OPEN-STRING  *> <======                                                                                      
  10.                                       OBJ-CONNECTION
  11.                                        WK-0
  12.                                        WK-1
  13.                                        WK-0.
  14.      invoke OBJ-RECORDSET "GET-EOF" returning IS-EOF.
da error en la linea resaltada.
si elimino la linea "INTO :WORDEN, :WCAMPO1, :WCAMP2, :WCAMPO3 " funciona ok.

Josber 22 de julio de 2017 21:45

Pues aparte de que te sobra un asterisco en "invoke OBJ-RECORDSET "open" using ADO-OP"EN-STRING", lo veo bien, aunque, y no sé si será el caso, yo no monto la instrucción en ese orden, yo lo hago:
Código:

SELECT campos FROM tabla
WHERE condiciones LIMIT n
INTO :campos
ORDER BY campo_orden [ASC]/[DES]

Sé que en algunas cosas MariaDB, es muy puñetero y quizás el orden de la instrucción afecte en algo

Un saludo y suerte

dmosca 22 de julio de 2017 23:53

variables
 
Josber

estarán mal definidas las variables?
Código COBOL:
  1.  01 WEJEMPLO.
  2.     02 WORDEN   PIC S999.
  3.     02 WCAMPO1  PIC X(30).
  4.     02 WCAMPO2  PIC S99999.
  5.     02 WCAMPO3  PIC X.

Josber 23 de julio de 2017 20:14

En la WORKING, has definido WCAMPO2, y en el STRING, estás usando WCAMP2, ¿es así o es un fallo al postearlo aquí en el foro?, por lo demás, están bien definidas en la WK, para definir las alfanuméricas, no tienen nada en especial y las numéricas, han de ser con signo siempre y lo has puesto correctamente.

Un saludo.-

dmosca 24 de julio de 2017 03:46

variables
 
1 Archivos Adjunto(s)
Gracias x la respuesta

creo que el problema está en la definición de las variables, modifique el select y sigue dando error en la variable de trabajo:

adjunto imagen con el codigo

error
B]You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':WORDEN Limit 1' at line


estoy empezando con sql y no por donde seguir buscando...

saludos

Josber 24 de julio de 2017 12:22

dmosca, Tienes mal montado el STRING, la sintáxis correcta sería:

Código COBOL:
  1. STRING "SELECT ORDEN, CAMPO1, CAMPO2, CAMPO3 FROM EJEMPLO WHERE ORDEN LIKE '%"
  2.            WORDEN
  3.            "%' LIMIT 1" DELIMITED BY SIZE INTO NAME-DB
  4. END-STRING".

y si ya quieres rizar el rizo y que sea más exacta la instrucción, puedes poner:

Código COBOL:
  1. STRING "SELECT ORDEN, CAMPO1, CAMPO2, CAMPO3 FROM EJEMPLO WHERE ORDEN LIKE CONCAT('%',TRIM("
  2.             WORDEN
  3.             "),'%') LIMIT 1'" DELIMITED BY SIZE INTO NAME-DB
  4. END-STRING.

Referenciar la variable con 2 puntos delante, (:WORDEN), sólo tienes que hacerlo cuando es una consulta directa y has de pasarle una variable al gestor de Sql, cuando lo haces con un STRING, no tienes que poner los dos puntos.

A ver si tienes suerte, y si sigue dando problemas dilo a ver que por donde podemos atacar.

Un saludo.-

dmosca 24 de julio de 2017 13:52

variables
 
Hola Josber

es una de los tantos intentos que he echo, pero sigo sin poder pasar la info al campo en la working...

si la variable no está definida, el mensaje de error es que no esta la variable definida.

cuando defino la variable en la working y hago referencia a ":variable" me da error de sintaxis

:buzo:

Josber 24 de julio de 2017 16:28

No he utilizado nunca ADODB, siempre Sql embebido, y ahí, cuando defines la variables en la WK, has de definirlas de esta manera:

Código COBOL:
  1. WORKING-STORAGE SECTION.
  2.             EXEC SQL
  3.                      BEGIN DECLARE SECTION
  4.             END-EXEC.
  5. 01  WCAMPO1                      PIC X(50)   IS GLOBAL.
  6. 01  WCAMPO2                      PIC S9(5)V999.
  7.             EXEC SQL
  8.                      END DECLARE SECTION
  9.             END-EXEC.

No sé si con ADODB hay que declarar las variables así.

Un saludo.-

dmosca 24 de julio de 2017 16:36

variables
 
Josber

hice esa prueba, pero sigue con el error

gracias x tu tiempo

Josber 24 de julio de 2017 17:45

Cita:

Citación del post de dmosca (Mensaje 3303)
Josber

hice esa prueba, pero sigue con el error

gracias x tu tiempo

No hay de qué, estamos para ayudarnos, aunque no he usado ADODB, ¿puedes pasarme el proyecto y le doy un vistazo a ver que puede pasar?

Un saludo.-


La franja horaria es GMT +2. Ahora son las 17:57.

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