Visual Basic - codigo de barras

Life is soft - evento anual de software empresarial
 
Vista:

codigo de barras

Publicado por pablo (3 intervenciones) el 05/08/2011 12:46:56
Hola amigos del foro:
Quisiera hacer una consulta, no tanto sobre codigo de barras sino de como controlar los datos con un MSHFlexGrid1 y una text1. Les explico que tiene que hacer y cual es el error. Cuando uso el scan para marcar un codigo me lo copia en la text1 y automáticamente me lo busca en database access y si lo encuentra mete toda la informacion en el MSHFlexGrid1 y la text se borra. Mi problema radica es que quiero que cuando los artículos se repiten en vez de agregar una linea nueva busca su correspondiente y lo sume.
La verdad no entiendo donde está el error ya que casi hace lo que pido

campo1 campo2 campo3
1234 tomate 1kg si yo vuelvo a presionar tomates no ingresa
otra linea pero tampoco las suma al kg ya
existente.

---------------------------------------------------------------------------------------------------------------------------
campo1 campo2 campo3 imaginemos que el primer artículo es
1234 tomate 2kg tomates y es 1kg si pongo lechuga me lo
3689 lechuga 1kg encuentra perfectamente. Después vuelvo a
1234 tomete 1kg poner tomate no solo me suma el de arriba
sino que tambien me agrega la línea de
abajo.

El código es:

Private Sub Text1_Change()
Dim zz As Integer
On Error GoTo 10:
respuesta1 = Text1.Text
If respuesta1 = "" Then Exit Sub
rst.Find "Campo1 = '" & respuesta1 & "'", , , 1
z = rst.Fields("campo1").Name
t = rst.Fields("campo2").Name
r = rst.Fields("campo2").Name
x = rst.Fields("campo1").Value
y = rst.Fields("campo2").Value
MSHFlexGrid1.TextMatrix(0, 0) = z
MSHFlexGrid1.TextMatrix(0, 1) = t
MSHFlexGrid1.TextMatrix(0, 2) = "Campo3"
For zz = 1 To MSHFlexGrid1.Rows - 1
If MSHFlexGrid1.TextMatrix(zz, 0) = respuesta1 Then
MSHFlexGrid1.TextMatrix(zz, 2) = MSHFlexGrid1.TextMatrix(zz, 2) + 1
ElseIf zz = MSHFlexGrid1.Rows - 1 Then
MSHFlexGrid1.AddItem ""
MSHFlexGrid1.TextMatrix(zz, 0) = x
MSHFlexGrid1.TextMatrix(zz, 1) = y
MSHFlexGrid1.TextMatrix(zz, 2) = 1
End If
Next
MSHFlexGrid1.ColWidth(0) = 1500 'Len(x) * 500
MSHFlexGrid1.ColWidth(1) = 1500 'Len(y) * 500
If x <> Empty And y <> Empty Then
Text1 = ""
ElseIf x = Empty And y = Empty Then
Text1 = ""
End If
10:
End Sub

Les agradezco de antemano cualquier intervento y a quien le interesa este código, a mi salvo por este problema me funciona perfecto lo pueden aprovechar.
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

codigo de barras

Publicado por Caevx (3 intervenciones) el 31/08/2011 18:19:55
Creo que tu problema esta en que estas haciendo una operacion con un valor string.

Los MSHFlexGrid, solo guardan valores alfanumericos. Para realizar la operacion debes convertir tu valor anterior en valor numerico. Esta linea.

MSHFlexGrid1.TextMatrix(zz, 2) = MSHFlexGrid1.TextMatrix(zz, 2) + 1

cambiala por

MSHFlexGrid1.TextMatrix(zz, 2) = val(MSHFlexGrid1.TextMatrix(zz, 2)) + 1

Esto solucionaria tu problema.
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