-Al ingresar un artículo, me lo muestra en un datagrid. Perfecto hasta ahí.
-EL problema ocurre cuando intento ingresar otro artículo. POrque en vez de agregarlo en la siguiente fila del datagrid, lo agrega en la primera, borrándome así el primer artículo que había elegido.
A continuación les muestro algo de código para que vean si hay errores.
Esto corresponde a un módulo.
Código:
Lo siguiente pertenece al formulario de facturaciónGlobal base As New ADODB.Connection Global Subtotal As Double Global RsClientes As New ADODB.Recordset Global RsArtículos As New ADODB.Recordset Global RsVentas As New ADODB.Recordset Global RsVentasArtículos As New ADODB.Recordset Global RsTemporal As New ADODB.Recordset Sub main() With base .CursorLocation = adUseClient .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BD.mdb;Persist Security Info=False" Form12.Show End With End Sub Sub Clientes() With RsClientes .Open "Select * from Clientes", base, adOpenStatic, adLockBatchOptimistic End With End Sub Sub Artículos() With RsArtículos If .State = 1 Then .Close .Open "Select * from Artículos", base, adOpenStatic, adLockBatchOptimistic End With End Sub Sub Ventas() With RsVentas If .State = 1 Then .Close .Open "Select * from Ventas", base, adOpenStatic, adLockBatchOptimistic End With End Sub Sub VentasArtículos() With RsVentasArtículos If .State = 1 Then .Close .Open "Select * from VentasArtículos", base, adOpenStatic, adLockBatchOptimistic End With End Sub Sub Temporal() With RsTemporal If .State = 1 Then .Close .Open "select * from Temporal", base, adOpenStatic, adLockBatchOptimistic End With End Sub
Código:
Desde ya muchísimas gracias. 'Botón AGREGAR Private Sub Command1_Click() 'Validar la cantidad a comprar If Val(Text10.Text) = 0 Then MsgBox "Ingrese la cantidad", vbInformation, "Aviso": Text10.SetFocus: Exit Sub 'validar que realmente se ha elegido un producto If Label12.Caption = "" Then MsgBox "Debe elegir un producto", vbInformation, "Aviso": Exit Sub 'Validar que el producto no se encuentre en el detalle With RsTemporal .Requery .Find "Id_Artículo= '" & Val(Label12.Caption) & " ' " If .EOF Then Else MsgBox "Este producto ya ha sido agregado a esta compra", vbInformation, "Aviso": Exit Sub End With formatogrilla1 'Grabar el Temporal With RsTemporal .Requery .AddNew !Codventa = Val(Text1.Text) !Id_Artículo = Val(Label12.Caption) !Nombre_Artículo = Text7.Text !Cantidad = Val(Text10.Text) !Precio_Artículo = CDbl(Text9.Text) !Subtotal = Val(Text10.Text) * CDbl(Text9.Text) .Update End With formatogrilla1 Subtotal = Subtotal + (Val(Text10.Text) * CDbl(Text9.Text)) Text4 = Subtotal End Sub Private Sub DataCombo1_Change() With RsClientes .Requery .Find "ApeyNom= '" & Trim(DataCombo1.Text) & " ' " Text3.Text = !Dni End With End Sub Private Sub Form_Load() 'Abrir conexión a las tablas Clientes Ventas Artículos VentasArtículos Temporal 'LLenar el datacombo con los nombres de los clientes Set DataCombo1.RowSource = RsClientes DataCombo1.BoundColumn = "ApeyNom" DataCombo1.ListField = "ApeyNom" Set DataGrid1.DataSource = RsTemporal formatogrilla1 Set DataGrid2.DataSource = RsArtículos formatogrilla2 End Sub Sub formatogrilla1() With RsTemporal DataGrid1.Columns(0).Width = 0 DataGrid1.Columns(1).Width = 0 DataGrid1.Columns(2).Width = 0 DataGrid1.Columns(3).Width = 2000 DataGrid1.Columns(4).Width = 3000 DataGrid1.Columns(5).Width = 2000 DataGrid1.Columns(6).Width = 0 End With End Sub Sub formatogrilla2() With RsArtículos DataGrid2.Columns(0).Width = 0 DataGrid2.Columns(1).Width = 3000 DataGrid2.Columns(2).Width = 1000 DataGrid2.Columns(3).Width = 1500 DataGrid2.Columns(4).Width = 0 DataGrid2.Columns(5).Width = 0 DataGrid2.Columns(6).Width = 2000 DataGrid2.Columns(7).Width = 0 End With End Sub Private Sub DataGrid2_Click() With RsArtículos If .BOF Or .EOF Then Exit Sub Label12.Caption = DataGrid2.Columns(0).Text Text7.Text = DataGrid2.Columns(1).Text Text8.Text = DataGrid2.Columns(2).Text Text9.Text = DataGrid2.Columns(3).Text End With End Sub