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

na hora que for preencher a combo, você vai acessar a tabela onde está o nome das instituições, após isso você terá que ir adicionando ao item, junto com um incremento que você terá que declarar para controle, seria mais ou menos assim, eu vou usar o RS como se fosse meu Recordset.

Seria algo +/- assim:

Dim controle As Integer

controle = 1
If Not rs.EOF Then
     Do While Not rs.EOF
        ComboBox1.AddItem = rs("INSTITUICAO")
        ComboBox1.Index = controle
        controle = controle + 1
    Loop
End If

Link para o comentário
Compartilhar em outros sites

  • 0
na hora que for preencher a combo, você vai acessar a tabela onde está o nome das instituições, após isso você terá que ir adicionando ao item, junto com um incremento que você terá que declarar para controle, seria mais ou menos assim, eu vou usar o RS como se fosse meu Recordset.

Seria algo +/- assim:

Dim controle As Integer

controle = 1
If Not rs.EOF Then
     Do While Not rs.EOF
        ComboBox1.AddItem = rs("INSTITUICAO")
        ComboBox1.Index = controle
        controle = controle + 1
    Loop
End If

e aew raphael blzinha??

aqui isso eu colocaria no evento click da combo???

e refernte ao form de cadastro de estagiario on o usuario escolheria a instituiçao e os cursos carregados seriam somente os cursos da instituiçao selecionada??

se voce quiser posso postar as imagens pra você visualizar e se tiver jeito posto o projeto

valews

brother

abraço

t+

:wacko:

Link para o comentário
Compartilhar em outros sites

  • 0

isso seria para preencher a combo ou seja ma hora do form_load, na tela que você só terá a combo para instituições sem os cursos.

Agora se você quer que uma dependa da escolha da outra para carregar apenas os cursos daquela instituição, sim o evento de preencher a segunda combo fica no Change da primeira, e no select você terá que passar o valor da combo selecionada.

Link para o comentário
Compartilhar em outros sites

  • 0
isso seria para preencher a combo ou seja ma hora do form_load, na tela que você só terá a combo para instituições sem os cursos.

Agora se você quer que uma dependa da escolha da outra para carregar apenas os cursos daquela instituição, sim o evento de preencher a segunda combo fica no Change da primeira, e no select você terá que passar o valor da combo selecionada.

ok rafell

olha so pra preencher eu consegui já com um exemplo aqui mesmo de tutoriais e dicas

estou no form que cadstra o curso nele contem uma combo com as instituiçoes cadastradas e nesta combo mostra o nome delas

o que ira afzer esta tela

o usuario escolhera a instituiçao na combo e cadstrara o curso para ela escrevendo o nome do cursso em uma texbox

minha duvida agora é a sgeuinte como faria para gravar a combo no BD lembrando que carreguei pelo nome e não pelo CodInst

e os relacionamento esta pelo CodInst e não pelo noem entendeu

vou postar o codigo da tela de cadstrar curso voce da uma olhada e me diga o melhor pra fazer

valews pela atençao brother

abraço

t+

Private Sub Preencher_combo()
    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
        cboInst.AddItem rsSeleçao!Nome
        End If
        rsSeleçao.MoveNext
        Loop
    End With
End Sub
Private Sub cmdCancelar_Click()
Unload Me
End Sub

Private Sub cmdSalvar_Click()
Dim cnnComando As New ADODB.Command
On Error GoTo errSalvar
    If txtNomeCurso.Text = Empty Then
        MsgBox "Favor Preencher campo Nome do Curso.", vbInformation + vbOKOnly, "Campo em Branco"
    End If
    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "INSERT INTO Curso " & _
            "(NomeCurso) VALUES ('" & txtNomeCurso.Text & "');"
        .Execute
    End With
    MsgBox "Gravação Concluida com Sucesso.", vbInformation + vbOKOnly, "Gravação OK"
    LimparTela
    Exit Sub
