CRIAR UM VERIFICADOR COM CONDI?ÃO DE DUAS TABELAS
Private Sub RotinaExcluir()
dbname = App.Path & [Ô]\BDSistemaIntegrado.mdb[Ô]
Dim lsql As String
Dim lTBPerfis As Recordset
Set db = DBEngine.Workspaces(0).OpenDatabase(dbname)
Dim perfil As String
if IvwLista.ListItems.Count > 0 Then
perfil = IvwLista.SelectedItem
Set rs = db.OpenRecordset([Ô]SELECT descricao_perfil FROM usuarios WHERE cod_Perfil LIKE [ô][Ô] & perfil & [Ô][ô][Ô])
if rs.RecordCount > 0 Then
MsgBox [Ô]Erro! Existem usuários cadastrados com este perfil![Ô]
else
lsql = [Ô]DELETE FROM PERFIS WHERE id_perfil=[Ô]
lsql = lsql & lvwLista.SelectedItem
gBDSistemaIntegrado.Execute lsql
MsgBox [Ô]Registro removido![Ô]
end if
else
MsgBox [Ô]Não existem registros na lista de Perfis[Ô]
end if
End Sub
Olhe isto.
Listview preenchido com dados da tabela Perfil.
Os textbox é para verficar registro das tabelas.
Private Sub lvNF_DblClick()
Text4.Text = lvNF.SelectedItem
AbreBanco
Dim RsnF As ADODB.Recordset
Dim sSQL As String
Dim i As Long
sSQL = [Ô]SELECT codperfil as tot From usuarios where Codperfil = [Ô] & lvNF.SelectedItem
Set RsnF = db.Execute(sSQL)
If RsnF.EOF And RsnF.BOF Then
Else
i = [Ô][Ô] & RsnF!tot
Text3.Text = i
End If
Text4.Text = lvNF.SelectedItem
If i = Val(lvNF.SelectedItem) Then
MsgBox [Ô]Este registro está cadastrado[Ô]
Else
If MsgBox([Ô]Excluir o registro Nº [ô][Ô] & lvNF.SelectedItem & [Ô][ô]?[Ô], vbQuestion + vbYesNo, [Ô]Exclusão - Sistema Integrado :: Versão: [Ô] & App.Major & [Ô].[Ô] & App.Minor & [Ô].[Ô] & App.Revision) = vbYes Then
sSQL = [Ô]Delete * From Perfil Where Cod_perfil = [Ô] & lvNF.SelectedItem
db.Execute sSQL
MsgBox [Ô] excluido[Ô]
Else
MsgBox [Ô]não excluido[Ô]
End If
End If
db.Close
End Sub
Listview preenchido com dados da tabela Perfil.
Os textbox é para verficar registro das tabelas.
Private Sub lvNF_DblClick()
Text4.Text = lvNF.SelectedItem
AbreBanco
Dim RsnF As ADODB.Recordset
Dim sSQL As String
Dim i As Long
sSQL = [Ô]SELECT codperfil as tot From usuarios where Codperfil = [Ô] & lvNF.SelectedItem
Set RsnF = db.Execute(sSQL)
If RsnF.EOF And RsnF.BOF Then
Else
i = [Ô][Ô] & RsnF!tot
Text3.Text = i
End If
Text4.Text = lvNF.SelectedItem
If i = Val(lvNF.SelectedItem) Then
MsgBox [Ô]Este registro está cadastrado[Ô]
Else
If MsgBox([Ô]Excluir o registro Nº [ô][Ô] & lvNF.SelectedItem & [Ô][ô]?[Ô], vbQuestion + vbYesNo, [Ô]Exclusão - Sistema Integrado :: Versão: [Ô] & App.Major & [Ô].[Ô] & App.Minor & [Ô].[Ô] & App.Revision) = vbYes Then
sSQL = [Ô]Delete * From Perfil Where Cod_perfil = [Ô] & lvNF.SelectedItem
db.Execute sSQL
MsgBox [Ô] excluido[Ô]
Else
MsgBox [Ô]não excluido[Ô]
End If
End If
db.Close
End Sub
Olha a linha que dá o erro.
Na sua tabela de usuários não tem um campo [txt-color=#e80000]cod_perfil [/txt-color]e sim [txt-color=#007100]id_perfil.[/txt-color]
Sua declaração da variável.
Dim perfil as string e sim Dim perfil as long.
Sua declaração da variável.
Dim perfil as string e sim Dim perfil as long.
é, agora olhando sua tabela no access: O erro acontece porque ele não está reconhecendo o sql como um parametro aceitável. Isso vai depender muito a forma como você está acessando o banco: ADODB ou DAO. E Além de ter que saber por qual campo você deve procurar como o OMAR falou, você também deve saber o que a propriedade SelectedItem do Listview te retorna (id_Perfil ou descricao_Perfil).
Se for id_Perfil, sua sql será
Se for descricao_Perfil sua sql será
A variável perfil coloquei do tipo String porque ela é concatenada na sql que também é uma.
No mais é isso. Na lógica o código tá bom, só trabalhar nesse sql, descobrindo antes o que o SelectedItem te retorna. Coloca uma msgbox mostrando o que retorna ele que você vai saber...
AH e dependendo o que retorna também deve ser alterado o seu sql de exclusão viu!
Se for id_Perfil, sua sql será
Se for descricao_Perfil sua sql será
Se for id_Perfil, sua sql será
Set rs = db.OpenRecordset([Ô]SELECT id_Usuario FROM usuarios WHERE id_Perfil = [Ô] & perfil)
Se for descricao_Perfil sua sql será
Set rs = db.OpenRecordset([Ô]SELECT id_Usuario FROM usuarios WHERE descricao_Perfil LIKE [ô][Ô] & perfil & [Ô][ô][Ô])
A variável perfil coloquei do tipo String porque ela é concatenada na sql que também é uma.
No mais é isso. Na lógica o código tá bom, só trabalhar nesse sql, descobrindo antes o que o SelectedItem te retorna. Coloca uma msgbox mostrando o que retorna ele que você vai saber...
AH e dependendo o que retorna também deve ser alterado o seu sql de exclusão viu!
Se for id_Perfil, sua sql será
lsql = [Ô]DELETE FROM perfis WHERE id_Perfil = [Ô] & perfil
Se for descricao_Perfil sua sql será
lsql = [Ô]DELETE FROM perfis WHERE descricao_Perfil LIKE [ô][Ô] & perfil & [Ô][ô][Ô]
Excelente ACCIOLLY & OMAR! Faltava mesmo algumas coisas, sendo que o que ele retorna no listview é o id_perfil.
Estou colocando abaixo a rotina que realmente deu certo, e acredito que vai servir para muitos:
Private Sub RotinaExcluir()
dbname = App.Path & [Ô]\BDSistemaIntegrado.mdb[Ô]
Dim lsql As String
Dim lTBPerfis As Recordset
Set db = DBEngine.Workspaces(0).OpenDatabase(dbname)
Dim perfil As Long
If lvwLista.ListItems.Count = 0 Then
MensagemDoSistema [Ô]Erro! Selecione um registro para fazer a exclusão![Ô]
txtDescricaoPerfil.Text = [Ô][Ô]
txtDescricaoPerfil.SetFocus
Exit Sub
End If
If lvwLista.ListItems.Count > 0 Then
perfil = lvwLista.SelectedItem
Set rs = db.OpenRecordset([Ô]SELECT id_Usuario FROM USUARIOS WHERE id_Perfil = [Ô] & perfil)
If rs.RecordCount > 0 Then
MensagemDoSistema [Ô]Perfil selecionado está vinculado a cadastro de usuário, não é possÃvel excluir![Ô]
Else
lsql = [Ô]DELETE FROM PERFIS WHERE id_perfil=[Ô]
lsql = lsql & lvwLista.SelectedItem
gBDSistemaIntegrado.Execute lsql
If MsgBox([Ô]Confirma a exclusão do registro?[Ô], vbQuestion + vbYesNo, [Ô]Confirmar - Sistema Integrado :: Versão: [Ô] & App.Major & [Ô].[Ô] & App.Minor & [Ô].[Ô] & App.Revision) = vbNo Then
Exit Sub
End If
lvwLista.ListItems.Remove (lvwLista.SelectedItem.Index)
txtDescricaoPerfil.Text = [Ô][Ô]
lvwLista.ListItems.Clear
lblContador.Caption = [Ô][Ô]
txtDescricaoPerfil.SetFocus
End If
End If
End Sub
Fica aqui meu agradecimento e muito obrigado!
Estou colocando abaixo a rotina que realmente deu certo, e acredito que vai servir para muitos:
Private Sub RotinaExcluir()
dbname = App.Path & [Ô]\BDSistemaIntegrado.mdb[Ô]
Dim lsql As String
Dim lTBPerfis As Recordset
Set db = DBEngine.Workspaces(0).OpenDatabase(dbname)
Dim perfil As Long
If lvwLista.ListItems.Count = 0 Then
MensagemDoSistema [Ô]Erro! Selecione um registro para fazer a exclusão![Ô]
txtDescricaoPerfil.Text = [Ô][Ô]
txtDescricaoPerfil.SetFocus
Exit Sub
End If
If lvwLista.ListItems.Count > 0 Then
perfil = lvwLista.SelectedItem
Set rs = db.OpenRecordset([Ô]SELECT id_Usuario FROM USUARIOS WHERE id_Perfil = [Ô] & perfil)
If rs.RecordCount > 0 Then
MensagemDoSistema [Ô]Perfil selecionado está vinculado a cadastro de usuário, não é possÃvel excluir![Ô]
Else
lsql = [Ô]DELETE FROM PERFIS WHERE id_perfil=[Ô]
lsql = lsql & lvwLista.SelectedItem
gBDSistemaIntegrado.Execute lsql
If MsgBox([Ô]Confirma a exclusão do registro?[Ô], vbQuestion + vbYesNo, [Ô]Confirmar - Sistema Integrado :: Versão: [Ô] & App.Major & [Ô].[Ô] & App.Minor & [Ô].[Ô] & App.Revision) = vbNo Then
Exit Sub
End If
lvwLista.ListItems.Remove (lvwLista.SelectedItem.Index)
txtDescricaoPerfil.Text = [Ô][Ô]
lvwLista.ListItems.Clear
lblContador.Caption = [Ô][Ô]
txtDescricaoPerfil.SetFocus
End If
End If
End Sub
Fica aqui meu agradecimento e muito obrigado!
Tópico encerrado , respostas não são mais permitidas