Eliminar registros coincidentes en dos tablas
Publicado por Torpon (8 intervenciones) el 03/08/2005 21:58:46
Verás os explico
Tengo Una base de datos, la cual está compuesta por dos tablas, una llamada Personal con los campos IdRegistro, Nombre, PrimerApellido, SegundoApellido y Dni y otra llamada Tramites, con los campos IdTramite, FechaTramite, ReseañaTramite y IdRegistro, las cuales me muestran sus datos en los ListViewPersonal y ListViewTramites relaccionados por el campo IdRegistro de cada una, aclarando que en la tabla Persona su IdRegistro es númerico Sin duplicados y en la tabla Tramites, su IdRegistro es tipo Número y con duplicados, al poder realizar la misma persona varios trámites, mi problema es que cuando elimino cualquier registro de la Tabla Personal, no elimina los correspondientes a los IdRegistros de la tabla Tramites, tengo que eliminarlos por separado, mi pregunta es que código tendría que utilizar para eliminar de una vez los registros de la tabla Tramites, que coincidan con el IdRegistro de la tabla Personal, utilizó el siguiente código:
Private Sub Eliminar() 'Elimino de la tabla Personal
If MsgBox("¿Desea eliminar el Registro...?", 4 + 32 + 256) = vbYes Then
abrir
If RstPersonal.RecordCount > 0 Then
While Not RstPersonal.EOF
Cod = IIf(IsNull(RstPersonal("IdRegistro")), "**Ninguno**", Trim(RstPersonal("IdRegistro")))
If Cod = CodiPro.Caption Then
RstPersonal.Edit
RstPersonal.Update
RstPersonal.Delete 'Elimina el Registro
End If
RstPersonal.MoveNext
Wend
End If
End If
FormPersonal.ListViewPersonal.ListItems.Clear
Nombre.Text = ""
PrimerApellido.Text = ""
SegundoApellido.Text = ""
DniPersona.Text = ""
Close Database
End Sub
Y desde el mismo Formulario FormPersonal, desde otros controles, grabo, elimino y modifico los datos de la Tabla Tramites, en la cual para eliminar un registro de esta empleo el código:
Private Sub EliminarTramite() 'Eliminar Trámite
If MsgBox("¿Desea eliminar éste trámite...?", 4 + 32 + 256) = vbYes Then
abrir
If RstPersonal2.RecordCount > 0 Then
While Not RstPersonal2.EOF
Cod = IIf(IsNull(RstPersonal2("IdTramite")), "**Ninguno**", Trim(RstPersonal2("IdTramite")))
If Cod = CodiPro2.Caption Then
RstPersonal2.Edit
RstPersonal2.Update
RstPersonal2.Delete 'Elimina el trámite
End If
RstPersonal2.MoveNext
Wend
End If
End If
FormPersonal. ListViewTramites.ListItems.Clear
txtFecha.Text=””
txtTramite.Text = ""
Close Database
End Sub
Tengo Una base de datos, la cual está compuesta por dos tablas, una llamada Personal con los campos IdRegistro, Nombre, PrimerApellido, SegundoApellido y Dni y otra llamada Tramites, con los campos IdTramite, FechaTramite, ReseañaTramite y IdRegistro, las cuales me muestran sus datos en los ListViewPersonal y ListViewTramites relaccionados por el campo IdRegistro de cada una, aclarando que en la tabla Persona su IdRegistro es númerico Sin duplicados y en la tabla Tramites, su IdRegistro es tipo Número y con duplicados, al poder realizar la misma persona varios trámites, mi problema es que cuando elimino cualquier registro de la Tabla Personal, no elimina los correspondientes a los IdRegistros de la tabla Tramites, tengo que eliminarlos por separado, mi pregunta es que código tendría que utilizar para eliminar de una vez los registros de la tabla Tramites, que coincidan con el IdRegistro de la tabla Personal, utilizó el siguiente código:
Private Sub Eliminar() 'Elimino de la tabla Personal
If MsgBox("¿Desea eliminar el Registro...?", 4 + 32 + 256) = vbYes Then
abrir
If RstPersonal.RecordCount > 0 Then
While Not RstPersonal.EOF
Cod = IIf(IsNull(RstPersonal("IdRegistro")), "**Ninguno**", Trim(RstPersonal("IdRegistro")))
If Cod = CodiPro.Caption Then
RstPersonal.Edit
RstPersonal.Update
RstPersonal.Delete 'Elimina el Registro
End If
RstPersonal.MoveNext
Wend
End If
End If
FormPersonal.ListViewPersonal.ListItems.Clear
Nombre.Text = ""
PrimerApellido.Text = ""
SegundoApellido.Text = ""
DniPersona.Text = ""
Close Database
End Sub
Y desde el mismo Formulario FormPersonal, desde otros controles, grabo, elimino y modifico los datos de la Tabla Tramites, en la cual para eliminar un registro de esta empleo el código:
Private Sub EliminarTramite() 'Eliminar Trámite
If MsgBox("¿Desea eliminar éste trámite...?", 4 + 32 + 256) = vbYes Then
abrir
If RstPersonal2.RecordCount > 0 Then
While Not RstPersonal2.EOF
Cod = IIf(IsNull(RstPersonal2("IdTramite")), "**Ninguno**", Trim(RstPersonal2("IdTramite")))
If Cod = CodiPro2.Caption Then
RstPersonal2.Edit
RstPersonal2.Update
RstPersonal2.Delete 'Elimina el trámite
End If
RstPersonal2.MoveNext
Wend
End If
End If
FormPersonal. ListViewTramites.ListItems.Clear
txtFecha.Text=””
txtTramite.Text = ""
Close Database
End Sub
Valora esta pregunta


0