Saida:
    Screen.MousePointer = vbDefault
    Set cnnComando = Nothing
    Exit Sub
errSalvar:
    With Err
        If .Number <> 0 Then
            MsgBox "Erro ao Gravar Registro.", vbCritical + vbOKOnly, "ERRO"
            .Number = 0
            GoTo Saida
        End If
    End With
End Sub

Private Sub LimparTela()
txtNomeCurso.Text = Empty
End Sub

Private Sub Form_Load()
Preencher_combo
End Sub

Private Sub txtNomeCurso_LostFocus()
txtNomeCurso.Text = StrConv(txtNomeCurso.Text, vbProperCase)
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0
como está a criação do código?? está como automático ou você que associa?

se for você, antes de salvar, mas no mesmo botão, faz um select e pega o valor maior, soma "1" e na hora de salvar você passa o valor do Código e o Nome do Curso.

raphel sou novatao ainda deixa eu ver se netendi suas perguntas

no caso da criaçao do código como seria automatica ou eu q associo??? no caso eu faço os comonado das querrys SQL seria isso?

como eu faria esse select que voce citou??

to perdidao hehehe

valews brotehr

abraço

t+ :blink:

Link para o comentário
Compartilhar em outros sites

  • 0
Fabin qual BD você está usando??

qual a chave primaria dessa tabela..

como está o código das instituições ( 1,2,3,4,5,6...) ou outro código qualquer?

caso esteja em numérico o banco auto-incrementa ou você é quem tem que digitar o valor??

raphael to usando o access 2003

vou colocar aqui a estrutura das tabelas

tabela: Instituiçao

CodInst Numeração Automatica

Nome Texto

tabela:Curso

CodCurso NumeraçaoAutomatica

NomeCurso Texto

CodInst Numero

ta como numero mesmo o código ok?

o campo código é auto incremento

qual seria o proximo passo agora??

valews pela atençao brotehr

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Fabin,

pelo que vi você não irá disponibilizar um insert na tabela de instituições, só irá mexer na tabela de cursos, OK... então, o código do Curso está correto, ele é autoNumerico, ou seja, você não tem como e nem precisar inserir valores para ele, então no seu insert você terá que passar valores como nome do curso, nome da instituição e código da instituição. Isso você terá que pegar via um select antes do insert. Tipo:

"Select * from instiuicao where nome =  '" & comboBox.text & "'"
O resultado você guarda em uma variavel e faz o insert
INSERT INTO Curso " & _
            "(NomeCurso,CodInst) VALUES ('" & txtNomeCurso.Text & "',Variavel_int);"

Só uma pergunta você já parou para analisar que se todos colocarei o Curso, você terá nomes Duplicados e com nomes escritos de forma diferente?

acho que só valeria a pena inserir um Curso caso o mesmo ainda não esteja no seu banco

Link para o comentário
Compartilhar em outros sites

  • 0
Fabin,

pelo que vi você não irá disponibilizar um insert na tabela de instituições, só irá mexer na tabela de cursos, OK... então, o código do Curso está correto, ele é autoNumerico, ou seja, você não tem como e nem precisar inserir valores para ele, então no seu insert você terá que passar valores como nome do curso, nome da instituição e código da instituição. Isso você terá que pegar via um select antes do insert. Tipo:

"Select * from instiuicao where nome =  '" & comboBox.text & "'"
O resultado você guarda em uma variavel e faz o insert
INSERT INTO Curso " & _
            "(NomeCurso,CodInst) VALUES ('" & txtNomeCurso.Text & "',Variavel_int);"

Só uma pergunta você já parou para analisar que se todos colocarei o Curso, você terá nomes Duplicados e com nomes escritos de forma diferente?

acho que só valeria a pena inserir um Curso caso o mesmo ainda não esteja no seu banco

não entendi este select antes do insert??? Qual seria sua funçao???

