Autor Tema: Enviar una "O" serialmente si un registro de una BD cambia.  (Leído 3249 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
Enviar una "O" serialmente si un registro de una BD cambia.
« en: 20 de Abril de 2006, 21:15:56 »
Eso mismo como envio una "O" por el puerto serie.
Ejemplo mi registro estaba en "A" pero despues de una actualizacion este cambio a "O", entonces como hago para que VB note el cambio y envie el caracter?
Ademas que tan rapido sera.
Gracias

 

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Enviar una "O" serialmente si un registro de una BD cambia.
« Respuesta #1 en: 20 de Abril de 2006, 21:39:06 »
Hola. No logre entenderte muy bien.
Si tu mísmo eres el que cambia el valor de dicha variable, ¿porque no envías el nuevo valor de la variable por puerto serie inmediatamente despues de haberlo cambiado?

No logro comprender completamente tu duda.¿Puedes postear algo de codigo para poder ubicarnos?
Exitos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
Re: Enviar una "O" serialmente si un registro de una BD cambia.
« Respuesta #2 en: 20 de Abril de 2006, 21:58:29 »
Por lo que creo que entendi, deberias leer ese registro de la BD, con VB y lo guardaria en una variable, y esta variable es la que enviaria al puero serial. ¿Creo que es lo mismo que dijo BrunoF?¿?¿?¿ :-) :-). Si es eso lo que entendi.  :mrgreen:.


Pero como dice el pana BrunoF postea algo de codigo para ubicarnos mejor.  :mrgreen:
« Última modificación: 20 de Abril de 2006, 22:00:17 por atlasdelcarinakeel »
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
Re: Enviar una "O" serialmente si un registro de una BD cambia.
« Respuesta #3 en: 21 de Abril de 2006, 23:38:59 »
Debo leer el registro de una base de datos(tabla--->campo--->registro) con VB y guardar el valor
de dicho registro en una variable, luego esta vcariable tiene que ser enviada por el puerto serial.
Yo no tengo que modificar nada, tendria que ser de manera automatica, por ejemplo si alguien en una intranet
modifica el registro ID7 del campo cliente de la tabla ayuda, VB tendria que guardar el nuevo valor
que alguien a modificado , para luego enviarlo.

Bueno aqui estan mis intentos fallidos.

 Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=judy;Data Source=LGPP-D704093332"  rst.Open "SELECT * FROM Table1", cnn, adOpenDynamic, adLockOptimistic
     

    variable = rst!cliente   'pero aqui me voy directo al campo, yo quiero ir especificamente al
    'registro.
     Creo que no hay nada que vaya a un registro, entonces tendria que utilizar sql?
    variable="SELECT cliente FROM ayuda WHERE ID=ID7", bueno si es asi seria la primera vez que utilizo
  sql aqui en VB, asi que no se muy bien la sintaxis., y si hay otra manera por favor diganmelo.
   Ahora si es que funciona entonces
    variable tendria el valor del registro (que alguien cambio)
  y de ahi tendria que enviarlo
    MSComm1.output=variable

Eso que esta escrito arriba seria una de tantas yo creo?(lamentablemente no me se las tantas jeje)

Ahora estaba pensando si eso no se puede entonces, que solo guarde el valor del registro y con
un timer chekearlo. (el tiempo seria lo mas corto posible)
Private Sub Timer1_Timer()

if variable = "O" then
 MSComm....
else
...
end sub

Bueno algo esa es la idea, ahora espero me hayan entendido.
   

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
Re: Enviar una "O" serialmente si un registro de una BD cambia.
« Respuesta #4 en: 22 de Abril de 2006, 08:54:25 »
Que tal esto fue algo que hice hace mucho tiempo usando Acces y la referencia Microsof ActiveX Data Objects 2.7 Library de Visual Basic, yo lo haria asi.

Global BaseD As New ADODB.Connection
Global Tabla As New ADODB.Recordset

stri = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Soporte\Almacen.mdb;Persist Security Info=False"


BaseD.Open stri

sqlst = "SELECT * FROM Usuario Where Clave ='" & cod & "'" 'donde cod es la variable de busqueda con la que vas a comparar el campo.
Tabla.Open sqlst, BaseD, 3, 3

If Not Tabla.EOF Then
nom = Tabla.Fields("Nombre") 'nom seria lo que desea enviar al puerto serie
End If

BaseD.Close

A mi me resulto esto, claro yo solo hacia una busqueda y me mostraba los registros, pero no los enviaba por el puerto, para enviarlos yo haria lo asi.

MSComm1.output=nom

Espero que te sirva.  :mrgreen:
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado hhpp

  • PIC12
  • **
  • Mensajes: 99
Re: Enviar una "O" serialmente si un registro de una BD cambia.
« Respuesta #5 en: 24 de Abril de 2006, 11:16:40 »
If Not Tabla.EOF Then
nom = Tabla.Fields("Nombre") 'nom seria lo que desea enviar al puerto serie
End If

BaseD.Close

A mi me resulto esto, claro yo solo hacia una busqueda y me mostraba los registros,
 pero no los enviaba por el puerto, para enviarlos yo haria lo asi.

MSComm1.output=nom

Espero que te sirva. 
 
 
Muchas gracias me sirve y de mucho, pero por ejemplo si pongo esto en el FORM(carga)
solo mostarra una vez y se quedara alli, nunca cambiara, solo lo ejecutara una vez.

Ahora yo pense ponerlo todo esto en un timer mira asi:

Private Sub Timer1_Timer()

todo lo que me indicaste...

If Not Tabla.EOF Then
nom = Tabla.Fields("Nombre") 'nom seria lo que desea enviar al puerto serie
End If
entonces yo pongo "nom" en otra variable
variable=nom

a=0
if a= 0 then
   a=a+1
     if variable="O" then MSCom1.Output=variable
endif
if a=1 then
   if variable="A" then MCOmm1.output=variable
 else
   a=0
  endif
End Sub

Pero miren la desventaje de esto es que  todo el tiempo valores por
el puerto serial.
Que tal si uno cambio de "A" a "O" entonces la primera vez tiene que mandar, pero ya despues no hay
necesidad, como ven tengo un problema aqui, intente usar llaves (a) pero asi no mas no me funcionan
ahora no se como podria corregir este problema.



   

 



Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
Re: Enviar una "O" serialmente si un registro de una BD cambia.
« Respuesta #6 en: 24 de Abril de 2006, 17:52:34 »
a=0
if a= 0 then
   a=a+1
     if variable="O" then MSCom1.Output=variable
endif
if a=1 then
   if variable="A" then MCOmm1.output=variable
 else
   a=0
  endif
End Sub

Pero miren la desventaje de esto es que  todo el tiempo valores por
el puerto serial.
Que tal si uno cambio de "A" a "O" entonces la primera vez tiene que mandar, pero ya despues no hay
necesidad, como ven tengo un problema aqui, intente usar llaves (a) pero asi no mas no me funcionan
ahora no se como podria corregir este problema.

No entiendo esta parte del codigo, para que incrementas la variable
"a"?
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?