
ayuda lisbox access
Publicado por Manuel Julian (9 intervenciones) el 13/08/2024 06:47:34
hola amigos tengo una base de datos en la cual desarrolle un punto de ventas, ya estoy en las pruebas y note que en los listbox de mi formulario de las ventas, me aparecen los productos de la siguiente forma

les explico lo que sucede.
pasa wue al precionar el boton marcar producto llamo los nombres de mi tabla productos y sus resoectivos datos, entonces al agfregar los productos que sean el mismo se van agregando las piezas en el listbox que dice Cant, que me dice cuantas piezas de ese producto se estan vendiendo, todo va bien miestras el producto se agregue ordenadamente, por ejemplo, paso el frijol y se agrega la cantidad del producto, paso otro producto y se agrega de ugual forma, pero en una tienda como saben no siempre se agregan todos los productos del mismo codigo en una sola excebicion mientras se pasan, me encuentro con otro frijol y lo paso pero ya no se suma a la cantidad del producto si no que se agrega individualmente como un producto nuevo.
no se como explicarlo de forma que me entiendan. asi que espero que me logre entender alguien
aqui les dejo el codigo que esta en el boton marcar producto:

les explico lo que sucede.
pasa wue al precionar el boton marcar producto llamo los nombres de mi tabla productos y sus resoectivos datos, entonces al agfregar los productos que sean el mismo se van agregando las piezas en el listbox que dice Cant, que me dice cuantas piezas de ese producto se estan vendiendo, todo va bien miestras el producto se agregue ordenadamente, por ejemplo, paso el frijol y se agrega la cantidad del producto, paso otro producto y se agrega de ugual forma, pero en una tienda como saben no siempre se agregan todos los productos del mismo codigo en una sola excebicion mientras se pasan, me encuentro con otro frijol y lo paso pero ya no se suma a la cantidad del producto si no que se agrega individualmente como un producto nuevo.
no se como explicarlo de forma que me entiendan. asi que espero que me logre entender alguien
aqui les dejo el codigo que esta en el boton marcar producto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
Private Sub cmdMarcarProd_Click()
On Error GoTo err:
'variables de conexion a tabla productos
Dim rs As DAO.Recordset
Dim SQL As String
'datos del producto
Dim codBarraProd As String
Dim precioProd As Double
Dim descripcionProd As String
Dim cantArticulos As Integer
Dim precioTot As Double
Dim CodigodeBarras As String
Dim CapacidadProd As String
Dim IVAproducto As Double
'datos de la Venta
Dim tvc As Integer 'contador de ventas
Dim tac As Integer 'contador de Articulos
Dim contadorlista As Integer
'datos para verificar si existe Inventario
Dim id_prod As Long
Dim codigo_prod As Long
Dim CantProcesoVenta As Long
'inicializacion de valores
If IsNull(Me.txtCodigoArt.Value) Then
MsgBox "No ha escaneado ningun Codigo todavia!"
Exit Sub
Else
codBarraProd = Me.txtCodigoArt.Value
End If
'Consulta de producto por codigo de barras
SQL = "SELECT * FROM PRODUCTOS WHERE CODIGO_BARRAS='" & codBarraProd & "'"
'Se ejecuta consulta en la base de datos actual
Set rs = CurrentDb.OpenRecordset(SQL)
If rs.BOF And rs.EOF Then
MsgBox "Verifique codigo de barras, Producto no Existe", vbOKOnly, "No existe Codigo"
Me.txtCodigoArt.Value = ""
Me.txtCodigoArt.SetFocus
Exit Sub
Else
'Mostrar Foto del Producto
If IsNull(DLookup("PATH_FOTO", "PRODUCTOS", "CODIGO_BARRAS='" & codBarraProd & "'")) Then
Me.imgProducto.Picture = ""
Else
If Dir(DLookup("PATH_FOTO", "PRODUCTOS", "CODIGO_BARRAS='" & codBarraProd & "'")) = "" Then
'no muestra foto
Me.imgProducto.Picture = ""
Else
'muestra foto
Me.imgProducto.Picture = Nz(DLookup("PATH_FOTO", "PRODUCTOS", "CODIGO_BARRAS='" & codBarraProd & "'"), "")
End If
End If
'Consultar Si producto existe en Inventario
id_prod = DLookup("ID_PRODUCTO", "[PRODUCTOS]", "[CODIGO_BARRAS]='" & codBarraProd & "'")
If IsNull(DLookup("FID_PRODUCTO", "[INVENTARIOS]", "[FID_PRODUCTO]=" & id_prod)) Then
MsgBox "Imposible Marcar Producto, Verifique si existe Inventario", vbCritical + vbOKOnly, "Sin Inventario!!"
Me.txtCodigoArt.Value = ""
Me.txtCodigoArt.SetFocus
Exit Sub
Else
'Verifica si hay Inventario Disponible
contadorlista = ListboxDesc.ListCount
For c = 1 To contadorlista
'Verificar producto en Proceso de Venta
If artVendido(c).idprod = id_prod Then
CantProcesoVenta = CantProcesoVenta + artVendido(c).cant
End If
Next c
If (DLookup("CANT_DISPONIBLE", "[INVENTARIOS]", "[FID_PRODUCTO]=" & id_prod)) >= Val(Me.txtCantArt.Value) + CantProcesoVenta Then
If TipoVenta = 1 Then
precioProd = rs!PREC_UNIT_MEN
ElseIf TipoVenta = 2 Then
precioProd = rs!PREC_UNIT_MAY
End If
descripcionProd = rs!DESC_PRODUCTO
CodigodeBarras = rs!CODIGO_BARRAS
CapacidadProd = rs!CAPAC_PROD
IVAproducto = rs!IVA
Else
MsgBox "No existe Inventario suficiente de este producto, para realizar esta Venta" & vbCrLf & "Existencia Actual: " & DLookup("CANT_DISPONIBLE", "[INVENTARIOS]", "[FID_PRODUCTO]=" & id_prod) _
, vbCritical + vbOKOnly, "Producto Insuficiente en Inventario"
Me.txtCantArt.Value = 1
Me.txtCantArt.SetFocus
Exit Sub
End If
End If
End If
'-------- VERIFICAR QUE EL PRODUCTO A INCREMENTAR NO SE LE HAYA APLICADO UN DESCUENTO ---------- 041515
'Buscar el codigo de barras del ultimo producto descontado
Dim conDescuento As Boolean
If contadorParaDescuentos > 0 Then
If Me.txtCodigoArt.Value = ultCodBarEscaneado Then
If DLookup("CODIGO_BARRAS", "PRODUCTOS", "ID_PRODUCTO=" & artDescontado(contadorParaDescuentos).d_product_id) = ultCodBarEscaneado Then
MsgBox "Este nuevo marcaje NO tendra el Descuento Aplicado previamente", vbOKOnly + vbInformation, "Mensaje"
conDescuento = True
End If
End If
End If
'------- INCREMENTANDO CANTIDAD EN ULTIMO PRODUCTO ESCANEADO -------041514 / 041515
If Me.txtCodigoArt.Value = ultCodBarEscaneado And conDescuento = False Then
'remover el ultimo item registrado
Me.ListboxDesc.RemoveItem (Me.ListboxDesc.ListCount - 1)
Me.ListboxCant.RemoveItem (Me.ListboxCant.ListCount - 1)
Me.ListboxPrecUni.RemoveItem (Me.ListboxPrecUni.ListCount - 1)
Me.ListboxPrecTot.RemoveItem (Me.ListboxPrecTot.ListCount - 1)
Me.ListboxCB.RemoveItem (Me.ListboxCB.ListCount - 1)
Me.ListboxCapacidadProd.RemoveItem (Me.ListboxCapacidadProd.ListCount - 1)
Me.ListBoxIVA.RemoveItem (Me.ListBoxIVA.ListCount - 1)
'Poblar Listbox INCREMENTANDO ultimo producto
Me.ListboxDesc.AddItem (descripcionProd)
If Me.txtCantArt.Value = 1 Then
ultCantRegistrada = ultCantRegistrada + 1
ElseIf Me.txtCantArt.Value > 1 Then '*** INCREMENTANDO EL VALOR MAYOR QUE 1 12/5/2017
ultCantRegistrada = ultCantRegistrada + Me.txtCantArt.Value
End If
Me.ListboxCant.AddItem (ultCantRegistrada)
Me.ListboxPrecUni.AddItem (precioProd)
precioTot = ultCantRegistrada * precioProd
Me.ListboxPrecTot.AddItem (precioTot)
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
Me.ListboxCB.AddItem (CodigodeBarras) '
Me.ListboxCapacidadProd.AddItem (CapacidadProd) ' Nuevos item a ListBox
Me.ListBoxIVA.AddItem (IVAproducto) '
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Poblar Estructura de datos
contadorlista = ListboxDesc.ListCount
With artVendido(contadorlista)
.idprod = rs!ID_PRODUCTO
.Desc = descripcionProd
.cant = ultCantRegistrada
.prec_uni = precioProd
.prec_tot = precioTot
End With
Else
'Poblar ListBoxs
Me.ListboxDesc.AddItem (descripcionProd)
Me.ListboxCant.AddItem (Me.txtCantArt.Value)
Me.ListboxPrecUni.AddItem (precioProd)
precioTot = Me.txtCantArt.Value * precioProd
Me.ListboxPrecTot.AddItem (precioTot)
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
Me.ListboxCB.AddItem (CodigodeBarras) '
Me.ListboxCapacidadProd.AddItem (CapacidadProd) ' Nuevos item a ListBox
Me.ListBoxIVA.AddItem (IVAproducto) '
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Poblar Estructura de datos
contadorlista = ListboxDesc.ListCount
With artVendido(contadorlista)
.idprod = rs!ID_PRODUCTO
.Desc = descripcionProd
.cant = Me.txtCantArt.Value
.prec_uni = precioProd
.prec_tot = precioTot
End With
ultCantRegistrada = Me.txtCantArt.Value
End If
'registrar ultimo codigo escaneado
ultCodBarEscaneado = Me.txtCodigoArt.Value
'----------------------------------------------------------------------
'Totalizar Venta
totalventa = 0
For tvc = 1 To contadorlista
'Verificar si producto tiene IVA
If DLookup("IVA_NOTA", "PRODUCTOS", "ID_PRODUCTO=" & artVendido(tvc).idprod) = True Then
totalventa = totalventa + artVendido(tvc).prec_tot + ((artVendido(tvc).prec_tot * DLookup("IVA", "PRODUCTOS", "ID_PRODUCTO=" & artVendido(tvc).idprod)))
Else
totalventa = totalventa + artVendido(tvc).prec_tot
End If
Next tvc
'Totalizar Cantidad de Articulos
contadorArticulos = 0
For tac = 1 To contadorlista
contadorArticulos = contadorArticulos + artVendido(tac).cant
Next tac
Me.lblCantArt.Caption = contadorArticulos
'Imprime en pantalla el Total Acumulado
Me.lblTotal.Caption = Format(totalventa, "Currency")
'regresa a 1 la cantidad de articulos
Me.txtCantArt.Value = 1
'Borra el Codigo de Barras y espera uno nuevo
Me.txtCodigoArt.Value = ""
Me.txtCodigoArt.SetFocus
'Cierra conexion
rs.Close
Set rs = Nothing
'Regresa a tipo de venta Normal - Menudeo
TipoVenta = 1
Me.lblMayoreo.Visible = False
Exit Sub
err:
MsgBox err.Description
End Sub
Valora esta pregunta


0