SELECIONA NO COMBO E ADICIONA NO LISTBOX
Olá pessoal, tenho um banco ACCESS : TBFUNC - codFunc, Nome que se relaciona com TBCONTRATO: codContrato,codSetor, codFunc que se relaciona com TBSETOR: codSetor, Descricao.
Em um form gostaria de inserir um combobox com a descricao dos SETORES e abaixo um ListBox.Como se faz para que o usuario ao selecionar um setor (setor de Produção, ex) no evento click do combo carregaria o listbox somente com o nomes d efuncionarios cadastrados nesse setor selecionado????( VB6)
PS. Pergunta básica: como inserir figuras nos tópicos: ex: o print da estrutura de uma tabela....???
Em um form gostaria de inserir um combobox com a descricao dos SETORES e abaixo um ListBox.Como se faz para que o usuario ao selecionar um setor (setor de Produção, ex) no evento click do combo carregaria o listbox somente com o nomes d efuncionarios cadastrados nesse setor selecionado????( VB6)
PS. Pergunta básica: como inserir figuras nos tópicos: ex: o print da estrutura de uma tabela....???
primeiro vc preencheria o combo
para listar seria assim
bom fiz meio que as cegas teste para ver se funciona esta é a base da coisa
Set RSsetor = Con.Execute([Ô]select * from tbsetor[Ô])
Do While Not RSsetor.EOF
Combosetor.AddItem RSsetor!Descricao
Combosetor.ItemData(Combosetor.NewIndex) = RSsetor!codsetor
RSsetor.MoveNext
Loop
para listar seria assim
Private Sub Combosetor_click()
Dim sSQL As String
sSQL = [Ô]Select F.codfunc,F.nome,C.codContrato,C.codSetor, C.codFunc,S.codsetor,S.descricao from TBFUNC F inner join (TBCONTRATO C inner join TBSETOR S ON C.codsetor = S.codsetor) On F.codfunc = C.codfunc where S.codsetor = [Ô] & combosetor.ItemData(combosetor.ListIndex)
Set RSfuncionarios = Con.Execute(sSQL)
Do While Not RSfuncionarios.EOF
Listfuncionarios.AddItem RSfuncionarios!nome
RSfuncionarios.MoveNext
Loop
End Sub
bom fiz meio que as cegas teste para ver se funciona esta é a base da coisa
boa noite amogo segue abaixo um exemplo usando datacontrol veja se isso lhe ajuda..
[ô]** Para adicionar os dados no combo
Private Sub Form_Activate()
[ô]** Ignora possiveis erros e continua (atenção com esse recurso pois se ocorrer qualquer erro inesperado ele ignora e continua podendo inclusive não registrar nada)
On Error Resume Next
With Data1.Recordset
[ô]** Move para o primeiro registro
.MoveFirst
Do While True [ô]** Inicia o laço
[ô]** Adiciona o registo encontrado no combo
Combo1.AddItem !NomeCampo
[ô]** Move para o procimo registro
.MoveNext
[ô] ** verifica se chegou ao final dos registros, e se chegou sai do laço
If .EOF Then Exit Do
[ô]** reiniocia o laço
Loop
End With
End Sub
[ô]** Faz as concultas e adiciona o conteúdo no list
Private Sub Combo1_Click()
[ô]** Faz um select na tabela principal com o valor obtido no combo
Data1.RecordSource = [Ô]select * from NomeTabela where NomeCampo = [ô][Ô] & Combo1.Text & [Ô][ô][Ô]
[ô]** Atualiza a tabela
Data1.Refresh
[ô]** Faz um select na tabela secundaria com o valor da tabela principal
Data2.RecordSource = [Ô]select * from NomeTabela where NomeCampo = [Ô] & Data1.Recordset!NomeCampo
[ô]** Atualiza a tabela
Data2.Refresh
[ô]** Ignora possiveis erros e continua (atenção com esse recurso pois se ocorrer qualquer erro inesperado ele ignora e continua podendo inclusive não registrar nada)
On Error Resume Next
With Data2.Recordset
[ô]** Move para o primeiro registro
.MoveFirst
Do While True [ô]** Inicia o laço
[ô]** Adiciona o registo encontrado no list
List1.AddItem !NomeCampo
[ô]** Move para o procimo registro
.MoveNext
[ô] ** verifica se chegou ao final dos registros, e se chegou sai do laço
If .EOF Then Exit Do
[ô]** reiniocia o laço
Loop
End With
End Sub
[ô]** Para adicionar os dados no combo
Private Sub Form_Activate()
[ô]** Ignora possiveis erros e continua (atenção com esse recurso pois se ocorrer qualquer erro inesperado ele ignora e continua podendo inclusive não registrar nada)
On Error Resume Next
With Data1.Recordset
[ô]** Move para o primeiro registro
.MoveFirst
Do While True [ô]** Inicia o laço
[ô]** Adiciona o registo encontrado no combo
Combo1.AddItem !NomeCampo
[ô]** Move para o procimo registro
.MoveNext
[ô] ** verifica se chegou ao final dos registros, e se chegou sai do laço
If .EOF Then Exit Do
[ô]** reiniocia o laço
Loop
End With
End Sub
[ô]** Faz as concultas e adiciona o conteúdo no list
Private Sub Combo1_Click()
[ô]** Faz um select na tabela principal com o valor obtido no combo
Data1.RecordSource = [Ô]select * from NomeTabela where NomeCampo = [ô][Ô] & Combo1.Text & [Ô][ô][Ô]
[ô]** Atualiza a tabela
Data1.Refresh
[ô]** Faz um select na tabela secundaria com o valor da tabela principal
Data2.RecordSource = [Ô]select * from NomeTabela where NomeCampo = [Ô] & Data1.Recordset!NomeCampo
[ô]** Atualiza a tabela
Data2.Refresh
[ô]** Ignora possiveis erros e continua (atenção com esse recurso pois se ocorrer qualquer erro inesperado ele ignora e continua podendo inclusive não registrar nada)
On Error Resume Next
With Data2.Recordset
[ô]** Move para o primeiro registro
.MoveFirst
Do While True [ô]** Inicia o laço
[ô]** Adiciona o registo encontrado no list
List1.AddItem !NomeCampo
[ô]** Move para o procimo registro
.MoveNext
[ô] ** verifica se chegou ao final dos registros, e se chegou sai do laço
If .EOF Then Exit Do
[ô]** reiniocia o laço
Loop
End With
End Sub
MARCELO-TREZE, fiz umas adaptacoes na query acima, mas me dá erro de operador faltando, aonde???o combo carrega beleza, no evento click ele identifica o codigo do setor (index), mas da erro de sintaxe antes de carregar o list....o que falta na query?/
esqueci segue a query com as adaptações que fiz:
sSQL = [Ô]SELECT tbFunc.codFunc,tbFunc.Nome,tbContrato.codContrato,tbContrato.codSetor,tbContrato.codFunc,tbSetor.codSetor,tbSetor.Descricao [Ô] & _
[Ô]FROM tbSetor INNER JOIN (tbFunc INNER JOIN tbContrato ON tbFunc.codFunc = tbContrato.codFunc) ON tbSetor.codSetor = tbContrato.codSetor [Ô] & _
[Ô]WHERE tbSetor.codsetor= [Ô] & ComboSetor.ItemData(ComboSetor.ListIndex)
sSQL = [Ô]SELECT tbFunc.codFunc,tbFunc.Nome,tbContrato.codContrato,tbContrato.codSetor,tbContrato.codFunc,tbSetor.codSetor,tbSetor.Descricao [Ô] & _
[Ô]FROM tbSetor INNER JOIN (tbFunc INNER JOIN tbContrato ON tbFunc.codFunc = tbContrato.codFunc) ON tbSetor.codSetor = tbContrato.codSetor [Ô] & _
[Ô]WHERE tbSetor.codsetor= [Ô] & ComboSetor.ItemData(ComboSetor.ListIndex)
posta o código do evento click do combo, pois o erro de sintax deve estar em outro lugar pois a query esta certa
segue o codigo:
Private Sub Combosetor_click()
Dim sSQL As String
sSQL = [Ô]SELECT tbFunc.codFunc, tbFunc.Nome, tbContrato.codContrato, tbContrato.codSetor, tbContrato.codFunc, tbSetor.codSetor, tbSetor.Descricao[Ô] & _
[Ô]FROM tbSetor INNER JOIN (tbFunc INNER JOIN tbContrato ON tbFunc.codFunc = tbContrato.codFunc) ON tbSetor.codSetor = tbContrato.codSetor[Ô] & _
[Ô]WHERE tbSetor.codsetor =[Ô] & ComboSetor.ItemData(ComboSetor.ListIndex)
Set rs = conn.Execute(sSQL)
Do While Not rs.EOF
List1.AddItem rs!nome
rs.MoveNext
Loop
End Sub
Private Sub Combosetor_click()
Dim sSQL As String
sSQL = [Ô]SELECT tbFunc.codFunc, tbFunc.Nome, tbContrato.codContrato, tbContrato.codSetor, tbContrato.codFunc, tbSetor.codSetor, tbSetor.Descricao[Ô] & _
[Ô]FROM tbSetor INNER JOIN (tbFunc INNER JOIN tbContrato ON tbFunc.codFunc = tbContrato.codFunc) ON tbSetor.codSetor = tbContrato.codSetor[Ô] & _
[Ô]WHERE tbSetor.codsetor =[Ô] & ComboSetor.ItemData(ComboSetor.ListIndex)
Set rs = conn.Execute(sSQL)
Do While Not rs.EOF
List1.AddItem rs!nome
rs.MoveNext
Loop
End Sub
faça esta pequena alteração
Set rs = conn.Execute(sSQL)
Do While Not rs.EOF
[txt-color=#e80000]List1.AddItem rs.Field([Ô]tbFunc.nome[Ô])[/txt-color]rs.MoveNext
Loop
Set rs = conn.Execute(sSQL)
Do While Not rs.EOF
[txt-color=#e80000]List1.AddItem rs.Field([Ô]tbFunc.nome[Ô])[/txt-color]rs.MoveNext
Loop
Continua dando erro de sintaxe: operador faltando. Segue o projeto. No menu MANUTENÇÃO - FILTRA COMBO (Form2) é onde estou quebrando a cabeça. Favor quem puder dar uma olhada....
Aqui está sua sub corrigida e o projeto em anexo:
Da o print e cola no paint ou qualquer editor de imagem. Recorta para reduzir o tamanho e salva com o formato .jpg e anexa.
Private Sub mostra()
Dim sql As String
sql = [Ô]SELECT tbFunc.cod, tbFunc.Nome, tbContrato.codContrato, tbContrato.codSetor, [Ô]
sql = sql & [Ô]tbContrato.codFunc, tbSetor.codSetor, tbSetor.Descricao [Ô]
sql = sql & [Ô]FROM tbSetor INNER JOIN (tbFunc INNER JOIN tbContrato ON tbFunc.cod = tbContrato.codFunc) [Ô]
sql = sql & [Ô]ON tbSetor.codSetor = tbContrato.codSetor [Ô]
sql = sql & [Ô]WHERE tbSetor.codsetor =[Ô] & cmbBox1.ItemData(cmbBox1.ListIndex)
rs1.Open sql, conn, adOpenStatic
lstBox1.Clear
Do While Not rs1.EOF
lstBox1.AddItem rs1!Nome
rs1.MoveNext
Loop
rs1.Close
End Sub
Citação:PS. Pergunta básica: como inserir figuras nos tópicos: ex: o print da estrutura de uma tabela....???
Da o print e cola no paint ou qualquer editor de imagem. Recorta para reduzir o tamanho e salva com o formato .jpg e anexa.
encontrei o problema
na estrutura da tbFunc existe [txt-color=#e80000]Cod[/txt-color], nome
e na query vc passa como [txt-color=#0000f0]codFunc[/txt-color] a solução foi mudar para codFunc na tabela, e manter a query a mesma coisa
e a sub ficou assim e funcionou
ps: na query faltava um espaço antes do FROM e antes do WHERE
na estrutura da tbFunc existe [txt-color=#e80000]Cod[/txt-color], nome
e na query vc passa como [txt-color=#0000f0]codFunc[/txt-color] a solução foi mudar para codFunc na tabela, e manter a query a mesma coisa
e a sub ficou assim e funcionou
Private Sub mostra()
Dim sql As String
sql = [Ô]SELECT tbFunc.codFunc, tbFunc.Nome, tbContrato.codContrato, tbContrato.codSetor, tbContrato.codFunc, tbSetor.codSetor, tbSetor.Descricao[Ô] & _
[Ô] FROM tbSetor INNER JOIN (tbFunc INNER JOIN tbContrato ON tbFunc.codFunc = tbContrato.codFunc) ON tbSetor.codSetor = tbContrato.codSetor[Ô] & _
[Ô] WHERE tbSetor.codsetor =[Ô] & cmbBox1.ItemData(cmbBox1.ListIndex)
rs1.Open sql, conn, adOpenStatic
lstBox1.Clear
Do While Not rs1.EOF
lstBox1.AddItem rs1!Nome
rs1.MoveNext
Loop
rs1.Close
End Sub
ps: na query faltava um espaço antes do FROM e antes do WHERE
Tópico encerrado , respostas não são mais permitidas