Query que deja de recibir datos despues de un tiempo
Hola a todos.
Utilizando delphi berlin y firedac, se me presenta lo sig. Tengo un tfdquery con parametros que se inicializan por unica vez. El qry se ejecuta por evento de la db o por tiempo. Despues de un rato de funcionar bien, deja de traer datos. Necesito ayuda. Gracias. |
Hombre, explica un poquito más, que no tenemos una bola de cristal ;)
¿Y el código dónde está? |
Perdon por no aclarar
El tema no es el código porque se ejecuta como debe, el tema simplemente se que después de un rato al ejecutar qry.open no recibo datos, cuando debería recibirlos. A pesar de no modificar dada en el qry,Cnsultando a qry.sql y a sus parámetros, todo esta como debería. El qry es actualizable y esta operación se realiza bien. (cuando hay datos) No soy un experto en Delphi. Y mi inquietud pasa por si no abra algún parámetro en algún lado que pueda generar esto. |
Hola!,
¿cual es la consulta que haces? y ¿cual es el código que la abre?. [MODO:BOLADECRISTAL] Si tu consulta usa parámetros y estos se están alimentando con variables, puede que estés modificando una o varias variables en algún otro procedimiento. [/MODO:BOLADECRISTAL] |
¿Y da algún error?
¿O simplemente llega vacía? |
1 Archivos Adjunto(s)
GetData no da ningún error, simplemente no trae datos, cuando debería. Si reinicio todo vuelve a la normalidad
Adjunto unit Gracia de antemano por su tiempo |
Ok!, al parecer no cambias los valores de los parámetros después del create. Verifica en depuración que esté ingresando a GetData cuando lo requieres y que nada ha cambiado en la consulta al ejecutarse.
Por si necesitas información de como realizar la depuración: Delphi Debugging For Dummies |
Si eso hago, fíjate el proc NewInfo, pone en un TMemo todas las acciones que se van realizando.
|
Le pegue una mirada al codigo y es claro como no encuentras el problema.
Esta muy desorganizado y depende demasiado de llevar bien "la cuenta" de que se hace primero y que segundo. Es lo que se llama codigo espagueti. Deja separado el acceso a los datos, no dupliques la funcionalidad y no uses el mismo objeto para actividades diferentes. Estructura el código maso asi:
La idea es que deberias poder formar un "árbol" del flujo de la aplicación sin que (en lo posible) tengas interdependencias entre los objetos. Por ejemplo "GetData" esta desparramado en varias partes y toca el mismo objeto. Eso es LO MISMO que tener una variable global. Que por regla general es MALA IDEA. Ten los objetos encapsulados para cada gran actividad, que garanticen que no es posible (accidental o por pereza) acceder a ellos "a las espaldas de su verdadero dueño". Estudia sobre los principios de SOLID: https://en.wikipedia.org/wiki/SOLID_...riented_design |
Agregando a lo que comentan los compañeros, te recomiendo que comiences un nuevo proyecto pequeño en el que reconstruyas la situacion, paso a paso vas agregando lo que necesitas hasta que te topas con el error; hacerlo te va a ayudar a encontrar y entender la causa del problema, porque leer y entender codigo (y mas aun si esta mal organizado) es mas dificil que escribir codigo.
|
Gracias a todos por los comentarios y tips.
Entiendo cuando hablan de organizar. Es cierto esta todo tirado ahi. y tambien cortar y pegar. La idea era sacarlo rapido que funcione y luego organizarlo en un datamodule, ya que es algo simple, y mi experiencia con delphi es limitada. Y como quiero incursionar mas profundo. Me tomare un tiempo para hacerlo desde cero. Gracias nuevamente. |
La franja horaria es GMT +2. Ahora son las 06:54:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi