SELECIONA NO COMBO E ADICIONA NO LISTBOX

ALANTB 21/06/2011 18:00:27
#377450
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....???
MARCELO.TREZE 21/06/2011 20:45:04
#377456
Resposta escolhida
primeiro vc preencheria o combo

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
LIFECODE 21/06/2011 20:56:38
#377458
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
ALANTB 22/06/2011 00:08:54
#377472
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?/
ALANTB 22/06/2011 00:10:01
#377473
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)
MARCELO.TREZE 22/06/2011 06:14:25
#377475
posta o código do evento click do combo, pois o erro de sintax deve estar em outro lugar pois a query esta certa
ALANTB 22/06/2011 08:02:44
#377477
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
MARCELO.TREZE 22/06/2011 11:14:03
#377494
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

ALANTB 22/06/2011 12:35:52
#377512
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....
ROBIU 22/06/2011 13:20:05
#377518
Aqui está sua sub corrigida e o projeto em anexo:

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.
MARCELO.TREZE 22/06/2011 13:26:54
#377519
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

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

Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas