Ir para conteúdo
Fórum Script Brasil
  • 0

(RESOLVIDO)Duvidas em bd para carregar campos com ListBox


Fabin

Pergunta

e aew galera bom dia pra vocês!

to com a seguinte duvida refrente a carregar dados do banco em uma combobox

tenho um form de cadstro de instituiçao, uma de curso e ouro de estagiarios sendo que a de estagiario engloba instituiçao e curso..

então vamos la explicar o que estou tentando fazer..

o usuario irá cadstrar a instituiçao ( essa conseguir fazer sem problema)

o usuário escolhe a opçao de cadstrar curso, então é aberto o form neste form contem uma combox que vai listar as faculdades cadastradas o usuário vai escolher a instituiçao em que estuda e logo em seguida vai digitar o curso que faz ( este seria meu primeiro problema em relaçao a combobox para carregar as instituiçoes de ensino, e no meu relacionamento esta para ocódigo da afculdade tem como na hora que for visualizar não visualiza pelo codigo e sim pelo nome essa seria outra duvida??)

e no form de cadstro de estagiario o usuario quando for cadstra o usuario há duas combobox a de instiuiçao e a de curso, o usuario vai escolher a instituiçao e na combo do curso vai listar somente os cursos referente a instituiçao que o usuario escolheu na combo instituiçao entenderam???

são essas as minhas duvidas

se alguém souber como me ajudar ficarei muito agradecido

abraço a todos

valews

t+ :wacko:

Editado por Fabin
Evite postar títulos em caixa alta (Jonathan)
Link para o comentário
Compartilhar em outros sites

  • Respostas 51
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0
cara vai ser algo parecido com o que falei na hora de preencher duas combos, você terá que por um select no evento Change da Combo e o resultado na pesquisa irá preencher a propriedade caption da Label em questão.

a opk entendi mas tem o seguinte problema raphael

tenho mais de uma combo no form e no caso preencho a combo criando uma sub-rotina e carrego no form load do form

como tenho 3 como eu faria para preenchelas

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

as combos se não forem dependentes ( o seja padrão sempre terão o mesmo conteúdo, independente do que for selecionada em outra ), você pode carregar no form load sem problemas, usando um select para cada, agora se eles forem dependentes, você terá que usar esse select dentro no evento Change da combo "principal" e o preenchimento da label também ficaria neste evento.

Link para o comentário
Compartilhar em outros sites

  • 0
as combos se não forem dependentes ( o seja padrão sempre terão o mesmo conteúdo, independente do que for selecionada em outra ), você pode carregar no form load sem problemas, usando um select para cada, agora se eles forem dependentes, você terá que usar esse select dentro no evento Change da combo "principal" e o preenchimento da label também ficaria neste evento.

certo raphael

a questao d epreencher a scombos já consegui aqui

o que quero agora é o seguinte

tenho uma combo que lista as instituiçoes cadstradas e a outra cursos

no meu form curso como já expliquei pra voce o usuario escolhe a instituiçao na combo e cadstra o curso

quer que no meu form de cadastro de usuario

quando o usuario selecionar a instituiçao em uma combo liste na combo curso somente os cursos da instituiçao slecionada entendeu???

so que to quebrando a cabeça pra fazer isso... voce sabe como eu poderia fazer??

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

então, é isso que estou tentando te explicar... no evento Change da combo instituição, você irá fazer um select para preencher filtrando o nome da instituição ou o código.

1 - Na tabela de Cursos, o "vinculo" com a tabela de Instituição é pelo código da instituição, então o seu primeiro select será pra pegar o código da instituição.

"Select * From Instituicao where nome = '" & combo_inst.text &"'"

2 - Guardar o valor em uma variavél

cod = rs("codInst")

3 - Fazer o Select através do código encontrado

"Select * From Curso where condInst = Cod"

Coloquei apenas os Selects que você terá que usar.

Link para o comentário
Compartilhar em outros sites

  • 0
então, é isso que estou tentando te explicar... no evento Change da combo instituição, você irá fazer um select para preencher filtrando o nome da instituição ou o código.

1 - Na tabela de Cursos, o "vinculo" com a tabela de Instituição é pelo código da instituição, então o seu primeiro select será pra pegar o código da instituição.

"Select * From Instituicao where nome = '" & combo_inst.text &"'"

2 - Guardar o valor em uma variavél

cod = rs("codInst")

3 - Fazer o Select através do código encontrado

"Select * From Curso where condInst = Cod"

Coloquei apenas os Selects que você terá que usar.

raphael eu já criei uma sub-rotina para preencher a combo instituiçao no caso

seria eu melhor preencher ela usando o select que voce me falou

