none
como inserir o valor de uma combobox em um comando select no vba? esse comando tem que ser lido apos um like, ele definira qual estado foi escolhido para gerar um codigo. RRS feed

  • Pergunta

  • ola, boa tarde

    como faço no vba do excel, para que um combobox retorne o valor na minha caixa de select, já tentei de muitas formas, mas ate agora nenhuma deu certo, o oque preciso é que apos eu escolher um estado no combobox ele salve isso e jogue no select para encontrar no meu banco de dados, eu consegui fazer ele retornar o valor código de um estado,mas não de todos, agradeço se alguém puder ajudar, deixo o código abaixo.    

    Set rs = DB.OpenRecordset("select [code] from [estado] where [estados] like ('" & combobox1 & "') ")

    Private Sub UserForm_initialize()

    Dim cnConexao As New ADODB.Connection
    Dim rsProjeto As New ADODB.Recordset
    Set cnConexao = New ADODB.Connection
    Set rsProjeto = New ADODB.Recordset
    Dim jsProjeto As New ADODB.Recordset
    Set jsProjeto = New ADODB.Recordset
    Dim Arquivo As String
    Arquivo = ActiveWorkbook.Path & "\pessoa.accdb"
    cnConexao.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Arquivo)
    Dim DB As Database
    Set DB = OpenDatabase(Arquivo)

    Set js = DB.OpenRecordset("select [estados] from [estado]")
    Do While Not js.EOF
        Me.combobox1.AddItem js.Fields(0) & ""
        estadosx = (js.Fields(0) & "")
        js.MoveNext


    Loop


    Set rs = DB.OpenRecordset("select [code] from [estado] where [estados] like ('" & combobox1 & "') ")
    Do While Not rs.EOF

    Me.ComboBox2.AddItem rs.Fields(0) & ""
    codigoestado = (rs.Fields(0) & "")
    rs.MoveNext

    Loop
    DB.Close
    Set DB = Nothing

    End Sub

    aqui é onde esta o meu problema (coloquei o código todo pra vocês entenderem a pegunta), só com o like não ta dando, não consegui fazer um "like for values ('" & combobox1 & "') ")", ele nao puxa o estado para fazer a verificação, aí não gera o código.

    Set rs = DB.OpenRecordset("select [code] from [estado] where [estados] like ('" & combobox1 & "') ")

    desde já agradeço pela ajuda, tenham um ótimo dia.

    • Movido welington jr quinta-feira, 9 de novembro de 2017 20:50 forum certo
    quinta-feira, 9 de novembro de 2017 18:44

Respostas

  • 'se houver item selecionado na combobox
    
    if combobox1.listindex >=0 then
    
    Set rs = DB.OpenRecordset("select [code] from [estado] where [estados] like ('" & combobox1.value & "') ")
    
    end if



    Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 10 de novembro de 2017 09:38
    • Marcado como Resposta fantomas97 sexta-feira, 10 de novembro de 2017 19:13
    sexta-feira, 10 de novembro de 2017 09:38
  • Infelizmente não entendo de sql. A parte da combo, creio que está correta. Talvez você consiga a resposta em um fórum de SQL

    Anderson Diniz diniabr2011@gmail.com

    • Marcado como Resposta fantomas97 sexta-feira, 10 de novembro de 2017 13:40
    sexta-feira, 10 de novembro de 2017 13:30
  • Não sei se você está utilizando intervalos nomeados. No Excel já tive problemas e passei a substituir o intervalo nomeado pelo endereço da célula ou do intervalo de células.

    Anderson Diniz diniabr2011@gmail.com

    • Marcado como Resposta fantomas97 sexta-feira, 10 de novembro de 2017 15:00
    sexta-feira, 10 de novembro de 2017 13:58

