Ir al contenido


Foto

[RESUELTO] Consulta sin resultados


  • Por favor identifícate para responder
10 respuestas en este tema

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 07 julio 2009 - 10:27

Hola a todos

Estoy usando Zeos y Firebird

Tengo esta consulta la cual obtiene los datos de una base de datos en un servidor conectado en red local


delphi
  1.   DMmonitorenred.ZQCentral.Close;
  2.   DMmonitorenred.ZQCentral.sql.Clear;
  3.   DMmonitorenred.ZQCentral.SQL.add('select first 1  distinct ENTRADADATOS, buffer  from central') ;
  4.   DMmonitorenred.ZQCentral.SQL.Add('where entradadatos >  :bus ');
  5.   DMmonitorenred.ZQcentral.SQL.Add('order by entradadatos desc');
  6.   DMmonitorenred.ZQCentral.open;
  7.   DMmonitorenred.ZQcentral.ParamByName('bus').AsInteger :=buscentral;
  8.   showmessage('este es el contador que pongo en el onshow valor = '+ (inttostr(buscentral)));
  9.   showmessage('valor del campo con la nueva consulta deberia  variar=' +      (DMmonitorenred.ZQcentralENTRADADATOS.Asstring));




y en onshow del formulario inicializo el valor del campo



delphi
  1. procedure TFRMpendientes.FormShow(Sender: TObject);
  2. begin
  3.   DMmonitorenred.ZQCentral.Open;
  4.   buscentral:=DMmonitorenred.ZQCentralentradadatos.AsInteger;
  5.   showmessage(inttostr(buscentral));
  6.  
  7.   end;




En el servidor van llegando datos y cuando llega uno nuevo, la consulta no me devuelve ningun valor en el campo
[shadow=red,left]entradadatos[/shadow]

Hice la prueba con IBexpert y la misma consulta y me funciona bien, alguna idea?








  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 07 julio 2009 - 10:43

Hola

No se pero presiento que la base de datos deberí­a de refrescarse, si tu base de datos permanece abierta durante todo el programa, dudo mucho que se muestren los valores que llegan, yo uso los componentes IBX y tuve el mismo problema además de un consumo exagerado de tiempo al grabar información a la base de datos, puedo decirte que esto es muy similar a lo que tu estas haciendo, cuando recibo una cadena disparo el proceso automatico para el procesamiento de datos.



delphi
  1. procedure TLector.ApdComPort1TriggerData(CP: TObject; TriggerHandle: Word);
  2. begin
  3.   if TriggerHandle = CRTrig then begin
  4.     DataModule1.DataBase1.Open;
  5.     DataModule1.Llamadas.Open;
  6.     ProcesaInformacion;
  7.     DataModule1.Llamadas.Close;
  8.     DataModule1.IBTransaction2.Commit;
  9.     DataModule1.DataBase1.Close;
  10.   end;
  11. end;



Salud OS
  • 0

#3 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 07 julio 2009 - 11:46

Gracias Egostar por tu respuesta.

Primero me resolviste el problema del tiempo de grabacion, al  abrir  y luego cerrar la tabla en ejecucion el tiempo para grabar los datos es rapidisimo.

Estoy usando APDdatapacket y que hice fue esto:



delphi
  1. if ApdDataPacket1.EndString =#20 then
  2. begin
  3.   Dmmonitoreo.ZTcentral.open;
  4.   //proceso los datos y luego de hacer el insert y el post en la tablas
  5.   Dmmonitoreo.ZTcentral.CommitUpdates;
  6.   Dmmonitoreo.ZTcentral.Close;
  7.  
  8. end; 



hasta ahi todo bien, se guarda bien en la base de datos , pero en el programa que ejecuto en la red los datos no me cambian todavia.

Pero gracias por la primera porque no sabia porque tardaba tanto en grabar los datos, ya que con ado y sql server 2000 me funciona bien.



  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 07 julio 2009 - 12:04

Hola

Entiendo que tienes dos programas uno que graba la información y otro que muestra la información, si me equivoco por favor actualizanos.

Ya resolvimos (de rebote :D :D :D) el asunto de tiempo de procesamiento, para el asunto del refresh de los datos yo creo que hay un asunto de lógica, para lo cual es necesario mas información de lo que estas haciendo.

Tu programa (en red) ¿está permanentemente abierto o lo ejecutas para ver los datos de la base?

Salud OS
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 07 julio 2009 - 06:46

Bueno,

Este programa ya no tiene el problema, esta grabando en la base de acuerdo a los datos que llegan, el problema mas bien está en la aplicacion que monitorea por la red lo que llega a  la base de datos, creo que hay que ver en ese lo que estas haciendo.

Salud OS
  • 0

#6 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 07 julio 2009 - 07:02

Gracias egostar por tu respuesta

Lo unico que estoy haciendo por ahora es lo que ves en el inicio de este tema.

ese es todo el programa por ahora, ya que lo que mi interes es establecer el monitoreo en red
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 07 julio 2009 - 08:32

Vamos a aislar el problema, comencemos por obtener toda la información de la base de esta forma:



delphi
  1.   DMmonitorenred.ZQCentral.Close;
  2.   DMmonitorenred.ZQCentral.sql.Clear;
  3.   DMmonitorenred.ZQCentral.SQL.add('select ENTRADADATOS, buffer from central') ;
  4.   DMmonitorenred.ZQCentral.open;
  5.   DMmonitorenred.ZQCentral.last;



Si asi no ves los datos entonces buscamos por otro lado, si ves los ultimos datos que entraron, entonces el problema es tu sentencia SQL.

Salud OS
  • 0

#8 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 07 julio 2009 - 09:25

hola de nuevo
Egostar el dato sale al inicio pero el problema es que no cambia el valor.  Debe haber algun update que hacer en el
programa del servidor para que esos cambios se reflejen.


Creo que te dije que lo que hago es

Dmmonitoreo.ZTcentral.CommitUpdates

 

porque no encontre commit solo, es lo mismo a qui hay un error. 

Por otro lado si puedes revisar el programa donde grabo los datos, para ver si el commit lo hago en el lugar correcto

gracias amigo  y espero que duermas bien, porque ya esta tarde para estar pensando



  • 0

#9 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 08 julio 2009 - 09:13

Hola A todos

El problema era que en  Zconnection  tenia el TransactIsolationlevel en  ITNONE y gracias a Eduarcol  que me explico que tenia que estar en TIireadcommitted.

Gracias Egostar y disculpa haberte puesto a pensar tanto, y ademas gracias por resolverme de rebote el primer problema.

No hay mal que por bien no venga

Gracias Eduarcol de nuevo, por tu ayuda
(y)


  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 08 julio 2009 - 10:35

Vaya que bien

Podemos concluir que al final el problema si era de lógica, como casi todo :D :D :D (y)

Salud OS


  • 0

#11 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 08 julio 2009 - 10:40

Vaya que bien

Podemos concluir que al final el problema si era de lógica, como casi todo :D :D :D (y)

Salud OS


hay que partir de una premisa, si el sistema no funciona el programador hizo algo mal, no vale hecharle la culpa ni al pc ni al lenguaje.

Basicamente lo que sucedia era que el nivel de aislamiento no tomaba en cuenta las transacciones en commit, habia que cerrar y abrir la conexion para que las viera.
  • 0




IP.Board spam blocked by CleanTalk.