TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: hhpp en 20 de Abril de 2006, 21:15:56

Título: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: hhpp 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

 
Título: Re: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: BrunoF 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!
Título: Re: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: atlasdelcarinakeel 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:
Título: Re: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: hhpp 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.
   
Título: Re: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: atlasdelcarinakeel 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:
Título: Re: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: hhpp 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.



   

 


Título: Re: Enviar una "O" serialmente si un registro de una BD cambia.
Publicado por: atlasdelcarinakeel 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"?