ou posso deixar a sub-rotina mesmo e fazer os outros selects que você passou??

e o change eu uso em qual como no da instituiçao ou do curso

valews brotehr

abraço

t+

Editado por Fabin
Link para o comentário
Compartilhar em outros sites

  • 0
a questão não é o select e sim onde ele fica, ele não pode ficar no "FORM_LOAD" ele tem que ficar na COMBO_CHANGE.

então raphael eu vou trabalhar somnete na change da combo insitutiçao ou vou ter que trabalhar tambem na combo do curso?

valews

baraço

t+

Editado por Fabin
Link para o comentário
Compartilhar em outros sites

  • 0
apenas na da instituição, quando ela for alterada a mesma faz um select e preenche o combo curso.

a ok

mas tentei preencher a combo como voce tinha me explicado mas não consegui

o que eu teria que fazer no código

Dim controle As Integer
controle = 1
If Not rsSeleçao.EOF Then
    Do While Not rsSeleçao.EOF
        cboInstituiçao.AddItem = rsSeleçao("Instituiçao")
        cboInstituiçao.Index = controle
        controle = controle + 1
        Loop
End If

usei este código que voce tinha me passado porem ficou em branco a combo instituiçao não listou as instituiçoes cadastradas

e o que faria depois??

valews raphael pela ajuda

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Peraí, estamos falando de 2 coisas diferentes...

1 - a Combo Instituição, essa sim tem que ser preenchida na Form_load, uma vez que o conteúdo dela tem que estar disponível para o preenchimento da outra Combo,

2 - o Preenchimento da Combo CURSO, é que tem que ficar na COMBO_CHANGE da combo Instituição

3 - O modo de preenchimento que você usa está correto e também pode ser usado neste caso, ele ficou branco porque você usou o preenchimento da combo dentro do evento dela mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0
Peraí, estamos falando de 2 coisas diferentes...

1 - a Combo Instituição, essa sim tem que ser preenchida na Form_load, uma vez que o conteúdo dela tem que estar disponível para o preenchimento da outra Combo,

2 - o Preenchimento da Combo CURSO, é que tem que ficar na COMBO_CHANGE da combo Instituição

3 - O modo de preenchimento que você usa está correto e também pode ser usado neste caso, ele ficou branco porque você usou o preenchimento da combo dentro do evento dela mesmo.

a certo...

então posso fazer o preenchimento da combo instituiçao normalmente pelo form load na change dela que irei fazer a combo curso ser preenchida não é???

então é isso raphael como eu vou preenncher a combo curso??

pode desconsiderer este metodo acima para preencher a combo instituiçao já utilizei o que ue estava antes

valews brother

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

agora que a combo Instituição está com os seus devidos valores, no Change dela você vai por o seguinte Código

Dim cnnComando As New ADODB.Command
dim codInst as integer

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao where nome = '" & Combo_Inst.text & "'"    'Aqui eu pego o código da Instituição, pois na tabela do Curso é a referência que temos
        Set rsSeleçao = .Execute
    End With


codInst = rsSelecao("nome")  'Aqui eu Guardo a variável para poder filtrar
 if rsSelecao.status = 1 then rsSelecao = close

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Nome FROM Curso where Codigo_inst = codInst    'Filtramos todos os registros que tem o Código da Instituição selecionada que temos.
        Set rsSeleçao = .Execute
    End With

    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        Combo_curso.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With

Agora é adaptar para suas tabelas e Combos,

Link para o comentário
Compartilhar em outros sites

  • 0
agora que a combo Instituição está com os seus devidos valores, no Change dela você vai por o seguinte Código

Dim cnnComando As New ADODB.Command


    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao where nome = '" & Combo_Inst.text & "'"    'Aqui eu pego o código da Instituição, pois na tabela do Curso é a referência que temos
        Set rsSeleçao = .Execute
    End With




    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        cboInst.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With

raphael no caso desse codigo no change vai preencher a combo curso não é isso??/

se for la no with do rsSeleçao cboInst não tinha que ser a cboCurso não??

ou tem mais uma etapa para preencher a combo do curso??

valews

brotehr

abraço

t=

Link para o comentário
Compartilhar em outros sites

  • 0
fabin, eu não tinha acabado de alterar o código e a pagina atualizou, já modifiquei... porem sua observação está correta.

a sim,, mas cade o código :rolleyes: ???

ou é somente fazer a alteração que coloquei em observaçao no tópico acima??

valews brother

abraço

t+

aqui raphael fiz as alteraçoes no codigo como está ai em baixo e tem que ser no evento click e não change

