Jump to content


Photo

Desarrollo aplicacion cliente o usuario


  • Please log in to reply
2 replies to this topic

#1 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2040 posts
  • LocationSanto Domingo

Posted 18 June 2009 - 03:31 PM

Tengo un programa que recibe datos de manera continua desde un puerto serial y estoy creando la plataforma del usuario. He puesto dos adoquery, datasource y  un adoconnection. He puesto un ttimer y en el evento ontimer


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.   if DMmonitorenred.ADOQPendientes.RecordCount > 0 then
  8. begin
  9.   if DMmonitorenred.ADOQPendientesALARMNUM.AsInteger > buscar  then
  10.     begin
  11.       DMmonitorenred.ADOQPendientes.last;
  12.       contador:= DMmonitorenred.ADOQPendientesALARMNUM.value;
  13.     end;
  14.       if contador > DMmonitorenred.ADOQActivasALARMNUM.value then
  15.       if DMmonitorenred.ADOQActivasEVENTO.AsString ='UB*' then
  16.         showmessage('bypass');
  17.         DMmonitorenred.ADOQActivas.Close;
  18.         DMmonitorenred.ADOQActivas.SQL.Clear;
  19.         DMmonitorenred.ADOQActivas.SQL.add('select * from  Activas  where activas.alarmnum > ' +    quotedstr(inttostr(buscar)) );
  20.         DMmonitorenred.ADOQActivas.Open;
  21.         DMmonitorenred.ADOQActivas.Last;
  22.       end;
  23.     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 van a ser procesados, la idea es que si el valor del campo alarmnum en el registro nuevo que llega  desde el servidor es mayor que el del 1er query, este se actualice.

-Esta parte la hace  casi totalmente bien, lo que pasa es que se mantiene ACTUALIZANDO el otro QUERY aunque no haya llegado ningun registro nuevo en el 1er query.

-Esto es una idea que tengo para manejar este proyecto, pero quisiera me dijeran si entienden que hay una mejor forma.

-Es simplemente darle seguimiento a los registros nuevos que llegan a el servidor, y que son guardados automaticamente en sus tablas, evaluarlos y tomar acciones dependiendo de esta evaluacion.

gracias de antemano.

  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 18 June 2009 - 06:38 PM

Hola
1- la variable (buscar) tiene que estar en el timer y contener el ultimo valor, de otra forma siempre sera nuevo para ella y seguirá actualizándose.
2- yo haria un query que solo viera el dato (alarmnum) no toda la tabla y si ese dato es diferente o en este caso menor entonces si hago una seleccion total, se me ahce mas rapida la consulta.
3- si se hace un recordcoutn en el timer y se indica que sea mayor a 0, por supuesto seguira la secuencia que en este caso no deseas.
Saludos
  • 0

#3 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2040 posts
  • LocationSanto Domingo

Posted 18 June 2009 - 08:14 PM

Gracias caral por tu respuesta.

Me gusta la idea del query de alarmnum solamente, porque con ello haria mas rapida la consulta. Por otro lado si necesito una secuencia, ya que podrian haber llegado varios datos entre consulta y necesito revisarlas todas.

Lo que necesito es sumar el valor del recordcount a el valor que obtengo de la variable buscar al inicio de la consulta para ir actualizando la variable.

Podrias darme un ejemplo de como ir actualizando la variable buscar al sumarle el valor de recordcount.

  • 0




IP.Board spam blocked by CleanTalk.