e esse insert já substituiria pelo insert que coloquei no meu código acima????

vai ter cursos com o mesmo nome sim na tabela, porem raphel vao ser diferenciados pela instituiçao de ensino entendeu quando salvo o registro sera salvo o nome do curso o codigo do curso e o codigo da instituiçao (ta ai minha outra duvida raphael meu relaciomaneto esta o código da instituiçao ao invés de aparecer o coidogo da instituiçao na tabela curso tem como aparecer o nome da instiuiçao???) entaum haverá cursos repetidos porem diferenciados pela instituiçao entendeu???

valews pela atençao brother

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

não entendi este select antes do insert??? Qual seria sua funçao???
para você conseguir pegar o código da instituição, para que você possa passar no insert abaixo

e esse insert já substituiria pelo insert que coloquei no meu código acima????

isso, já com o valor conInst, preenchido através do Select acima

vai ter cursos com o mesmo nome sim na tabela, porem raphel vao ser diferenciados pela instituiçao de ensino entendeu quando salvo o registro sera salvo o nome do curso o codigo do curso e o codigo da instituiçao (ta ai minha outra duvida raphael meu relaciomaneto esta o código da instituiçao ao invés de aparecer o coidogo da instituiçao na tabela curso tem como aparecer o nome da instiuiçao???) entaum haverá cursos repetidos porem diferenciados pela instituiçao entendeu???

valews pela atençao brother

abraço

t+

1- Sim entendi, mas mesmo assim eu vai ter a possibilidade de ter o curso cadastrado mais de uma vez na mesma instituição. Só vai alterar o código do Curso

2 - sim, tem como aparecer, basta você criar o campo e passar esse valor no parametro do insert, como foi feito no codigo que passei anteriormente... só lembrando que desta forma você não está visualizando o valor da tabela instituição através da tabela Curso, você está inserindo valores que se encontram na tabela Instituição na tabela Curso.

Link para o comentário
Compartilhar em outros sites

  • 0
não entendi este select antes do insert??? Qual seria sua funçao???
para você conseguir pegar o código da instituição, para que você possa passar no insert abaixo

e esse insert já substituiria pelo insert que coloquei no meu código acima????
isso, já com o valor conInst, preenchido através do Select acima

vai ter cursos com o mesmo nome sim na tabela, porem raphel vao ser diferenciados pela instituiçao de ensino entendeu quando salvo o registro sera salvo o nome do curso o codigo do curso e o codigo da instituiçao (ta ai minha outra duvida raphael meu relaciomaneto esta o código da instituiçao ao invés de aparecer o coidogo da instituiçao na tabela curso tem como aparecer o nome da instiuiçao???) entaum haverá cursos repetidos porem diferenciados pela instituiçao entendeu???

valews pela atençao brother

abraço

t+

1- Sim entendi, mas mesmo assim eu vai ter a possibilidade de ter o curso cadastrado mais de uma vez na mesma instituição. Só vai alterar o código do Curso

2 - sim, tem como aparecer, basta você criar o campo e passar esse valor no parametro do insert, como foi feito no codigo que passei anteriormente... só lembrando que desta forma você não está visualizando o valor da tabela instituição através da tabela Curso, você está inserindo valores que se encontram na tabela Instituição na tabela Curso.

raphael tem como você colocar as alteraçoes no form que eu passei acim pois não estou entendo como vou associar não??

se tiver jeito eu agradeço

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Vou por aqui a alteração, no formato que seu banco está.

Private Sub cmdSalvar_Click()
Dim cnnComando As New ADODB.Command
dim codigo_inst as integer
On Error GoTo errSalvar

  If txtNomeCurso.Text = Empty Then
        MsgBox "Favor Preencher campo Nome do Curso.", vbInformation + vbOKOnly, "Campo em Branco"
  else
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT codInst FROM Instituiçao where = '" & ComboBox.item & "'"
        Set rsSeleçao = .Execute
    End With
  
  if not rsSeleçao.EOF then 
       msgBox "Instituição não encontrada"
 else
    codigo_inst = rsSelecao("codIns")

