CRIAR UM VERIFICADOR COM CONDI?ÃO DE DUAS TABELAS

MILTONSILVA94 23/02/2016 19:27:37
#458115
[ô]lsql = [Ô]SELECT * FROM USUARIOS a inner join PERFIS b on a.descricao_perfil=b.descricao_perfil Where a.descricao_perfil=[Ô]

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...
ACCIOLLY 23/02/2016 23:48:35
#458132
Acho que seria um trabalho em vão. Não há necessidade de se fazer uma verificação porque ao tentar excluir um registro pai com registros filhos em outra tabela é gerado uma exception. Portanto essa sua mensagem você pode inserir normalmente em um try catch.
NICKOSOFT 24/02/2016 07:03:43
#458137
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
ACCIOLLY 24/02/2016 10:06:16
#458148
 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
OMAR2011 24/02/2016 12:00:50
#458152
Isto não funciona no Vb6 ACCIOLY.
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.
MILTONSILVA94 24/02/2016 12:44:19
#458154
Muito bem lembrado OMAR2011.
MILTONSILVA94 24/02/2016 13:13:51
#458156
O problema está que não consigo só criar a lógica para o segundo IF conforme está claro 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

// 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
ACCIOLLY 24/02/2016 14:27:52
#458161
Em outro tópico eu falei que o que importa mais não é a linguagem em si, e sim a lógica. O que é um Try Catch? Um tratamento de erro! Como que é feito um tratamento de erro no VB6? On Error GoTo... é a mesma coisa do Try Catch
Mas faça do jeito mais trabalhoso se preferir...
MILTONSILVA94 24/02/2016 18:22:43
#458179
Montei o select abaixo porém na conexão com o banco, ocorre erro.


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
OMAR2011 24/02/2016 23:13:39
#458183
Isto é Ado.net.
Não funciona no vb6.
Se alguém indicou isto é Maluco.
Página 2 de 4 [36 registro(s)]
Tópico encerrado , respostas não são mais permitidas