Private Sub cboInstituiçao_Click()
Dim cnnComando As New ADODB.Command
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao WHERE Nome = '" & cboInstituiçao.Text & "'"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
            If Not IsNull(rsSeleçao!Nome) Then
                cboCurso.AddItem rsSeleçao!Nome
            End If
            rsSeleçao.MoveNext
        Loop
    End With
End Sub

so que ao invés de listar os cursos da faculdade especifica no cboCurso lista as faculdade que coloquei no cboInstituiçao e a medida que vou torcando a instituiçao na cboInstituiçao vai adicinando a faculdade na cboCurso

este select no evento click não teria que ser na tabela de curso não???

acho que sim, e como seria??

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Fabin, como coloquei no código anterior, a consulta na tabela da instituição serve apenas pra você conseguir pegar o código da instituição, verifica o último código que lhe enviei,

o erro ao adicionar acontece pois você não está limpando a combo ao trocar o evento.

adiciona essa linha no seu código dentro o evento Click

cboCurso.clear

Link para o comentário
Compartilhar em outros sites

  • 0
Fabin, como coloquei no código anterior, a consulta na tabela da instituição serve apenas pra você conseguir pegar o código da instituição, verifica o último código que lhe enviei,

o erro ao adicionar acontece pois você não está limpando a combo ao trocar o evento.

adiciona essa linha no seu código dentro o evento Click

cboCurso.clear

raphael então seria esse código abaixo e no evento change mesmo??

e a observaçao que eu tinha colocado sobre cboCurso.additen lembra?? é para colocar cboCurso mesmo ou cboInst???

Dim cnnComando As New ADODB.Command

With cnnComando

.ActiveConnection = conexao

.CommandType = adCmdText

.CommandText = "SELECT * FROM Instituiçao where nome = '" & Combo_Inst.text & "'" 'Aqui eu pego o código da Instituição, pois na tabela do Curso é a referência que temos

Set rsSeleçao = .Execute

End With

With rsSeleçao

Do While Not rsSeleçao.EOF

If Not IsNull(rsSeleçao!Nome) Then

cboInst.AddItem rsSeleçao!Nome

End If

rsSeleçao.MoveNext

Loop

