
24/11/2008, 23:41
|
| | Fecha de Ingreso: enero-2008 Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 17 años, 3 meses Puntos: 10 | |
Respuesta: Datagrid Para crear una factura, es decir usar las tablas maestro-detalle utilizo un recordset temporal y lo igualo al datagrid, es decir acumulo las filas ó items del rsTemporal que se grabaran en la tabla Detalle en el datagrid, luego estas filas recien las grabo en la tabla detalle
Te dejo parte del codigo que utilizo para que tengas una idea de como hacerlo, si alguien tiene un codigo mas corto bacan por que hace tiempo busque y busque y solo encontre el ejemplo del rsTemporal para trabajar con facturas(maestro-detalle).
Código:
Dim rsTemporal As New Recordset
Sub ActivaTemporal()
'Creando recordset temporal****************
rsTemporal.CursorType = adOpenStatic
rsTemporal.Fields.Append "NumProforma", adVarChar, 6, adFldIsNullable
rsTemporal.Fields.Append "CodProd", adVarChar, 4, adFldIsNullable
rsTemporal.Fields.Append "NomProd", adVarChar, 250, adFldIsNullable
rsTemporal.Fields.Append "PrecioVenta", adDouble, 10.2, adFldIsNullable
rsTemporal.Fields.Append "cantidad", adInteger, adFldIsNullable
rsTemporal.Fields.Append "Subtotal", adDouble, 10.2, adFldIsNullable
rsTemporal.Open
'*****************************************************
Set Datagrid1.DataSource = rsTemporal
End Sub
Private Sub Form_Load()
Call ActivaTemporal
End Sub
Private Sub AgregarItem()
'AGREGAR ITEM
If Val(Txtcantidad) = 0 Then MsgBox "Debe ingresar una cantidad mayor a cero", vbCritical, "Sistema de Facturacion": Exit Sub
With rsTemporal 'Actualizamos la columna del CodProd para evitar duplicidad de codigo
If Not .BOF Then 'Si no esta al inicio
.MoveFirst 'nos movemos al primer registro
.Find "CodProd='" + Trim(dtcProducto.BoundText) + "'" 'Buscamos el CodProd
If .EOF = False Then 'Si llega al final y encuetra algo
Datagrid1.Columns(2) = Val(Txtcantidad) 'Actualizamos esos campos en
Datagrid1.Columns(3) = Val(TxtSubTotal) 'el datagrid
rsTemporal.Update 'Actualizamos el recordset
Datagrid1.Refresh 'Actualizamos el datagrid
Else
Graba_Temporal
End If
Else
Graba_Temporal
End If
End With
CmdOpciones(1).Enabled = True 'habilita boton Eliminar
cmdGrabar.Enabled = True
' *************************************
Call Calculos
Datagrid1.Refresh
'Formato al campo TOTAL de la boleta
TxtTotal = Format(TxtTotal, "####.00")
End Sub
Sub Graba_Temporal()
rsTemporal.AddNew
rsTemporal.Fields(0) = Trim(txtBoleta)
rsTemporal.Fields(1) = Trim(dtcProducto.BoundText) 'CodProd
rsTemporal.Fields(2) = Trim(dtcProducto.Text)
rsTemporal.Fields(3) = Trim(TxtPrecio)
rsTemporal.Fields(4) = Trim(Txtcantidad)
rsTemporal.Fields(5) = Trim(TxtSubTotal)
rsTemporal.Update
End Sub
Private Sub cmdGrabar_Click()
'*****************************************************
'GRABAR DETALLE DE LA PROFORMA
Dim rsDetalleProforma As New Recordset
rsDetalleProforma.Open "SELECT * FROM DetalleProforma", dbConex, adOpenStatic, adLockOptimistic
rsTemporal.MoveFirst
'*****************************************************
Do While Not rsTemporal.EOF
rsDetalleProforma.AddNew
rsDetalleProforma.Fields("NumProforma") = txtBoleta
rsDetalleProforma.Fields("CodProd") = rsTemporal.Fields("CodProd")
rsDetalleProforma.Fields("PrecioVenta") = rsTemporal.Fields("PrecioVenta")
rsDetalleProforma.Fields("Cantidad") = rsTemporal.Fields("Cantidad")
rsDetalleProforma.Fields("SubTotal") = rsTemporal.Fields("subtotal")
rsDetalleProforma.Update
rsTemporal.MoveNext
Loop
End Sub
|