MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 24/6/2013, 13:21

    Bom dia a todos!
    Fiquei um bom tempo ausente, estou trabalhando em um novo projeto e está faltando tempo e foi feita muitas modificações...
    Projeto "Casco do Máximo Access" v4.0

    A minha dúvida de hoje é simples para quem tem o conhecimento, mas para quem está na fase de crescimento talvez seja bem complicado com tantas informações rsrsrs...

    Preciso concatenar este código, assim na string "Campo" quando eu chamar o módulo posso não só chamar 1 mas chamar vários campos... como posso fazer isto?

    Código:
    Public Function Combo(SQL As String, Conexao As String, Campo As Object, SelectID As String, Optional SelectNome As String)
    Dim rsc As New ADODB.Recordset
    'Seleciona a conexão e conecta com o banco de dados!
    Select Case Conexao
    Case "Cn1"
    Call Cn1X
    rsc.Open SQL, Cn1, adOpenForwardOnly, adLockReadOnly
    Case "Cn2"
    Call Cn2X
    rsc.Open SQL, Cn2, adOpenForwardOnly, adLockReadOnly
    Case Else
    msgbox "Essa conexão que você usou no Combo não existe Selecione entre as Cn1X, Cn2X..."
    End Select
    'Limpa a combo box
    Campo.RowSource = ""
    If SelectNome = "" Or IsNull(SelectNome) Then
    Do While Not rsc.EOF
        Campo.AddItem rsc(SelectID) & ";"
        rsc.MoveNext
        Loop
        Else
    Do While Not rsc.EOF
        Campo.AddItem rsc(SelectID) & ";" & rsc(SelectNome) & ";"
        rsc.MoveNext
    Loop
    End If
    'Fecha todas as conexões com o banco de dados
    rsc.Close
    Set rsc = Nothing
    If Conexao = Cn1 Then
    Exit Function
    ElseIf Conexao = Cn2 Then
    Cn2.Close
    Set Cn2 = Nothing
    End If
    End Function


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  criquio 24/6/2013, 14:02

    Detalhe mais a situação. Você disse chamar vários campos na string Campo, mas essa variável está declarada como objeto. Fale mais sobre o uso dessa variável e o objetivo da mesma.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 24/6/2013, 14:15

    Estou usando este código para preencher uma combo box,
    Eu chamo ela assim:
    Quando só tem um campo onde não preciso ocultar uma id eu uso assim:
                Call Combo("SELECT Area FROM ComboBoxs ORDER BY Area ASC;", "Cn1", Me.SubOSInterna.Form.AreaCliente, "Area")
    Quando eu preciso usar dois campos para dar referência a uma ID eu uso assim:
                Call Combo("SELECT Usuario, Nome FROM tblUsuários ORDER BY Nome ASC;", "Cn1", Me.SubOSInterna.Form.RespServicoInt, "Usuario", "Nome")

    Porém estou chamando várias vezes uma mesma informação para vários campos, teria como eu chamar somente 1 vez e destribuir para todos os campos, mas como eu não sei ainda Sad

    Código:
    Call Combo("SELECT Usuario FROM tblUsuários ORDER BY Usuario ASC;", "Cn1", Me.AproGResp, "Usuario")
    'ComboBox dos Subsformulários
    Call Combo("SELECT Area FROM ComboBoxs ORDER BY Area ASC;", "Cn1", Me.SubOSExterna.Form.AreaCliente, "Area")
    Call Combo("SELECT Area FROM ComboBoxs ORDER BY Area ASC;", "Cn1", Me.SubRecebimento.Form.AreaCliente, "Area")
    Call Combo("SELECT Area FROM ComboBoxs ORDER BY Area ASC;", "Cn1", Me.SubOrcamento.Form.AreaCliente, "Area")
    Call Combo("SELECT Area FROM ComboBoxs ORDER BY Area ASC;", "Cn1", Me.SubOSInterna.Form.AreaCliente, "Area")
    Call Combo("SELECT Servico FROM ComboBoxs ORDER BY Servico ASC;", "Cn1", Me.SubOSInterna.Form.Servico, "Servico")
    Call Combo("SELECT Servico FROM ComboBoxs ORDER BY Servico ASC;", "Cn1", Me.SubOrcamento.Form.Servico, "Servico")
    Call Combo("SELECT Servico FROM ComboBoxs ORDER BY Servico ASC;", "Cn1", Me.SubOSExterna.Form.Servico, "Servico")
    Call Combo("SELECT Descricao FROM Equipamentos ORDER BY Descricao ASC;", "Cn2", Me.SubOrcamento.Form.Equipamento, "Descricao")
    Call Combo("SELECT Descricao FROM Equipamentos ORDER BY Descricao ASC;", "Cn2", Me.SubRecebimento.Form.Equipamento, "Descricao")
    Call Combo("SELECT Descricao FROM Equipamentos ORDER BY Descricao ASC;", "Cn2", Me.SubOSInterna.Form.Equipamento, "Descricao")
    Call Combo("SELECT Descricao FROM Equipamentos ORDER BY Descricao ASC;", "Cn2", Me.SubOSExterna.Form.Equipamento, "Descricao")
    Call Combo("SELECT Localizacao FROM ComboBoxs ORDER BY Localizacao ASC;", "Cn1", Me.SubOSInterna.Form.Localizacao, "Localizacao")
    Call Combo("SELECT Localizacao FROM ComboBoxs ORDER BY Localizacao ASC;", "Cn1", Me.SubOSExterna.Form.Localizacao, "Localizacao")
    Call Combo("SELECT Usuario, Nome FROM tblUsuários ORDER BY Nome ASC;", "Cn1", Me.SubOSInterna.Form.RespServicoInt, "Usuario", "Nome")
    Call Combo("SELECT Usuario, Nome FROM tblUsuários ORDER BY Nome ASC;", "Cn1", Me.SubOSInterna.Form.RespInspecao, "Usuario", "Nome")
    Call Combo("SELECT Usuario, Nome FROM tblUsuários ORDER BY Nome ASC;", "Cn1", Me.SubOSExterna.Form.RespServicoInt, "Usuario", "Nome")
    Call Combo("SELECT Usuario, Nome FROM tblUsuários ORDER BY Nome ASC;", "Cn1", Me.SubOSExterna.Form.RespVE, "Usuario", "Nome")

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Spn8


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 25/6/2013, 13:33

    Tentei também algo assim, mas sem sucesso :'(

    Também tentei vários semelhantes, mas nada... sem sucesso, não consigo setar o nome do campo em uma variável como objeto, não consigo converter uma string para um objeto, não consigo usar funções de um campo/objeto em uma string, não consigo achar solução para tal...
    Código:

    Public Function ComboX(SQL As String, Conexao As String, Campo As String, SelectID As String, Optional SelectNome As String)
    Dim rsc As New ADODB.Recordset
    Dim X As String, K, i As Integer
    'Seleciona a conexão e conecta com o banco de dados!
    Select Case Conexao
    Case "Cn1"
    Call Cn1X
    rsc.Open SQL, Cn1, adOpenForwardOnly, adLockReadOnly
    Case "Cn2"
    Call Cn2X
    rsc.Open SQL, Cn2, adOpenForwardOnly, adLockReadOnly
    Case Else
    msgbox "Essa conexão que você usou no Combo não existe Selecione entre as Cn1X, Cn2X..."
    End Select
    If SelectNome = "" Or IsNull(SelectNome) Then
    Do While Not rsc.EOF
        X = X & rsc(SelectID) & "; "
        rsc.MoveNext
        Loop
        Else
    Do While Not rsc.EOF
        X = X & rsc(SelectID) & ";" & rsc(SelectNome) & "; "
        rsc.MoveNext
    Loop
    End If
    'Limpa a combo box
    K = Split(Campo, "|")
    For i = 0 To 5
    msgbox "k = " & K(i)
    K(i).RowSource = ""
    K(i).RowSource = X
    Next
    'Fecha todas as conexões com o banco de dados
    rsc.Close
    Set rsc = Nothing
    If Conexao = Cn1 Then
    Exit Function
    ElseIf Conexao = Cn2 Then
    Cn2.Close
    Set Cn2 = Nothing
    End If
    End Function


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  criquio 25/6/2013, 13:44

    Ainda não entendi a estrutura do que pretendes. Tente explicar de outra forma, exemplificando os filtros, os campos envolvidos em cada filtro e o resultado pretendido com cada um deles.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 25/6/2013, 13:56

    Obrigado Criquio por prestar suporte,
    Exemplo Criquio, este código trás a mesma função do combobox porém usando conexão do ADODB, mas eu estou usando ela (chamando a função) várias vezes para preencher a mesma informação para vários campos, eu gostaria de usar somente uma vez a função e preencher o "RowSource" das combobox tudo em uma só passagem, sem chamalas um monte de vezes...


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    Avelino João
    Avelino João
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Angola
    Mensagens : 316
    Registrado : 10/03/2012

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  Avelino João 25/6/2013, 14:08

    RneoX Boa Tarde veja esse tópico se te ajuda a resolver o teu problema

    http://comunidade.itlab.com.br/eve/forums/a/tpc/f/273606921/m/510100423


    .................................................................................
    Proaccess - Angola
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  criquio 25/6/2013, 14:09

    Se bem entendi, isso vai ficar mais difícil do que do jeito que está, pois são fontes diferentes, número de colunas diferentes, colunas de ordenação diferentes. Talvez fosse mais produtivo deixar vinculado na fonte do controle.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 25/6/2013, 14:46

    Obrigado pela atenção de todos!

    Então Criquio estou trabalhando com o banco totalmente desacoplado, para evitar a sobrecarga na rede, estou tentando evitar deixar conexão ligadas o máximo que eu puder, seria pra mim uma mão na roda se eu pudesse já colocar direto na source da combo, porém fica exausto para a rede que já está sobrecarregada Sad

    Isso eu já consegui fazer Avelino, porém eu gostaria de chamar a função somente uma vez e aplicar a informação recebida para todos os outros campos que precisam preencher a combobox com exatamente a mesma informação que colheitei na primeira chama...

    Pode ser que seja uma gambiarra mas eu consegui algo como isso pessoal:

    No formulário onde se encontra os combobox:
    Código:
    Dim strLocalizacao As String
    strLocalizacao = ComboX("SELECT Localizacao FROM ComboBoxs ORDER BY Localizacao ASC;", "Cn1", "Localizacao")
                Me.SubOSInterna.Form.Localizacao.RowSource = strLocalizacao
                Me.SubOSExterna.Form.Localizacao.RowSource = strLocalizacao
    Código:

    Public Function ComboX(SQL As String, Conexao As String, SelectID As String, Optional SelectNome As String) As String
    Dim rsc As New ADODB.Recordset
    'Seleciona a conexão e conecta com o banco de dados!
    Select Case Conexao
    Case "Cn1"
    Call Cn1X
    rsc.Open SQL, Cn1, adOpenForwardOnly, adLockReadOnly
    Case "Cn2"
    Call Cn2X
    rsc.Open SQL, Cn2, adOpenForwardOnly, adLockReadOnly
    Case Else
    msgbox "Essa conexão que você usou no Combo não existe Selecione entre as Cn1X, Cn2X..."
    End Select
    Dim X As String
    If SelectNome = "" Or IsNull(SelectNome) Then
    Do While Not rsc.EOF
        If rsc(SelectID) <> "" Then
        X = X & rsc(SelectID) & ";"
        End If
        rsc.MoveNext
        Loop
        Else
    Do While Not rsc.EOF
        If rsc(SelectID) <> "" Then
        X = X & rsc(SelectID) & ";" & rsc(SelectNome) & ";"
        End If
        rsc.MoveNext
    Loop
    End If

    ComboX = X

    'Fecha todas as conexões com o banco de dados
    rsc.Close
    Set rsc = Nothing
    If Conexao = Cn1 Then
    Exit Function
    ElseIf Conexao = Cn2 Then
    Cn2.Close
    Set Cn2 = Nothing
    End If
    End Function


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  criquio 25/6/2013, 14:58

    Certo, mas tem um detalhe. Se você define um rowsource, é a mesma coisa de estar utilizando a fonte do controle vinculado, pois o rowsource é exatamente a fonte do controle convertido em VBA. Sempre que utilizar a combo, ela estará pesquisando a tabela.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 25/6/2013, 15:09

    rsrs me desculpe não ter colocado mais detalhes, sou péssimo em explicar e seria um péssimo professor Laughing
    Então Criquio, eu estou usando a Rowsource Tipo: "Lista de valores"
    O que eu faço é usar a conexão ADODB e então prencher uma variável string com suas respectivas informações, e então cada vez que o Do While achar uma informação ela grava na variavel e depois seta ";" assim para continuar preenchendo... Exemplo:

    Não vou precisar deixar um campo com conexão ativa, porém ela só vai estar salva na lista assim sem precisar puxar as informações, caso necessite de nova, só chamar de novo o campo caso tenha alguma atualização...


    Tabela
    Campo
    Abacaxi
    Amora
    Banana
    Morango

    Então ele vai fazer isto:
    Abacaxi;Amora;Banana;Morango

    Quando tiver ID / Nome então ele faz isso:

    IDNome
    1Abacaxi
    2Amora
    3Banana
    4Goiaba
    5Morango

    1;"Abacaxi";2;"Amora";3;"Banana";4;"Goiaba";5;"Morango"

    Agora eu deixei mais explicado ou ainda estou péssimo para explicar? cheerscheerscheers


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Sucesso, consegui o que eu queria!!!

    Mensagem  RneoX 25/6/2013, 16:31

    Boa tarde mestres!!!

    Consegui solucionar o problema, criei uma nova função semelhante a primeira que passei lá em cima, mas em vez de setar automáticamente já no combobox eu seto a informação em uma variável string, e uso essa string para setar em todos os outros controle, assim usando uma vez só a passagem, não é concatenado mas faz uma função semelhante!

    Claro que eu queria fazer com que aplicasse automáticamente, mas enquanto isso bora usar o que temos em mãos! Melhor uma pipa voando do que dois boiando!

    Código do Formulário chamando as Function:
    Código:

    Private Sub Form_Open(Cancel As Integer)
    'On Error GoTo Error
      Call Combo("SELECT NRegistro FROM regCadastro ORDER BY NRegistro ASC;", "Cn1", Me.NRegistro, "NRegistro")
      If IsNull(Me.NRegistro.RowSource) Then
      Exit Sub
      End If
        Call Combo("SELECT Codigo, Fantasia FROM Clientes ORDER BY Fantasia ASC;", "Cn2", Me.NCliente, "Codigo", "Fantasia")
    Call rsRegistro("SELECT *, IIf([DataAproC]>[DataReceb], [DataAproC], [DataReceb]) AS [DataIniProce] FROM regCadastro WHERE NRegistro =1;")
        'Carrega Imagens
        Me.BtnAprovarCliente.Picture = img("Aprovado.png")
        Me.BtnAprovarGerente.Picture = img("Aprovado.png")
        Me.BtnReprovarCliente.Picture = img("cancelar.png")
        Me.BtnReprovarGerente.Picture = img("cancelar.png")
        Me.BtnNovoOrcamento.Picture = img("AddO.png")
        Me.BtnNovoRecebimento.Picture = img("AddR.png")
       
    Dim strLocalizacao As String, strAreaCliente As String, strServico As String, strDescricao As String, strUsuario As String

    Call Combo("SELECT Usuario FROM tblUsuários ORDER BY Usuario ASC;", "Cn1", Me.AproGResp, "Usuario")
     'ComboBox Subs
    strLocalizacao = ComboX("SELECT Localizacao FROM ComboBoxs ORDER BY Localizacao ASC;", "Cn1", "Localizacao")
    strAreaCliente = ComboX("SELECT Area FROM ComboBoxs ORDER BY Area ASC;", "Cn1", "Area")
    strServico = ComboX("SELECT Servico FROM ComboBoxs ORDER BY Servico ASC;", "Cn1", "Servico")
    strDescricao = ComboX("SELECT Descricao FROM Equipamentos ORDER BY Descricao ASC;", "Cn2", "Descricao")
    strUsuario = ComboX("SELECT Usuario, Nome FROM tblUsuários ORDER BY Nome ASC;", "Cn1", "Usuario", "Nome")

                Me.SubOSInterna.Form.Localizacao.RowSource = strLocalizacao
                Me.SubOSExterna.Form.Localizacao.RowSource = strLocalizacao
                Me.SubOSExterna.Form.AreaCliente.RowSource = strAreaCliente
                Me.SubRecebimento.Form.AreaCliente.RowSource = strAreaCliente
                Me.SubOrcamento.Form.AreaCliente.RowSource = strAreaCliente
                Me.SubOSInterna.Form.AreaCliente.RowSource = strAreaCliente
                Me.SubOSInterna.Form.Servico.RowSource = strServico
                Me.SubOrcamento.Form.Servico.RowSource = strServico
                Me.SubOSExterna.Form.Servico.RowSource = strServico
                Me.SubOrcamento.Form.Equipamento.RowSource = strDescricao
                Me.SubRecebimento.Form.Equipamento.RowSource = strDescricao
                Me.SubOSInterna.Form.Equipamento.RowSource = strDescricao
                Me.SubOSExterna.Form.Equipamento.RowSource = strDescricao
                Me.SubOSInterna.Form.RespServicoInt.RowSource = strUsuario
                Me.SubOSInterna.Form.RespInspecao.RowSource = strUsuario
                Me.SubOSExterna.Form.RespServicoInt.RowSource = strUsuario
                Me.SubOSExterna.Form.RespVE.RowSource = strUsuario
               
        Exit Sub
    Error:
    msgbox "Erro: " & Err.Number & " (" & Err.Description & ")"
    Exit Sub
    End Sub

    Código da Function:
    Código:
    Public Function Combo(SQL As String, Conexao As String, Campo As Object, SelectID As String, Optional SelectNome As String)
    Dim rsc As New ADODB.Recordset
    'Seleciona a conexão e conecta com o banco de dados!
    Select Case Conexao
    Case "Cn1"
    Call Cn1X
    rsc.Open SQL, Cn1, adOpenForwardOnly, adLockReadOnly
    Case "Cn2"
    Call Cn2X
    rsc.Open SQL, Cn2, adOpenForwardOnly, adLockReadOnly
    Case Else
    msgbox "Essa conexão que você usou no Combo não existe Selecione entre as Cn1X, Cn2X..."
    End Select
    'Limpa a combo box
    Campo.RowSource = ""
    If SelectNome = "" Or IsNull(SelectNome) Then
    Do While Not rsc.EOF
        Campo.AddItem rsc(SelectID) & ";"
        rsc.MoveNext
        Loop
        Else
    Do While Not rsc.EOF
        Campo.AddItem rsc(SelectID) & ";" & rsc(SelectNome) & ";"
        rsc.MoveNext
    Loop
    End If
    'Fecha todas as conexões com o banco de dados
    rsc.Close
    Set rsc = Nothing
    If Conexao = Cn1 Then
    Exit Function
    ElseIf Conexao = Cn2 Then
    Cn2.Close
    Set Cn2 = Nothing
    End If
    End Function

    Public Function ComboX(SQL As String, Conexao As String, SelectID As String, Optional SelectNome As String) As String
    Dim rsc As New ADODB.Recordset
    'Seleciona a conexão e conecta com o banco de dados!
    Select Case Conexao
    Case "Cn1"
    Call Cn1X
    rsc.Open SQL, Cn1, adOpenForwardOnly, adLockReadOnly
    Case "Cn2"
    Call Cn2X
    rsc.Open SQL, Cn2, adOpenForwardOnly, adLockReadOnly
    Case Else
    msgbox "Essa conexão que você usou no Combo não existe Selecione entre as Cn1X, Cn2X..."
    End Select
    Dim X As String
    If SelectNome = "" Or IsNull(SelectNome) Then
    Do While Not rsc.EOF
        If rsc(SelectID) <> "" Then
        X = X & rsc(SelectID) & ";"
        End If
        rsc.MoveNext
        Loop
        Else
    Do While Not rsc.EOF
        If rsc(SelectID) <> "" Then
        X = X & rsc(SelectID) & ";" & rsc(SelectNome) & ";"
        End If
        rsc.MoveNext
    Loop
    End If

    ComboX = X

    'Fecha todas as conexões com o banco de dados
    rsc.Close
    Set rsc = Nothing
    If Conexao = Cn1 Then
    Exit Function
    ElseIf Conexao = Cn2 Then
    Cn2.Close
    Set Cn2 = Nothing
    End If
    End Function


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  criquio 25/6/2013, 17:40

    Confesso que ainda não entendi 100%, mas se está funcionando, beleza. Só clicar no botão Resolvido ali ↓embaixo↓ e pronto.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 27/6/2013, 14:01

    Tudo resolvido, Obrigado pelo apoio de todos!


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    Avelino João
    Avelino João
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Angola
    Mensagens : 316
    Registrado : 10/03/2012

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  Avelino João 30/6/2013, 03:02

    RneoX bom dia, estou ver que conseguiste resolver a tua duvida, gostaria de lhe perguntar se não seria melhor usar uma caixa de texto ao invés de caixa de combinação, porque usar  caixa de combinação estas sujeito a carregar todos os dados da tabela, já a caixa de texto você só chama informação digitada na caixa de texto e preenche os outros campos que deseja  veja esse condigo aqui.


    Private Sub txtMorada1_LostFocus()
    On Error GoTo txtMorada1_LostFocusError

    Dim rs As New ADODB.Recordset
    Dim cnn As New ADODB.Connection
    'Esta variável irá ser utilizado para se encontrar o utilizador
    'Entrou em um endereço de funcionário válido
    Dim cmd As Boolean

    ' Se não houver um endereço de funcionário, não fazer nada
    If IsNull(txtMorada1) Then
    Exit Sub
    End If

    'Para começar, assuma que não encontramos um empregado
    cmd = False

     cnn.Open "Driver={SQL Server Native Client 10.0};Server=HALLOWEB\SQLEXPRESS;PORT=1433;" & "database=maestro;UID=sa;Password=007;Option=3;"
       rs.Open "tblExemplo", cnn, adOpenStatic, adLockOptimistic

    If IsNull(rs) Then
    MsgBox "Morada Invalida.", _
    vbOKOnly Or vbInformation, "teste"
    Exit Sub
    Else
    ' Vamos nos referir ao conjunto de registros, muitas vezes
    With rs
    ' Verifique cada registro de empregado da primeira para a última
    Do While Not .EOF
    'Toda vez que você chegar à coluna de endereço do Empregado,
    'Se o seu valor é o mesmo que foi introduzido
    'Na tabela
    If rs("Morada").Value = txtMorada1 Then
    ' ... mostrar o seu dados completo
    txtNome = .Fields("Cliente").Value
    txtCPF = .Fields("CPF").Value
    txtMorada = .Fields("Morada").Value
    ' Tome nota que encontramos o endereço de funcionário
    cmd = True
    End If
    .MoveNext
    Loop
    End With

    ' Se foi encontrado nenhum funcionário, que o usuário saiba
    If cmd = False Then
    txtNome = ""
    txtCPF = ""
    txtMorada = ""
    MsgBox "Não há funcionário com esse endereço.", _
    vbOKOnly Or vbInformation, "teste"
    End If
    End If

    Set cnn = Nothing
    Set rs = Nothing
    txtMorada1 = ""

    Exit Sub

    txtMorada1_LostFocusError:
    If Err.Number = 3021 Then
    MsgBox "Nenhum funcionário foi encontrado com esse endereço.", _
    vbOKOnly Or vbInformation, "teste"
    Else
    MsgBox "Ocorreu um erro ao tentar obter informações do funcionário.", _
    vbOKOnly Or vbInformation, "teste"
    End If

    Resume Next
    End Sub


    .................................................................................
    Proaccess - Angola
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 2/7/2013, 12:51

    Bom dia!
    Avelino este código é muito bom e até me deu algumas idéias, mas o que eu estava querendo mesmo era só preencher uma combobox onde as pessoas ficava limitada a escrever outra coisa a não ser o da lista da combo, também sempre atualizando as informações inseridas em outro formulário...
    Resumindo, é a mesma função de uma combobox mas sem precisar deixar 10 combobox conectadas com as mesmas informações, em vez de conectar 10 somente conecto uma vez e destribuo as informações em forma de texto com o tipo "Lista de Valores", e logo em seguida já desconecto a conexão...

    Estou evitando o máximo possível de sobrecarregar a rede, porque não tenho muita infra-estrutura aqui...


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    Avelino João
    Avelino João
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Angola
    Mensagens : 316
    Registrado : 10/03/2012

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  Avelino João 2/7/2013, 14:52

    Boa Tarde RneoX dá uma olhada nesse site tem bons artigo sobre ADO http://www.functionx.com/vbaccess/Lesson26.htm


    .................................................................................
    Proaccess - Angola
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  RneoX 2/7/2013, 14:58

    Muito obrigado Avelino, excelente site de ADO, muitas funções bem explicativas, nota 10 cheers cheers cheers 


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.

    Conteúdo patrocinado


    [Resolvido]Concatenar uma conexão com a combobox (ADODB) Empty Re: [Resolvido]Concatenar uma conexão com a combobox (ADODB)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 17:12