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

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

    En la versión 7 de scriptcase funcionaba perfecto llamar a un form como apicación desde un grid pasando vacío el parámetro de algún campo en especial de las llaves primarias, al pasar el proyecto a la V8 da error cuando intenta entrar en el form ya que el parámetro lo construye en el SQL con el nombre del campo el signo igual y nada posteriormente. Adicionalmente en la sentencia SQL que construye duplica las condiciones

    Como ejemplo una grid de clientes que al enlazarlo con un form muestra los movimientos de dicho cliente y ahí se podía actualizar, ahora en la V8 da error al entrar en el form por pasar vacío el campo de identificación del movimiento.

    Ya no me es posible regresar a la V7 porque ya realicé instalaciones de proyectos en la V8.

    Gracias

  • #2
    En todo caso seria un bug de v7. Si tienes una condicion en tu consulta,que comportamiento quieres si no le das valor?yo lo veo normal asi
    /Giuseppe

    Professional Scriptcase Services
    Some Customers opinions

    Comment


    • #3
      Originally posted by Giu View Post
      En todo caso seria un bug de v7. Si tienes una condicion en tu consulta,que comportamiento quieres si no le das valor?yo lo veo normal asi
      Puede ser como tu dices, pero la funcionalidad en V7 tiene mucha utilidad, de hecho más de la mitad de los formularios que desarrollo tienen dicha funcionalidad. Coloco imagen del funcionamiento en V7 y el error que da en V8, ya sea convirtiendo desde la V7 o desarrollándolo directamente en V8. Así que todos los proyectos que he importado están dando el mismo error, por ello considero que es un bug de la v8, que debe estar colocando el campo de clave aunque se le indique vacío en el parámetro que envía el Grid, según he podido observar y además se ve que duplica la condición.

      Como ya lo hacía en la V7 y he intentado hacerlo de otras formas antes de solicitar ayuda, quizá habrá forma de hacer lo mismo.

      agradeciendo cualquier ayuda,
      saludos,

      Roger
      Attached Files

      Comment


      • #4
        Como te comento en el hilo de bugs no considero que esto sea un bug. Si tu específicas a propósito un where en tu aplicación, es para que lo use, no para que lo ignore. En todo caso, antes si era un bug, y ahora esta arreglado.

        Lo normal, es controlar este comportamiento por programación, y hacerlo al revés, si te llega el parámetro, aplicar un where en tu cláusula usando macros.
        /Giuseppe

        Professional Scriptcase Services
        Some Customers opinions

        Comment


        • #5
          Si vi tu respuesta en el hilo de bug, en el cual considero que si hay un error de construcción de la sentencia sql en la V8, porque duplica la condición where. de todas formas creo que los desarrolladores de SC evaluarán si es una condición de error o así lo han dejado.

          Con lo que me comentas sobre manejarlo con programación, el problema es que si envía desde el Grid el parámetro del autonimérico, no se podrá hacer ninguna otra consulta del lado del Form, ya que sería de colocar todos los movimientos en el grís y en el enlace con la aplicación form, modificar un solo registro a la vez puesto que el autonumérico es uno.

          Lo que necesito es en el Grid tener en el caso del ejemplo los clientes y al enlazar con el form, me presente todos los movimientos de dicho cliente y así en otros casos de la misma forma tener un Grid de agrupación y en el Form el detalle correspondiente, pero no uno por uno.

          Te agradecería si te fuese posible explicarme como tu dices por programación, como te expongo al llamar el Form, solo se traería un registro y no todos los del detalle, pero no se si una macro como me comentas prodía hacer eso desde el enlace del Grid o de cualquier otra forma, quizá con redir y parámetros, pero será salir del esquema que propone SC.

          Gracias por tu atención y correspondencia

          Comment


          • #6
            Al no obtener ninguna respuesta positiva y como tengo varios proyectos que necesito y que en V7 funcionaban perfecto y en V8 dan error, opté por buscar alguna alternativa para hacerlo funcionar. Mientras decide SC si es Bug o es "mejora", ya que a problemas desesperados, soluciones desesperadas, si alguien tiene este inconveniente realizar lo siguiente :

            cuando se presente el error que envía el sql del form, ubicar la linea del programa _apl.php y en algunas lineas arriba encontrarán la variable $sc_where Así:

            if ((isset($this->NM_ajax_opcao) && 'backup_line' == $this->NM_ajax_opcao) || (isset($this->NM_btn_navega) && 'N' == $this->NM_btn_navega))
            {
            if ('' == $sc_where)
            {
            $sc_where = " where (";
            }
            else
            {
            $sc_where .= " and (";
            }
            $sc_where .= "customer = " . $this->customer_;
            $sc_where .= " and ";
            $sc_where .= "id_produccion = " . $this->id_produccion_;
            $sc_where .= ")";
            }


            En mi caso solamente comentarie el and y el campo que se refiere a la clave primaria

            //$sc_where .= " and ";
            //$sc_where .= "id_produccion = " . $this->id_produccion_;

            Ya que como se puede observar, está duplicando la condición del where, indistintamente sea Bug o no, si es error en la construcción del sql que me imagino tendrán que corregir, pero le dejé la duplicación intacta, como lo expongo solo le comento el campo correspondiente a la llave primaria. Pueden comprobar la duplicación en el modo de debug y verán el where duplicado en sus aplicaciones, ya que en todas las aplicaciones lo está generando de dicha forma.

            Lo he probado y funciona perfecto también actualiza adecuadamente como lo hacía en la V7, el inconveniente es que cada vez que se genere el form habrá que modificarlo nuevamente.

            Bueno, queda en suspenso como semi solved, hasta obtener una respuesta técnica.

            Gracias por su ayuda e interés,
            saludos,

            Roger

            Comment


            • #7
              Gracias por compartirlo Roger, efectivamente no es un workaround adecuado ya que requiere de modificación por cada generación, pero al menos soluciona tu problema.

              Intentaré retomar este hilo luego, voy bastante liado estos días, y darte una segunda opción a ver si te funciona.

              Saludos.
              /Giuseppe

              Professional Scriptcase Services
              Some Customers opinions

              Comment


              • #8
                Gracia Gio por estar pendiente, cualquier ayuda será muy agradecida. Envié un Ticket al soporte trial, con una actualización de sc8 nueva que baje en otra máquina a ver si obtengo alguna respuesta.

                Saludos,

                Roger

                Comment


                • #9
                  Tengo un problema muy similar al tuyo, en mi caso tengo una tabla simple, en MySql, sólo un id auto numérico y dos campos de texto. Hago que scriptcase genere las aplicaciones por lote de mi tabla y automáticamente me genera el grid y el form para actualizar mi tabla y los enlaza por aplicación automáticamente también. El problema aparece cuando entro al grid y clickeo el botón de nuevo registro, en ese momento el SC manda el error de SQL que posteste. Incorrect syntaxis near ')'

                  Yo considero que si es un bug ya que como ven no he tocado ni una sola opción del SC y todo es auto generado.

                  Comment


                  • #10
                    Originally posted by fcarmonah View Post
                    Tengo un problema muy similar al tuyo, en mi caso tengo una tabla simple, en MySql, sólo un id auto numérico y dos campos de texto. Hago que scriptcase genere las aplicaciones por lote de mi tabla y automáticamente me genera el grid y el form para actualizar mi tabla y los enlaza por aplicación automáticamente también. El problema aparece cuando entro al grid y clickeo el botón de nuevo registro, en ese momento el SC manda el error de SQL que posteste. Incorrect syntaxis near ')'

                    Yo considero que si es un bug ya que como ven no he tocado ni una sola opción del SC y todo es auto generado.
                    Puedes compartir el SQL de tu form?
                    /Giuseppe

                    Professional Scriptcase Services
                    Some Customers opinions

                    Comment


                    • #11
                      Originally posted by Giu View Post
                      Puedes compartir el SQL de tu form?
                      A cual te refieres? Lo único que obtengo de Scriptcase es lo siguiente:

                      error1.jpg

                      Comment


                      • #12
                        Pero si le das a View SQL te mostrará el SQL generado.
                        /Giuseppe

                        Professional Scriptcase Services
                        Some Customers opinions

                        Comment


                        • #13
                          no, de hecho no es un hipervínculo, solo un texto subrayado en negro y no me permite abrir ninguna ventana con el sql como normalmente debería ser.

                          Comment


                          • #14
                            Originally posted by fcarmonah View Post
                            no, de hecho no es un hipervínculo, solo un texto subrayado en negro y no me permite abrir ninguna ventana con el sql como normalmente debería ser.
                            Si, eso pasa que no te deja ver los SQl aunque ahí tiene un vínculo para tal propósito. Puedes activar en Aplicaciones opción debug para que te muestre las sentencias SQL

                            Comment


                            • #15
                              aqui te dejo el codigo que me arroja el modo debug.

                              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 lugares where (lugar_id = ), false) % line 1085, file: adodb.inc.php
                              ADOConnection.Execute(SELECT count(*) from lugares where (lugar_id = )) % line 3193, file: form_lugares_apl.php
                              form_lugares_apl.nm_select_banco() % line 1149, file: form_lugares_apl.php
                              form_lugares_apl.controle() % line 1514, file: index.php

                              Comment

                              Working...
                              X