Borrar Reg.(tabla1)y Subreg(Tabla2)con ADO
Publicado por Gema (29 intervenciones) el 03/03/2011 20:33:02
Hola a tod@s:
Tengo un formulario principal y un subformulario en el que se relacionan de uno a varios registros. Para que me entendáis diré que el formulario principal indica una venta a un cliente, y en el subformulario se detallan las facturas necesarias hasta completar esa venta. Digamos que es una venta principal (formulario) hecha por diferentes entregas o facturas (subformulario)…
Lo que necesito es que si una venta que ya estaba grabada se ha anulado, mediante un botón de comando, se elimine tanto el registro de la tabla principal de ventas como los registros de la otra tabla relacionada.
El formulario principal está compuesto de campos independientes y se usa ADO.
¿Cómo puedo hacerlo?. Muchisimas gracias y saludos: Gema.
A continuación, os paso las principales funciones de grabar y editar que tengo en el formulario para que me entendais mejor:
'El formulario principal está editado con ADO:
Option Compare Database
Private cnn As ADODB.Connection
Private WithEvents Reg As ADODB.Recordset
Dim nChar As Integer
Option Explicit
'Y al cargar el formulario entramos en modo nuevo registro:
Private Sub Form_Load()
Set cnn = Application.CurrentProject.Connection
End Sub
'Si actualizo un combo con un código determinado para una venta determinada, me aparecen todos los datos grabados anteriormente:
Private Sub Combo01_AfterUpdate()
TipoReg.Caption = "Modificar Registro": TipoReg.ForeColor = 6723891
Set Reg = New ADODB.Recordset
Reg.Open "Select * From TVentasCiclos Where IdVentaCiclo ='" & _
Combo01 & "'", cnn, adOpenDynamic, adLockOptimistic
If Not Reg.EOF Then
IdVentaCiclo = Reg!IdVentaCiclo
Combo10 = Reg!IdCliente
Id_Empresa = Reg!Id_Empresa
…
Cuadro_combinado30 = Reg!Consultor
Importe = Reg!Importe
Ejercicio = Reg!Ejercicio
Else
Combo01.SetFocus
End If
Reg.Close: Set Reg = Nothing
End Sub
'Y grabo el registro principal mediante un botón de comando:
Private Sub Comando38_Click()
On Error Resume Next
Set Reg = New ADODB.Recordset
Reg.Open "SELECT * From TVentasCiclos Where IdVentaCiclo ='" & _
Combo01 & "'", cnn, adOpenDynamic, adLockOptimistic
If Reg.EOF Then Reg.AddNew
Reg!IdCliente = Combo10
Reg!IdVentaCiclo = IdVentaCiclo
Reg!Id_Empresa = Id_Empresa
...
Reg!Consultor = Cuadro_combinado30
Reg!Importe = Importe
Reg!Ejercicio = Ejercicio
Reg.Update
Combo01.Requery 'Actualiza el Combo32 con el nuevo Registro
End Sub
Tengo un formulario principal y un subformulario en el que se relacionan de uno a varios registros. Para que me entendáis diré que el formulario principal indica una venta a un cliente, y en el subformulario se detallan las facturas necesarias hasta completar esa venta. Digamos que es una venta principal (formulario) hecha por diferentes entregas o facturas (subformulario)…
Lo que necesito es que si una venta que ya estaba grabada se ha anulado, mediante un botón de comando, se elimine tanto el registro de la tabla principal de ventas como los registros de la otra tabla relacionada.
El formulario principal está compuesto de campos independientes y se usa ADO.
¿Cómo puedo hacerlo?. Muchisimas gracias y saludos: Gema.
A continuación, os paso las principales funciones de grabar y editar que tengo en el formulario para que me entendais mejor:
'El formulario principal está editado con ADO:
Option Compare Database
Private cnn As ADODB.Connection
Private WithEvents Reg As ADODB.Recordset
Dim nChar As Integer
Option Explicit
'Y al cargar el formulario entramos en modo nuevo registro:
Private Sub Form_Load()
Set cnn = Application.CurrentProject.Connection
End Sub
'Si actualizo un combo con un código determinado para una venta determinada, me aparecen todos los datos grabados anteriormente:
Private Sub Combo01_AfterUpdate()
TipoReg.Caption = "Modificar Registro": TipoReg.ForeColor = 6723891
Set Reg = New ADODB.Recordset
Reg.Open "Select * From TVentasCiclos Where IdVentaCiclo ='" & _
Combo01 & "'", cnn, adOpenDynamic, adLockOptimistic
If Not Reg.EOF Then
IdVentaCiclo = Reg!IdVentaCiclo
Combo10 = Reg!IdCliente
Id_Empresa = Reg!Id_Empresa
…
Cuadro_combinado30 = Reg!Consultor
Importe = Reg!Importe
Ejercicio = Reg!Ejercicio
Else
Combo01.SetFocus
End If
Reg.Close: Set Reg = Nothing
End Sub
'Y grabo el registro principal mediante un botón de comando:
Private Sub Comando38_Click()
On Error Resume Next
Set Reg = New ADODB.Recordset
Reg.Open "SELECT * From TVentasCiclos Where IdVentaCiclo ='" & _
Combo01 & "'", cnn, adOpenDynamic, adLockOptimistic
If Reg.EOF Then Reg.AddNew
Reg!IdCliente = Combo10
Reg!IdVentaCiclo = IdVentaCiclo
Reg!Id_Empresa = Id_Empresa
...
Reg!Consultor = Cuadro_combinado30
Reg!Importe = Importe
Reg!Ejercicio = Ejercicio
Reg.Update
Combo01.Requery 'Actualiza el Combo32 con el nuevo Registro
End Sub
Valora esta pregunta


0