' agora que já tem o código você pode colocar no seu insert

    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "INSERT INTO Curso " & _
            "(NomeCurso, CodInst) VALUES ('" & txtNomeCurso.Text & "',Codigo_inst);"
        .Execute
    End With
    MsgBox "Gravação Concluida com Sucesso.", vbInformation + vbOKOnly, "Gravação OK"
    LimparTela
    Exit Sub
Saida:
    Screen.MousePointer = vbDefault
    Set cnnComando = Nothing
    Exit Sub
errSalvar:
    With Err
        If .Number <> 0 Then
            MsgBox "Erro ao Gravar Registro.", vbCritical + vbOKOnly, "ERRO"
            .Number = 0
            GoTo Saida
        End If
    End With
  end if
end if
End Sub

Private Sub LimparTela()
txtNomeCurso.Text = Empty
End Sub

Private Sub Form_Load()
Preencher_combo
End Sub

Private Sub txtNomeCurso_LostFocus()
txtNomeCurso.Text = StrConv(txtNomeCurso.Text, vbProperCase)
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0
Vou por aqui a alteração, no formato que seu banco está.

Private Sub cmdSalvar_Click()
Dim cnnComando As New ADODB.Command
dim codigo_inst as integer
On Error GoTo errSalvar

  If txtNomeCurso.Text = Empty Then
        MsgBox "Favor Preencher campo Nome do Curso.", vbInformation + vbOKOnly, "Campo em Branco"
  else
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "SELECT codInst FROM Instituiçao where = '" & ComboBox.item & "'"
        Set rsSeleçao = .Execute
    End With
  
  if not rsSeleçao.EOF then 
       msgBox "Instituição não encontrada"
 else
    codigo_inst = rsSelecao("codIns")

' agora que já tem o código você pode colocar no seu insert

    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "INSERT INTO Curso " & _
            "(NomeCurso, CodInst) VALUES ('" & txtNomeCurso.Text & "',Codigo_inst);"
        .Execute
    End With
    MsgBox "Gravação Concluida com Sucesso.", vbInformation + vbOKOnly, "Gravação OK"
    LimparTela
    Exit Sub
Saida:
    Screen.MousePointer = vbDefault
    Set cnnComando = Nothing
    Exit Sub
errSalvar:
    With Err
        If .Number <> 0 Then
            MsgBox "Erro ao Gravar Registro.", vbCritical + vbOKOnly, "ERRO"
            .Number = 0
            GoTo Saida
        End If
    End With
  end if
end if
End Sub

Private Sub LimparTela()
txtNomeCurso.Text = Empty
End Sub

Private Sub Form_Load()
Preencher_combo
End Sub

Private Sub txtNomeCurso_LostFocus()
txtNomeCurso.Text = StrConv(txtNomeCurso.Text, vbProperCase)
End Sub

a ComboBox seria o nome da minha combo instituiçao, e o que significa esse .item se for mesmo o nome da minah combo não tem a opçao.item

valews

abraço

t+

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

  • 0
sim é o nome da sua combo, não está aparecendo porque não existe, fiz uma confusão aqui desculpa, deve ter a opção text

