Jump to content


Photo

Adoquery sql server 2000


  • Please log in to reply
2 replies to this topic

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2040 posts
  • LocationSanto Domingo

Posted 12 May 2009 - 10:59 PM



delphi
  1. procedure TFRMpendientes.Timer1Timer(Sender: TObject);
  2.  
  3. begin
  4.   DMmonitorenred.ADOQPendientes.SQL.Clear;
  5.   DMmonitorenred.ADOQPendientes.SQL.Add('select * from activas where alarmnum > ' + quotedstr(inttostr(buscar)) );
  6.   DMmonitorenred.ADOQPendientes.Open;
  7.  
  8. if DMmonitorenred.ADOQPendientesALARMNUM.AsInteger > buscar  then
  9.  
  10.   begin
  11.     DMmonitorenred.ADOQPendientes.last;
  12.   end;
  13.   if (DMmonitorenred.ADOQActivasALARMNUM.Value) < (DMmonitorenred.ADOQPendientesALARMNUM.Value)  then
  14.       begin
  15.         //DMmonitorenred.ADOQActivas.Requery();
  16.         DMmonitorenred.ADOQActivas.SQL.Add('select * from activas where alarmnum > ' + quotedstr(inttostr(contador)) );
  17.         DMmonitorenred.ADOQActivas.Open;
  18.         DMmonitorenred.ADOQActivas.Last;
  19.       end;
  20.  
  21.  
  22. end;



- BUSCAR es una variable de tipo entero. A esta variable le paso el valor del campo llave llamado alarmum en el evento ONSHOW del form
y me sirve de guia para saber si hay algun evento nuevo que haya llegado a la base de datos del servidor.

- Tengo dos Dbgrid , uno es para los eventos nuevos que llegan y el otro tiene todo los eventos que tengan un campo llamado completa con el valor pendiente o en espera
la idea es que si el valor del campo alarmnum en el registro nuevo que llega es mayor que el de la tabla de pendientes, esta se actualice.

Esta parte la hace bien, lo que pasa es que SE MANTIENE ACTUALIZANDO EL QUERY DE LAS PENDIENTES AUNQUE NO HAYA LLEGADO NINGUN REGISTRO NUEVO En EL 1ER QUERY.

aunque solo lo hace a partir de que llegan los primero(s)  registro(s) en el primer query

gracias de antemano

  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 13 May 2009 - 10:25 AM

Hola
La verdad no entiendo bien lo que quieres, pero tal vez asi:


delphi
  1. procedure TFRMpendientes.Timer1Timer(Sender: TObject);
  2.  
  3. begin
  4.   DMmonitorenred.ADOQPendientes.SQL.Clear;
  5.   DMmonitorenred.ADOQPendientes.SQL.Add('select * from activas where alarmnum > ' + quotedstr(inttostr(buscar)) );
  6.   DMmonitorenred.ADOQPendientes.Open;
  7.  
  8.       if DMmonitorenred.ADOQPendientesALARMNUM.AsInteger > buscar  then
  9.         DMmonitorenred.ADOQPendientes.last;
  10.  
  11.     if (DMmonitorenred.ADOQActivasALARMNUM.Value) < (DMmonitorenred.ADOQPendientesALARMNUM.Value)  then
  12.         begin
  13.         DMmonitorenred.ADOQActivas.SQL.Add('select * from activas where alarmnum > ' + quotedstr(inttostr(contador)) );
  14.         DMmonitorenred.ADOQActivas.Open;
  15.         DMmonitorenred.ADOQActivas.Last;
  16.       end;
  17.  
  18. end;


Saludos
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 13 May 2009 - 11:10 AM

Hola

Esta parte la hace bien, lo que pasa es que SE MANTIENE ACTUALIZANDO EL QUERY DE LAS PENDIENTES AUNQUE NO HAYA LLEGADO NINGUN REGISTRO NUEVO En EL 1ER QUERY.


Esto sucede porque no estás validando si hay o no datos en el query



delphi
  1. procedure TFRMpendientes.Timer1Timer(Sender: TObject);
  2. begin
  3.    DMmonitorenred.ADOQPendientes.SQL.Clear;
  4.    DMmonitorenred.ADOQPendientes.SQL.Add('select * from activas where alarmnum > ' + quotedstr(inttostr(buscar)) );
  5.    DMmonitorenred.ADOQPendientes.Open;
  6.    if ADOPendientes.RecordCount > 0 then begin //Nos aseguramos que existan datos en Pendientes.
  7.       if DMmonitorenred.ADOQPendientesALARMNUM.AsInteger > buscar  then begin
  8.          DMmonitorenred.ADOQPendientes.last;
  9.          if (DMmonitorenred.ADOQActivasALARMNUM.Value) < (DMmonitorenred.ADOQPendientesALARMNUM.Value) then begin
  10.             DMmonitorenred.ADOQActivas.Close; //Cerramos ADOQActivas para proceder a realizar la consulta.
  11.             DMmonitorenred.ADOQActivas.SQL.Clear; //Limpiamos la consulta anterior.
  12.             DMmonitorenred.ADOQActivas.SQL.Add('select * from activas where alarmnum > ' + quotedstr(inttostr(contador)) );
  13.             DMmonitorenred.ADOQActivas.Open;
  14.             DMmonitorenred.ADOQActivas.Last;
  15.          end;
  16.       end;
  17.    end;
  18. end;



Salud OS
  • 0




IP.Board spam blocked by CleanTalk.