ACCESS

JABA 29/09/2009 17:59:30
#324002
Olá pessoal, alguem sabe como evitar a exclusao de um registro no ACCESS 2000 quando houver relacionamentos com outras tabelas?

obrigado
ROBIU 29/09/2009 20:59:16
#324013
Resposta escolhida
1 - Vai na janela de relacionamentos do access;
2 - Duplo Click em cima da linha que indica a relação entre as tabelas para editar;
3 - Desmarque a opção PROPAGAR EXCLUSÃO DOS REGISTROS RELACIONADOS

Pronto, agora não vai excluir automático os dados da tabela secundária quando tentar excluir um registro da tabela principal. Neste caso, se você tentar excluir um registro da tabela principal, vai dá uma mensagem para excluir os registros secundários antes.
XYKOVIEIRA 02/10/2009 11:24:41
#324254
Jaba, se quiser, dá pra fazer no código mesmo.
Num sistema que criei, há diversas tabelas se relacionando. Numa delas , há o cadastro de clientes, para o controle da retirada de filmes. Noutra, o cadastro de retiradas/devolução de filmes. Assim, se quiser excluir um cliente, o sistema faz uma busca na tabela de Andamentos. Se houver algum filme emprestado, a exclusão não é permitida. Se não houver, então pode excluir o cliente.
Nessa tabela de Andamentos, ficam registradas as retiradas. Quando ocorre a devolução, o registro é zerado, liberando tanto o cliente quanto o filme.
Escolhi assim, pois existe outra tabela (histórico das retiradas) onde tudo fica registrado, seja dos filmes retirados e devolvidos, como também dos com entrega pendente...Assim, apenas na tabela Andamento os registros são zerados. Na tabela de histórico, (todos) os registros ficam armazenados.

‘No evento Load do form de Clientes:

Set BancoDeDados = OpenDatabase(App.Path & [Ô]\FilmesVHS[Ô])
Set TbCliente = BancoDeDados.OpenRecordset([Ô]CadastrodeClientes[Ô], dbOpenTable)
Set TbAndamento = BancoDeDados.OpenRecordset([Ô]Andamento[Ô], dbOpenTable)
TbCliente.Index = [Ô]IndCódigo[Ô] [ô]Ordena os registros por ordem de código.
TbAndamento.Index = [Ô]IndCliente[Ô]

‘E no vento click do botão <Excluir>:

If TbCliente.RecordCount = 0 Then
MsgBox [Ô]Atenção! A tabela está zerada...[Ô], vbOKOnly + vbInformation, [Ô]Informação do sistema[Ô]
Exit Sub
Else
Dim ProcuraCódigo As String
ProcuraCódigo = txtCodCliente
TbAndamento.Seek [Ô]=[Ô], ProcuraCódigo
If TbAndamento.NoMatch = False Then
MsgBox [Ô]Existe(m) registro(s) de filme(s) emprestado(s)[Ô] & Chr(13) & _
[Ô]a esse cliente, ainda sem devolução. Não é[Ô] & Chr(13) & _
[Ô]permitida a exclusão do cliente, até que se[Ô] & Chr(13) & _
[Ô]cadastre a respectiva devolução do(s) filme(s).[Ô], vbInformation + vbOKOnly, [Ô]Cliente: [Ô] & txtNome & [Ô].[Ô]
Exit Sub
Else
If MsgBox([Ô]Confirma exclusão do cliente[Ô] & Chr(13) & _
txtNome & [Ô] ?[Ô], vbYesNo + vbDefaultButton2 + vbCritical, [Ô]Aviso de exclusão[Ô]) = vbYes Then
TbCliente.Delete
cmdAnterior_Click
End If
End If
End If
JABA 03/10/2009 17:28:54
#324315
vlw pessoal, muito obrigado pelas dicas, que Deus abençoe vcs.
Tópico encerrado , respostas não são mais permitidas