Private Sub cmdSalvar_Click()
Dim cnnComando As New ADODB.Command
Dim cod_inst As Integer
On Error GoTo errSalvar
    If txtNomeCurso.Text = Empty Then
        MsgBox "Favor Preencher campo Nome do Curso.", vbInformation + vbOKOnly, "Campo em Branco"
    Else
        With cnnComando
            .ActiveConnection = conexao
            .CommandType = adCmdText
            .CommandText = "SELECT CodInst FROM Instituiçao where = '" & cboInst.Text & "'" [color="#FF0000"]<---AQUi depois dessa linha da erro[/color]
            Set rsSeleçao = .Execute
        End With
    End If
    If Not rsSeleçao.EOF Then
        MsgBox "Instituiçao não encontarda."
    Else
        codigo_inst = rsSeleçao("CodInst")
    End If
    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = conexao
        .CommandType = adCmdText
        .CommandText = "INSERT INTO Curso " & _
            "(NomeCurso, CodInst) VALUES ('" & txtNomeCurso.Text & "', codigo_inst);"
        .Execute
    End With
    MsgBox "Gravação Concluida com Sucesso.", vbInformation + vbOKOnly, "Gravação OK"
    LimparTela
    Exit Sub
Saida:
    Screen.MousePointer = vbDefault
    Set cnnComando = Nothing
    Exit Sub
errSalvar:
    With Err
        If .Number <> 0 Then
            MsgBox "Erro ao Gravar Registro.", vbCritical + vbOKOnly, "ERRO"
            .Number = 0
            GoTo Saida
        End If
    End With
End Sub

ta meu codigo alterado porem esta indo pro with err apos passar pela linha marcada o que pode ser

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0
coloca um break point e verifica o valor que ele está pegando?, e outra acho que esqueci e você tambem, tem que colocar o nome do campo que é para ser comparado: neste caso "nome"

"SELECT CodInst FROM Instituiçao where nome  = '" & cboInst.Text & "'"
fiz a modificaçao raphael pela linha que eu te falei depois da alteração passou normalmente mas agora quando passa o .execute dessa linha vai para o with err
.CommandText = "INSERT INTO Curso " & _
            "(NomeCurso, CodInst) VALUES ('" & txtNomeCurso.Text & "', codigo_inst);"
        .Execute

o que pode ser agora???

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0
coloca um break point nesta linha e verifica os valores passados se estão corretos, se o nome do campo está correto...

coloquei o break e analisei rafel ele não esta pegando o valor do codigo_inst

sera que tem que colocar "" com && ou não???

o erro provavelmente está ai

valeu brother

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0
fabin, era o que eu suspeitava, acho que a propriedade da compo está errada, coloca o Break na hora que a variável está recebendo o valor da combo, e vê qual o valor está sendo recebido.

raphael a varaievel esta recebendo o valor correto cadastrado no banco

o erro esta no insert de gravar no bd, ou seja quando vai executar o insert de gravaçao o codigo_inst não pega o valor entendeu

mas avariavel funciona corretamente

o que sera que pode ser??

valews

abraço

t+

Link para o comentário
Compartilhar em outros sites

  • 0

fabin,

Desculpa foi erro meu, as variáveis estão com os nomes alterado, perceba que a variável em que foi guardado o valor chama-se cod_inst, e o que colocamos foi codigo_inst, basta alterar o nome da variável no insert que tem que funcionar( ou pelo menos pegar o valor)

Link para o comentário
Compartilhar em outros sites

  • 0
fabin,

Desculpa foi erro meu, as variáveis estão com os nomes alterado, perceba que a variável em que foi guardado o valor chama-se cod_inst, e o que colocamos foi codigo_inst, basta alterar o nome da variável no insert que tem que funcionar( ou pelo menos pegar o valor)

hehehe... eu percebia e arrumei agora ta tudo certim raphael estava faltando nop codigo_inst as "" e os &&

valews mesmo hein bother tu é fera mesmo

mas auqi uma outra duvida

eu tenho outra comobobox que lista o nome da chefia dos estagiarios e tenho uma label que no caso tem a funçao de mostrar o masp da chefia ai estou querendo fazer o seguinte assim que o usuario escolher o nome do chefe na combobox automaticamente apareça o masp do mesmo na label

eu já tenho a tabela e form de cadstro da chefia entaum so preciso um pouco de código hehehe

valews brother

abraço

t+

[

Editado por Fabin
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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...