End With[/codedepois qual seria o proximo passo??

valews brother

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

este é o código.

agora que a combo Instituição está com os seus devidos valores, no Change dela você vai por o seguinte Código

Dim cnnComando As New ADODB.Command
dim codInst as integer

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao where nome = '" & Combo_Inst.text & "'"    'Aqui eu pego o código da Instituição, pois na tabela do Curso é a referência que temos
        Set rsSeleçao = .Execute
    End With


codInst = rsSelecao("nome")  'Aqui eu Guardo a variável para poder filtrar
 if rsSelecao.status = 1 then rsSelecao = close

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Nome FROM Curso where Codigo_inst = codInst    'Filtramos todos os registros que tem o Código da Instituição selecionada que temos.
        Set rsSeleçao = .Execute
    End With

    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        Combo_curso.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With

Agora é adaptar para suas tabelas e Combos,

você falou que não funcionou no change então coloca no Click, não esquece de colocar o combo.Clear

e é no cboInst_click

Link para o comentário
Compartilhar em outros sites

  • 0
este é o código.

agora que a combo Instituição está com os seus devidos valores, no Change dela você vai por o seguinte Código

Dim cnnComando As New ADODB.Command
dim codInst as integer

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao where nome = '" & Combo_Inst.text & "'"    'Aqui eu pego o código da Instituição, pois na tabela do Curso é a referência que temos
        Set rsSeleçao = .Execute
    End With


codInst = rsSelecao("nome")  'Aqui eu Guardo a variável para poder filtrar
 if rsSelecao.status = 1 then rsSelecao = close

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Nome FROM Curso where Codigo_inst = codInst    'Filtramos todos os registros que tem o Código da Instituição selecionada que temos.
        Set rsSeleçao = .Execute
    End With

    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        Combo_curso.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With
Agora é adaptar para suas tabelas e Combos,
você falou que não funcionou no change então coloca no Click, não esquece de colocar o combo.Clear e é no cboInst_click
ta ok raphael mas é o seguinte coloquei o codigo porem esta dando o erro
RUN-TIME ERROR 13

type mismatch
na linha
codInst = rsSelecao("nome")  'Aqui eu Guardo a variável para poder filtrar

o que pode ser??

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0
sim vai dar erro mesmo, declaramos o codInst como integer, e rsSelecao seria do tipo string, na verdade o código correto é:

codInst = rsSelecao("codInst")

raphael eu tenho que colocar o cboCurso.clear ou cboInstiotuiçao.clear??

e onde eu devo colocar?? no final do código???

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0
antes de preencher a combo.

1 - coloca o da cboInst no Form_Load

2 - coloca o da cboCurso no cboInst_click

raphael é o seguinte quando é clicado na cboCurso lista todos os cursos cadstrados ao invés de listar somente o de acordo com a faculdade escolhida....

sera que deve ser por falta da cboClear???

onde eu coloco essa cboClear?? e qual seria a cboClear??cboInstituiçao.clear ou cboCurso.clear??

vou mandar o codigo pra voce da uma olhada

Private Sub cboChefia_Click()
If cboChefia.Text = "" Then Exit Sub
rsSeleçao.Close
rsSeleçao.Open "SELECT MASP FROM Chefia WHERE Nome LIKE '" & cboChefia.Text & "';"
If Not rsSeleçao.EOF Then
    lblMASP.Caption = rsSeleçao.Fields(0)
End If
Set rs1 = Nothing
End Sub

Private Sub Preenche_Combo_chefia()
 Dim cnnComando As New ADODB.Command
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Nome FROM Chefia"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        cboChefia.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With
End Sub


Private Sub cboInstituiçao_Click()
Dim cnnComando As New ADODB.Command
Dim codInst As Integer
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao WHERE Nome = '" & cboInstituiçao.Text & "'"
        Set rsSeleçao = .Execute
    End With
    codInst = rsSeleçao("codInst")
    If rsSeleçao.Status = 1 Then rsSeleçao.Close
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT NomeCurso FROM Curso WHERE CodInst = codInst"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
            If Not IsNull(rsSeleçao!NomeCurso) Then
                cboCurso.AddItem rsSeleçao!NomeCurso
            End If
            rsSeleçao.MoveNext
        Loop
    End With
End Sub

Private Sub Form_Load()
Preenche_Combo_chefia
Preenche_combo_turno
Preenche_combo_instituiçao
End Sub

Private Sub Preenche_combo_turno()
 Dim cnnComando As New ADODB.Command
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Turno FROM Turno"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Turno) Then
        cboTurno.AddItem rsSeleçao!Turno
        End If
        rsSeleçao.MoveNext
        Loop
    End With
End Sub

Private Sub Preenche_combo_instituiçao()
 Dim cnnComando As New ADODB.Command
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Nome FROM Instituiçao"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        cboInstituiçao.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With
End Sub

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0
antes de preencher a combo.

1 - coloca o da cboInst no Form_Load

2 - coloca o da cboCurso no cboInst_click

raphael é o seguinte quando é clicado na cboCurso lista todos os cursos cadstrados ao invés de listar somente o de acordo com a faculdade escolhida....

sera que deve ser por falta da cboClear???

onde eu coloco essa cboClear?? e qual seria a cboClear??cboInstituiçao.clear ou cboCurso.clear??

vou mandar o codigo pra voce da uma olhada

isso cboClear = nomeCombo.Clear

você vai colocar onde está indicado no post anterior

Private Sub cboInstituiçao_Click()
Dim cnnComando As New ADODB.Command
Dim codInst As Integer

cboCurso.clear  ' <------- limpa a combo antes de preencher

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Instituiçao WHERE Nome = '" & cboInstituiçao.Text & "'"
        Set rsSeleçao = .Execute
    End With
    codInst = rsSeleçao("codInst")
    If rsSeleçao.Status = 1 Then rsSeleçao.Close

    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT NomeCurso FROM Curso WHERE CodInst = codInst"
        Set rsSeleçao = .Execute
    End With
   
 With rsSeleçao
        Do While Not rsSeleçao.EOF
            If Not IsNull(rsSeleçao!NomeCurso) Then
                cboCurso.AddItem rsSeleçao!NomeCurso
            End If
            rsSeleçao.MoveNext
        Loop
    End With
End Sub

Private Sub Form_Load()

Preenche_Combo_chefia
Preenche_combo_turno
Preenche_combo_instituiçao

End Sub

Private Sub Preenche_combo_turno()
Dim cnnComando As New ADODB.Command
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Turno FROM Turno"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Turno) Then
        cboTurno.AddItem rsSeleçao!Turno
        End If
        rsSeleçao.MoveNext
        Loop
    End With
End Sub

Private Sub Preenche_combo_instituiçao()
Dim cnnComando As New ADODB.Command

cboInstituicao.clear  ' <------- limpa a combo antes de preencher
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT Nome FROM Instituiçao"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        Do While Not rsSeleçao.EOF
        If Not IsNull(rsSeleçao!Nome) Then
        cboInstituiçao.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With
End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.




  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...