CRIAR UM VERIFICADOR COM CONDI?ÃO DE DUAS TABELAS

MILTONSILVA94 21/02/2016 22:56:15
#458006
Tenho duas tabelas: Perfis e Usuários, que tem a mesma coluna [ô]descricao_perfil[ô], montei uma rotina para exclusão do perfil porém se o mesmo tiver algum usuário cadastrado para o determinado registro de perfil não pode permitir a exclusão do mesmo. Não estou conseguindo criar o IF para esta condição ficar correta.
Se alguém puder me ajudar...
KURTGU 21/02/2016 23:13:09
#458007
Posta foto da sua tela se possível...
MILTONSILVA94 21/02/2016 23:30:18
#458010
Print
KERPLUNK 22/02/2016 00:08:06
#458012
Este tipo de controle é feito com chaves primárias e estrangeiras e não com cláusulas If...
MILTONSILVA94 22/02/2016 07:05:51
#458015
De algum jeito devo conseguir criar uma condição...
NILSONTRES 22/02/2016 09:52:37
#458020
é vb6 ou .net ?
O Tópico esta para .net, mas a imagem mostra vb6.
PLUGSOFTSM 22/02/2016 10:59:26
#458023
Me responde uma coisa.... O mesmo perfil pode ser usado para mais de um usuário?
Qual Banco de dados vc usa?
Provavelmente isso pode ser resolvido somente com relacionamentos, dependendo do bd que vc usa....
Precisaria que me passasse a estrutura das duas tabelas, juntamente com as chaves de cada uma...
MILTONSILVA94 22/02/2016 11:23:11
#458024
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.
PLUGSOFTSM 23/02/2016 10:11:26
#458077
Olha... Vc tem dois modos de fazer....
1 - Habilitar a opção impor integridade referencial no relacionamento... isso vai impedir a exclusão do registro pai caso exista registros filhos

2 - Criar uma rotina para verificar manualmente a existência de registros filho... (Não recomendado pois diminui o desempenho do sistema, executando tarefas não necessárias)
Nesse caso poderia executar uma consulta assim:

Imagina duas tabelas
Vendas ItensVendas
----------------------------------------------------------
CodVnd codvnd
data mercadoria
qtde
valor

Select Count(*) as Qtd from ItensVenda where CodVnd = [valor de vendas.codvnd]

se Qt > 0, existem registros, caso = 0... não existe

adequa o exemplo ao teu caso

Espero ter ajudado
MILTONSILVA94 23/02/2016 12:52:59
#458089
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
End If

lsql = [Ô]DELETE FROM PERFIS WHERE id_perfil=[Ô]
lsql = lsql & lvwLista.SelectedItem

gBDSistemaIntegrado.Execute lsql
[ô]MsgBox [Ô]Registro removido![Ô]

lvwLista.ListItems.Remove (lvwLista.SelectedItem.Index)
End Sub
ACCIOLLY 23/02/2016 13:13:57
#458091
Resposta escolhida
Faça isso apenas utilizando um SQL simples:
Como vc fez uma referência no access, vc só poderá excluir um perfil se não existirem mais usuários relacionados a ele correto? Ou seja, ou vc exclui todos os usuários ou muda o perfil. Portanto primeiramemte exclua ou altere todos os dados da tabela usuários relacionados com a tabela perfil:
  delete from usuários where perfil = [ô]recepcionista[ô] 

Ou
  update usuários set perfil = [ô]outro perfil[ô] where perfil = [ô]recepcionista[ô] 

Depois é só excluir o perfil como você precisa.

E como o kerplunk falou antes dê preferência em relacionar apenas chaves primárias. E que essas chaves primárias sejam preferencialmente numéricas. Porque querendo ou não as máquinas respondem melhor com números.
Página 1 de 4 [36 registro(s)]
Tópico encerrado , respostas não são mais permitidas