Access - ayuda lisbox access

 
Vista:
sin imagen de perfil

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


ayuda




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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ayuda lisbox access

Publicado por Manuel Julian (9 intervenciones) el 13/08/2024 06:52:40
se me olvido comentar que si pazo otra pieza del producto ya escaneado seguido de la pieza ya rejjstrada si se suma a la cantidad del pproducto, el problema pasa cuando ya agregue otros pruductos y de repente paso una pieza mas en este caso del frijol(solo puese el ejemplo del frijol para qeu me entiendan) es cuando se agrega individualmente el producto
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

ayuda lisbox access

Publicado por Anonimo (3398 intervenciones) el 13/08/2024 20:02:52
En mi opinion, utilizar un cuadro de lista para una funcionalidad para la que esta diseñado un formulario no es un acierto.

Una tabla temporal (temporal con los datos, porque se reutiliza en cada venta) con menos código es mas eficiente, es mas sencillo modificar uno de los campos (en este caso el de cantidad), se puede diseñar la tabla para evitar repeticiones y permite acceder a cualquier registro directamente.

En aras de la eficiencia, eliminaría las variables (conocido el ID del producto, se obtienen de la tabla todos su datos) y si en la tabla de productos hay productos que no estén 'activos' (se mantienen por compatibilidad con el histórico) solo se necesitaría un campo de tipo booleano para utilizarlo como filtro.

Una función de dominio (DCount) es mucho mas eficiente que el método que se esta aplicando para conocer si el código que se le pase como parámetro esta disponible en la tabla (si devuelve un cero equivale a un False cualquier otro valor a un TRUE), lo que permite utilizarlo como booleano.

El subformulario puede ocupar el mismo espacio que actualmente ocupa el cuadro de lista añadiendo las mejoras que supone su eficiencia en el manejo de los datos.
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
Imágen de perfil de Eduardo Pérez Fernández

ayuda lisbox access

Publicado por Eduardo Pérez Fernández (350 intervenciones) el 13/08/2024 16:35:31
Para solucionar el problema de que los productos con el mismo código de barras se agreguen individualmente en lugar de sumar sus cantidades, se puede modificar el código para verificar si el producto ya está en la lista y, si es así, actualizar su cantidad en lugar de agregarlo como un nuevo 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
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
Dim existeEnLista As Boolean
existeEnLista = False
For i = 0 To Me.ListboxDesc.ListCount - 1
    If Me.ListboxCB.ItemData(i) = codBarraProd Then
        existeEnLista = True
        Me.ListboxCant.ItemData(i) = Me.ListboxCant.ItemData(i) + Me.txtCantArt.Value
        Me.ListboxPrecTot.ItemData(i) = Me.ListboxCant.ItemData(i) * Me.ListboxPrecUni.ItemData(i)
        Exit For
    End If
Next i
 
If existeEnLista = False Then
    '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

Personalmente utilizo una temporal para registrar la venta, esta tabla el código de barras es unico es decdir sin repetidos, en este caso si ya está el producto en venta Clono el Subformulario e incremento la cantida y demás.
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
sin imagen de perfil

ayuda lisbox access

Publicado por Manuel Julian (9 intervenciones) el 14/08/2024 15:09:09
use el codigo que usted modifico, pero me aparece un error que es el siguiente
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