CRIAR UM VERIFICADOR COM CONDI?ÃO DE DUAS TABELAS
A lógica é a seguinte:
1º - Usuário vai selecionar o perfil no listview
2º - Usuário vai no botão excluir
3º - Sistema precisa entender se já existe algum usuário para aquele perfil, e se sim vai emitir mensagem bloqueando a exclusão
4º - Caso não exista nenhum usuário cadastrado com aquele perfil, continua as rotinas seguintes
Assim por diante...
Citação::
Exatamente, ele não exclui diretamente do banco o registro quando está relacionado ao registros filho.
Porém no meu código está com a mensagem dizendo que excluiu, e quero criar uma condição justamente para isso, antes de chegar na mensagem de [ô]Registro excluÃdo[ô], para ele não permitir isso: Veja minha rotina abaixo:
Private Sub RotinaExcluir()
Dim lsql As String
If lvwLista.ListItems.Count = 0 Then
MensagemDoSistema [Ô]Erro! Selecione um registro para fazer a exclusão![Ô]
Exit Sub
End If
If MsgBox([Ô]Excluir o registro Nº [ô][Ô] & lvwLista.SelectedItem & [Ô][ô]?[Ô], vbQuestion + vbYesNo, [Ô]Exclusão - Sistema Integrado :: Versão: [Ô] & App.Major & [Ô].[Ô] & App.Minor & [Ô].[Ô] & App.Revision) = vbNo Then
Exit Sub
else
lsql = [Ô]DELETE FROM PERFIS WHERE id_perfil=[Ô]
lsql = lsql & lvwLista.SelectedItem
gBDSistemaIntegrado.Execute lsql
[ô]MsgBox [Ô]Registro removido![Ô]
lvwLista.ListItems.Remove (lvwLista.SelectedItem.Index)
End If
End Sub
tenta assim, não ta em código, tentei mudar no texto.....de qq forma essa condição da exclusão esta incompleta
Try
[ô]Abaixo desta linha coloque o comando de exclusão[ô]
MessageBox.Show([Ô]Registro excluido com sucesso![Ô])
Catch ex As Exception
MessageBox.Show([Ô]Erro ao tentar excluir registro[Ô] & ex.Message)
End Try
Como falei acima, ao tentar excluir um registro pai com registros filhos, se o relacionamento no banco for bem feito, será gerado uma exception (erro). Em caso de erro será mostrada a mensagem de erro. Se o registro pai não tiver registros filhos, não será gerado um erro. Portanto mostrará a mensagem de [Ô]Registro excluido com sucesso![Ô]. Fica a dica
Você não atentou para um detalhe.
Na verdade é VB6, lembro que selecionei essa opção no tópico...
O mesmo perfil pode sim ser usado para mais de um usuário. por exemplo, tenho vários usuários que podem ter o mesmo perfil.
Banco de Dados: ACESS, sendo que a tabela [ô]perfis[ô] e [ô]usuarios[ô] estão relacionadas dentro do Banco.
Private Sub RotinaExcluir()
Dim lsql As String
If lvwLista.ListItems.Count = 0 Then
MensagemDoSistema [Ô]Erro! Selecione um registro para fazer a exclusão![Ô]
Exit Sub
End If
If
// Aqui iria o código para validar com um SELECT na minha tabela de Usuarios se o registro de Perfil selecionado possui algum registro, e caso tenha já pára por aqui a rotina e emito a mensagem [Ô]Erro ao tentar excluir registro![Ô].
End If
If MsgBox([Ô]Excluir o registro Nº [ô][Ô] & lvwLista.SelectedItem & [Ô][ô]?[Ô], vbQuestion + vbYesNo, [Ô]Exclusão - Sistema Integrado :: Versão: [Ô] & App.Major & [Ô].[Ô] & App.Minor & [Ô].[Ô] & App.Revision) = vbNo Then
Exit Sub
lsql = [Ô]DELETE FROM PERFIS WHERE id_perfil=[Ô]
lsql = lsql & lvwLista.SelectedItem
gBDSistemaIntegrado.Execute lsql
[ô]MsgBox [Ô]Registro removido![Ô]
lvwLista.ListItems.Remove (lvwLista.SelectedItem.Index)
End If
End Sub
Mas faça do jeito mais trabalhoso se preferir...
Private Sub RotinaExcluir()
Dim con As New OleDbConnection([Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BDSistemaIntegrado.mdb[Ô])
Dim com As OleDbCommand = Nothing
Dim queryResult As Integer
Dim lsql As String
If lvwLista.ListItems.Count = 0 Then
MensagemDoSistema [Ô]Erro! Selecione um registro para fazer a exclusão![Ô]
Exit Sub
End If
con.Open()
com = New OleDbCommand([Ô]SELECT COUNT(*) FROM Usuarios WHERE id_perfil =[ô][Ô] & lvwLista.SelectedItem & [Ô][ô][Ô], con)
queryResult = com.ExecuteScalar()
con.Close()
If queryResult <> 0 Then
MsgBox [Ô]Registro não pode ser excluÃdo![Ô]
Exit Sub
End If
End Sub
Não funciona no vb6.
Se alguém indicou isto é Maluco.