TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado 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
-
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!
-
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:
-
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.
-
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:
-
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.
-
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"?