CRIAR UM VERIFICADOR COM CONDI?ÃO DE DUAS TABELAS

ACCIOLLY 26/02/2016 16:13:32
#458267
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

OMAR2011 26/02/2016 16:25:21
#458269
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
MILTONSILVA94 27/02/2016 01:00:19
#458282
Olha a linha que dá o erro.
OMAR2011 27/02/2016 08:17:41
#458283
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.
ACCIOLLY 27/02/2016 09:01:00
#458285
é, 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á
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 & [Ô][ô][Ô]

MILTONSILVA94 27/02/2016 13:43:22
#458293
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!
Página 4 de 4 [36 registro(s)]
Tópico encerrado , respostas não são mais permitidas