Todas as Respostas

  • 'se houver item selecionado na combobox
    
    if combobox1.listindex >=0 then
    
    Set rs = DB.OpenRecordset("select [code] from [estado] where [estados] like ('" & combobox1.value & "') ")
    
    end if



    Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sexta-feira, 10 de novembro de 2017 09:38
    • Marcado como Resposta fantomas97 sexta-feira, 10 de novembro de 2017 19:13
    sexta-feira, 10 de novembro de 2017 09:38
  • infelizmente nao obtive sucesso fazendo isso, posso te enviar via email o anexo? pois creio que assim ta difícil de entender qual é meu problema.

    agradeço pela sua resposta, tenha um ótimo dia.

    sexta-feira, 10 de novembro de 2017 13:28
  • Infelizmente não entendo de sql. A parte da combo, creio que está correta. Talvez você consiga a resposta em um fórum de SQL

    Anderson Diniz diniabr2011@gmail.com

    • Marcado como Resposta fantomas97 sexta-feira, 10 de novembro de 2017 13:40
    sexta-feira, 10 de novembro de 2017 13:30
  • agradeço amigo, tenha um bom dia.
    sexta-feira, 10 de novembro de 2017 13:40
  • Amigo, encontrei um exemplo que não contém parênteses após o like:

    strSQL = "datum='" & datum & "' AND smena='" & smena & "' AND linka LIKE '" & linka & "*'"
    


    Anderson Diniz diniabr2011@gmail.com

    sexta-feira, 10 de novembro de 2017 13:54
  • ' SQL Server version
    sSql = "SELECT * FROM tblCustomers WHERE CustName LIKE 'SM?T%'"
    ' MS Access version
    sSql = "SELECT * FROM tblCustomers WHERE CustName LIKE 'SM?T*'"
    


    Anderson Diniz diniabr2011@gmail.com

    sexta-feira, 10 de novembro de 2017 13:55
  • Não sei se você está utilizando intervalos nomeados. No Excel já tive problemas e passei a substituir o intervalo nomeado pelo endereço da célula ou do intervalo de células.

    Anderson Diniz diniabr2011@gmail.com

    • Marcado como Resposta fantomas97 sexta-feira, 10 de novembro de 2017 15:00
    sexta-feira, 10 de novembro de 2017 13:58
  • agradeço por ter pesquisado, não deu certo, mas já mandei no fórum de sql, tenha um bom dia amigo, obrigado.
    sexta-feira, 10 de novembro de 2017 15:00
  • talvez seja necessário colocar:

    userform1.combobox1.value


    Anderson Diniz diniabr2011@gmail.com

    sexta-feira, 10 de novembro de 2017 16:00
  • meu amigo, muito obrigado mesmo, graças a você cheguei a resposta, não havia percebido antes como utilizar, mas depois de um tempo tentando eu consegui, agradeço pelo tempo que você doou, tenha um ótimo dia e que deus te abençoe.

    sexta-feira, 10 de novembro de 2017 19:12
  • Amém. Deus abençoe. Que legal!!! Como ficou o código?

    Anderson Diniz diniabr2011@gmail.com


    sexta-feira, 10 de novembro de 2017 19:22
  • Set rsProjeto = New ADODB.Recordset
    Dim jsProjeto As New ADODB.Recordset
    Set jsProjeto = New ADODB.Recordset
    Dim Arquivo As String
    Arquivo = ActiveWorkbook.Path & "\pessoa.accdb"
    cnConexao.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Arquivo)
    Dim DB As Database
    Set DB = OpenDatabase(Arquivo)


    If estado.ListIndex >= 0 Then

    Set rs = DB.OpenRecordset("SELECT [code]  FROM [estado] WHERE [estados]  like  ('" & estado.Value & "') ")
    Do While Not rs.EOF


    codigoestado = (rs.Fields(0) & "")
    rs.MoveNext

    Loop

    DB.Close
    Set DB = Nothing
    End If

    ficou assim amigo, obrigado pela resposta.

    terça-feira, 14 de novembro de 2017 16:01