Announcement

Collapse
No announcement yet.

Error de SQL al pasar parámetro vacío V8, posible Bug

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Hola, a mi también me aparece el mismo error, y yo sostengo que sí es error de scriptcase versión 8, el query que se genera está mal formado, en mi caso es:

    1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
    ADOConnection._Execute(SELECT count(*) from ipd_sesiones where pacienteid = 1 and (sesionid = ), false) % line 1085, file: adodb.inc.php
    ADOConnection.Execute(SELECT count(*) from ipd_sesiones where pacienteid = 1 and (sesionid = )) % line 4481, file: form_expedientes_sesiones_apl.php
    form_expedientes_sesiones_apl.nm_select_banco() % line 1314, file: form_expedientes_sesiones_apl.php
    form_expedientes_sesiones_apl.controle() % line 1649, file: index.php

    En este caso, el sesionid es un autoincremental en la base de datos, es llave primaria, pero entonces al crear el enlace de tipo aplicación, le digo que ese campo lo pase vacío, pues la base lo generará, pero al revisar el query que se genera automáticamente por scriptcase, aparece la condicion "sesionid=" sin nada de valor y luego inicia con otra condición "clienteid=1" pero eso es lo que hace fallar el query, está mal formado

    ¿qué procede en este caso?

    gracias

    Comment


    • #17
      También he detectado que en cualquier construcción que se realice de sentencia sql, cuando el valor es cero (0), por ejemplo valor = 0, cuando construye el sql : SELECT * from tabla where gasto = valor, lo deja : SELECT * from tabla where gasto =
      por lo cual da el error. Como le he solventado momentaneamente es que coloco un if para cuando es 0 y el else para cuando no es 0, así:

      if ({valor} == 0)
      {
      $sql = "select * from tabla where gasto = 0"
      .
      .
      .
      }
      else
      {
      $sql = "select * from tabla where gasto = {valor}"
      .
      .
      .

      }

      Es molesto porque debería de colocar el cero, pero para mientras puede servir como solución

      Saludos.

      Comment


      • #18
        Originally posted by Roberto Azrael View Post
        Hola, a mi también me aparece el mismo error, y yo sostengo que sí es error de scriptcase versión 8, el query que se genera está mal formado, en mi caso es:

        1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
        ADOConnection._Execute(SELECT count(*) from ipd_sesiones where pacienteid = 1 and (sesionid = ), false) % line 1085, file: adodb.inc.php
        ADOConnection.Execute(SELECT count(*) from ipd_sesiones where pacienteid = 1 and (sesionid = )) % line 4481, file: form_expedientes_sesiones_apl.php
        form_expedientes_sesiones_apl.nm_select_banco() % line 1314, file: form_expedientes_sesiones_apl.php
        form_expedientes_sesiones_apl.controle() % line 1649, file: index.php

        En este caso, el sesionid es un autoincremental en la base de datos, es llave primaria, pero entonces al crear el enlace de tipo aplicación, le digo que ese campo lo pase vacío, pues la base lo generará, pero al revisar el query que se genera automáticamente por scriptcase, aparece la condicion "sesionid=" sin nada de valor y luego inicia con otra condición "clienteid=1" pero eso es lo que hace fallar el query, está mal formado

        ¿qué procede en este caso?

        gracias
        Hola, creo que en este caso, no deberías pasar en vacío el enlace, puedes seleccionar campo y colocarle el nombre que el hará lo demás y no te dará el error de sql.

        Saludos

        Comment


        • #19
          Yo tengo este error también. Probé lo que dice rogerrod61 pero nada, mas soluciones posibles?
          The key to social engineering is influencing a person to do something that allows the hacker to gain access to information or your network.

          Comment


          • #20
            Originally posted by rogerrod61 View Post
            Hola, creo que en este caso, no deberías pasar en vacío el enlace, puedes seleccionar campo y colocarle el nombre que el hará lo demás y no te dará el error de sql.

            Saludos
            Gracias por contestar, pero aún considero que es un bug de scriptcase, porque en la versión 7 hacía lo mismo y ahí no había problema, y ahí en la versión 7 sí lo pasaba vacío.

            ¿porqué les cuesta tanto trabajo creer que tiene errores? así de simple, la misma aplicación compila y se ejecuta en sc7 y sin problemas, la isma aplicación, sin hacer ningún cambio, y compila, pero falla (la falla que estamos reportando) a la hora de ejecutarse.


            Pero ahora leyendo este caso, la pregunta que quizá puedan contestar y por ahí intentar solucionarlo es... tengo una form de multiples registros, con id autonumerico, pero tambien tengo otros campos, entre ellos, un campo clienteid (este no es llave) y cuando defino en el sql de la forma que clienteid=[global_clienteid] y ejecuta la forma esde el ambiente de sc, me pide el parámetro cliente_id antes de correr y al ejecutarse me presenta los registros de ese cliente que haya definido en el parámetro, y cuando genero un grid de clientes, del que quiero crear el enlace para abrir la forma de varios registros relacionados con ese cliente, el enlace me dice que necesita dos parámetros, el cliente_id, que yo veo al ejecutar aquella forma, pero además me pide el id autonumérico llave de los registros de esa tabla, por eso es que en sc7 lo deje vacío y no había problema, pero ahora en sc8 lo dejo vacio y marca error el sql, se podría solucionar esto si sc no pidiera como parámetro el id que no quiero pasar porque es autonumérico.

            ¿qué se puede hacer?

            para solucionar mientras esto, desde sc8, fue que eliminé el enlace creado en la interface de sc8, y lo cree de manera manual al cargar la forma, en un evento, con la macro: sc_link(Column, Application, Parameters, "Hint", "Target", Height, Width)

            gracias

            Comment


            • #21
              Tienes razón Roberto, si los proyectos funcionan en SC7 y el mismo en SC8 no funciona, creo que deberían ponerle mayor atención el equipo de Bugs. De momento me sigue funcionando el cambio en el código que publique en este hilo, pero encontré otra forma de solucionar cuando se traspasan parámetros en blanco y es que cuando se parámetriza en el enlace hay que colocarle en las propiedades :

              Habilitar botones de navegación en aplicación destino, con eso ya no me dio el error de parámetro en blanco y funciona sin tener que cambiar el código.

              Saludos.

              Comment


              • #22
                Con alguna de las últimas actualizaciones ya se corrigió este error, ya puedo pasar un parámetro vacío y trabaja bien

                Comment

                Working...
                X