Visual Basic - Base de datos

Life is soft - evento anual de software empresarial
   
Vista:

Base de datos

Publicado por Martin (6 intervenciones) el 24/09/2008 17:58:00
Hola. Soy principiante en visual basic.
Tengo un problema con un programa tipo TPV (muy básico que es lo que necesito) que estoy haciendo y lo voy a explicar lo más escuetamente posible.
Tengo una base de datos access 97 y un escáner de mano para código de barras. En la base de datos tengo los campos CÓDIGO (Correspondería a la barra de código), PRODUCTO (nombre del producto) y PRECIO UNITARIO.
En VB hice un formulario con un control DATA (data1) y 4 cuadros de textos y 4 labels. El segundo y cuarto cuadros de textos los asocie a la base de datos, campos PRODUCTO y PRECIO UNITARIO.
El primer cuadro de texto lo dejé para ingresar la barra de códigos con el escáner sin asociarlo a la base de datos. Entonces le puse en la línea de códigos

Dim nReg as double
nReg = Val(BARRAS) 'BARRAS es el nombre del cuadro de texto
Data1.Recordset.Findfirst "CODIGO = " & nReg

Hasta aqui va todo bien, me encuentra los productos y sus precios unitarios sin problemas y los muestra en el formulario.
El problema es el siguiente. Lo que quiero hacer luego de esto (solo comento lo que me da problemas) es que el código que ingresé con el escaner en el cuadro de texto BARRAS se borre y quede listo para otro producto de manera automática, para simplificar la labor del negocio, sin necesidad de apretar un botón comando ni nada.
Se que es una tontería, pero hace horas estoy con lo mismo y no lo puedo hacer. He hecho varias pruebas con variables , if then, etc., y no lo he conseguido.

Me gustaría saber si alguien puede ayudarme con esto (que seguramente sea una tontería, y no lo sepa hacer por ser un principiante).

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Base de datos

Publicado por yo (14 intervenciones) el 24/09/2008 18:35:42
Claro que es una tontería

En el evento GotFocus del cuadro de texto le pones

BARRAS.Text = ""

y si quieres también a los demás cuadros de texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No es tan simple.

Publicado por MARTIN (6 intervenciones) el 24/09/2008 18:51:36
gracias YO por la rapidez de la contestación
Pero no me sirvió. Eso ya lo probé.
El tema que al ingresar la barra de códigos, no pierde el foco el código. Por lo tanto queda el código puesto, y si quiero ingresar otro me lo va a ingresar detrás del anterior.
Segundo, si hago que pierda el foco y luego lo elijo nuevamente, si se borra el código, pero en los campos PRODUCTO y PRECIO UNITARIO vuelven al primer dato de la base de datos y no queda el producto que elegí.
No se si me explico

O sea, en resumen, entro el código de barras en BARRAS (no está asociado a data), salen los datos en los otros dos cuadros de texto de PRODUCTO Y PRECIO UNITARIO. Ahora quiero que automáticamente se borre lo que está escrito en el cuadro de texto BARRAS sin cambiar lo que está en PRODUCTO y PRECIO UNITARIO (que no vuelva al primer registro).

Agradezco la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SOLUCIONADO

Publicado por MARTO (6 intervenciones) el 24/09/2008 18:59:58
Escribí este código para solucionar el problema, que les parece y a ver si hay alguno más simple
Dentro del cuadro de texto BARRA_Change

Private Sub BARRAS_Change()

If BARRAS.Text = "" Then Exit Sub

'PROD variable para el producto actualmente en el cuadro de texto PRODUCTO

PROD = PRODUCTO.Text

'Cambia código de barras y busca el producto para mostrarlo
nReg = Val(BARRAS)
Data1.Recordset.FindFirst "CODIGO = " & nReg

'PROD2 igual variable, luego de buscar en la base de datos.
PROD2 = PRODUCTO.Text

If PROD <> PROD2 Then
BARRAS.Text = ""
End If

'Al poner Barras.Text = "" cambia nuevamente la barra de código y busca el código, como no encuentra ninguna va al primer código. Entonces lo que hice es poner arriba si BARRAS.text = "" entonces salur de la subrutina.

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SOLUCIONADO

Publicado por Diego (211 intervenciones) el 24/09/2008 19:51:25
Yo tengo un programa TPV por ahi funcionando mas o menos como el tuyo, y yo lo que hice para evitar lo que a ti te pasa es que despues de buscar y extraer el producto, en el textbox que recoje el codigo de barras selecciona toda la entrada de modo que puedes ingresar la siguiente sin tocar nada.

Ya sabes, el tipico:

Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

LO PROBARE

Publicado por LO PROBARE (6 intervenciones) el 24/09/2008 21:40:51
Espectacular diego, gracias por la respuesta
Ahora estoy trabajando, lo pobaré cuando llegue a casa, mañana, y te cuento
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No solucionado

Publicado por Marto (6 intervenciones) el 25/09/2008 03:03:08
Sabes Diego que probe tu idea, funcionaría bien, el tema que al elegir todo lo contenido dentro de la caja de texto con las funciones

BARRAS.SelStart = 0
BARRAS.SelLength = Len(BARRAS.Text)

al ingresar el código por el escáner, el primer dígito no lo entra, porque es el que borra el texto dentro de la caja de texto.
Intentaré buscar una solución, si tienes alguna agradecería tu respuesta
Si la encuentro la publico después de este mensaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ENCONTRE UN BUEN CODIGO

Publicado por Marto (6 intervenciones) el 26/09/2008 03:52:19
Encontre un buen codigo para solucionar el problema planteado, lo publico por si a alguien le interesa

Private Sub BARRAS_Change()
If BARRAS.Text = "" Then Exit Sub

'Cambia código de barras y busca el producto para mostrarlo
nReg = Val(BARRAS)
Data1.Recordset.FindFirst "CODIGO = " & nReg
If Data1.Recordset.NoMatch Then
Label11.Caption = "No encontre nada"
Else
Label11.Caption = "¡ENCONTRE!"
BARRAS.Text = ""
End If

Existe un cuadro de texto BARRAS para introducir el código del escáner.
2 cuadros de texto más asociados a una base de datos con los campos PRODUCTOS y PRECIO UNITARIO
(y otras cosas mas que no interesan aqui)
El problema era que si pongo BARRAS.text = "" y no pongo el IF arriba, al borrar el texto en el código de barras, cambia nuevamente y tira la funcion BARRAS_Change nuevamente, por lo que vuelve al primer registro en el resto de la tabla donde se presentan los datos.
Colocando el IF arriba resuelvo el problema
Gracias a DIEGO y a "YO" por ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar