Visual Basic - Eliminar registros coincidentes en dos tablas

Life is soft - evento anual de software empresarial
 
Vista:

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
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

RE:Eliminar registros coincidentes en dos tablas

Publicado por Antonio Corena (97 intervenciones) el 03/08/2005 22:16:35
puedes hacer eso con dos consultas simples y no te complicas tanto, primero elimina en la segunda tabla

bd.Execute "DELETE FROM Tabla2 WHERE Clave = '" & IntClave & "'"
bd.Execute "DELETE FROM Tabla1 WHERE Clave = '" & IntClave & "'"

listo asi eliminas todos los registros relacionados.
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