Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Query que deja de recibir datos despues de un tiempo (https://www.clubdelphi.com/foros/showthread.php?t=91715)

balger 06-04-2017 12:44:20

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.

Casimiro Notevi 06-04-2017 13:44:09

Hombre, explica un poquito más, que no tenemos una bola de cristal ;)
¿Y el código dónde está?

balger 06-04-2017 14:18:34

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.

movorack 06-04-2017 14:32:56

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]

Neftali [Germán.Estévez] 06-04-2017 16:08:58

¿Y da algún error?
¿O simplemente llega vacía?

balger 06-04-2017 16:31:48

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

movorack 06-04-2017 16:47:54

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

balger 06-04-2017 17:07:15

Si eso hago, fíjate el proc NewInfo, pone en un TMemo todas las acciones que se van realizando.

mamcx 06-04-2017 19:29:32

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:


Código Delphi [-]

DB:
  QueryLlamada(Params):TDataSet
  QueryCliente(Params):TDataSet
  UpdateLlamada(Params):Result

GUI:
  Forma1 ->
     Accion1 - > QueryLlamada(...)
     Accion2 - > QueryCliente(...)     
     Accion3 - > UpdateLlamada(...)

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

AgustinOrtu 06-04-2017 22:48:31

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.

balger 07-04-2017 03:48:09

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:50:24.

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