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

Preencher Valor correspondente (linha x linha)


Danleonhart

Pergunta

Pessoal, seguinte:

Tenho um ComboBox onde ele puxa dados de uma tabela do Access...essa tabela tem duas colunas: "Artigo & Gramatura", uma é ligada ao Combo (Artigo), e a outra apenas armazena as informações...

001gl.png

Estou tentando sem sucesso configurar para que quando selecionado determinado artigo no Combo (que é ligado a coluna "Artigo") uma Label seja preenchida com o valor respectivamente correspondente a ele...

Tipo:

Se selecionado: ALANIS no combo, seja apresentado na Label o valor: 0,354

Se selecionado ATLANTA, apresente "0,312" no Label...

002yl.png

uso conexão ADO para comunucação Banco x Aplicativo.

Só para lembrar, este DataGrid não aparece na execursão do Aplicativo...só o coloquei para exemplificar melhor o que desejo...

Grato a todos !

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Olá!

já tentou fazer algo do tipo isto:

Private Sub Combo1_Click()
    Dim SQL As String
    
    Dim RS As Recordset
    Set RS = New Recordset
    
    SQL = "SELECT gramatura FROM tabela WHERE artigo='" + Combo1.List(Combo1.ListIndex) + "'"
    
    Call RS.Open(SQL, CONEXAO, 1, 3)
           
    If RS.RecordCount > 0 Then
        Text1.Text = "" & RS!gramatura
    End If
    
    Set RS = Nothing
    
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

@ Anderson Fernandes:

Cara, funcionou perfeitamente !

Será que teria como você colocar comentários de como funciona este script ?! assim não só eu mais outros usuários não irão apenas "copiar" & "colar", mas iremos entender como roda o script, e até aplicar em futuras aplicações !

Obrigado mais uma vez pela rápida e correta resposta !

Tudo de bom para você ! :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0
@ Anderson Fernandes:

Cara, funcionou perfeitamente !

Será que teria como você colocar comentários de como funciona este script ?! assim não só eu mais outros usuários não irão apenas "copiar" & "colar", mas iremos entender como roda o script, e até aplicar em futuras aplicações !

Obrigado mais uma vez pela rápida e correta resposta !

Tudo de bom para você ! :rolleyes:

Private Sub Combo1_Click()
'O evento Click de uma combo não funciona necessariamente quando se clica em um item e sim quando se altera de um item para outro na lista.
    
    Dim SQL As String
    
    Dim RS As Recordset
    Set RS = New Recordset
    
    'Acima declaramos um recordset nomeado como RS e somente depois setamos como New
    'Assim quando setarmos o RS como Nothing no final da função ela será realmente liberada da memoria
    'Se declararmos diretamente desta forma Dim RS As New Recordset, então quando setarmos como Nothing ela será apenas limpa/reiniciada, porem não ira liberar a memória do computador
    
    'Criamos o SQL e passamos como parametro o item selecionado na Combo1
    'Com a função Combo1.List() podemos pegar o valor de qualquer indice/item na lista da Combo, então passamos como parametro Combo1.ListIndex que é o indece atual selecionado na combo.
    SQL = "SELECT gramatura FROM tabela WHERE artigo='" + Combo1.List(Combo1.ListIndex) + "'"
    
    'Abrimos o recordset para obter os registros da consulta SQL
    'Para detalhes dos parametros acesse: http://www.macoratti.net/dao_ado2.htm
    Call RS.Open(SQL, CONEXAO, adOpenKeyset, adLockOptimistic)
    
    'Verificamos se a consulta retornou alguma informação/registro/linha       
    If RS.RecordCount > 0 Then
        'Se retornou algum registro então
        'Text1.Text recebe o valor do campo gramatura na primeiro registro
        Text1.Text = "" & RS!gramatura
    End If
    
    Set RS = Nothing
    
End Sub

Espero que de para entender, até mais!

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

  • 0

@ Anderson Fernandes:

Deu pra se ter uma noção de como funciona o script sim !

só um detalhe que pode gerar dúvidas para outros que possam acessar este tópico... na linha :

Call RS.Open(SQL, CONEXAO, 1, 3)

a numeração que vem após a string de conexão (" 1, 3 ") é o mesmo que "adOpenKeyset, adLockOptimistic" ?

Pois se for por "ordem" não seria : "adOpenDynamic, adLockPessimistic"

66730096.png

Na verdade isso é só pra detalhe mesmo... pois no meu caso, não foi nem necessário incluir...porém apontei " adOpenKeyset, adLockReadOnly " pois estou utilizando este tipo desde o início...

Mais uma vez Obrigado ! B)

Link para o comentário
Compartilhar em outros sites

  • 0
@ Anderson Fernandes:

Deu pra se ter uma noção de como funciona o script sim !

só um detalhe que pode gerar dúvidas para outros que possam acessar este tópico... na linha :

Call RS.Open(SQL, CONEXAO, 1, 3)

a numeração que vem após a string de conexão (" 1, 3 ") é o mesmo que "adOpenKeyset, adLockOptimistic" ?

Pois se for por "ordem" não seria : "adOpenDynamic, adLockPessimistic"

66730096.png

Na verdade isso é só pra detalhe mesmo... pois no meu caso, não foi nem necessário incluir...porém apontei " adOpenKeyset, adLockReadOnly " pois estou utilizando este tipo desde o início...

Mais uma vez Obrigado ! B)

Na realidade o que acontece com essa listagem é que ela esta apenas em ordem alfabética, porem o valor das constantes são outros.

Para saber o valor, clique o botão direito em cima da constante e clique em Definição que será aberto o Pesquisador de Objetos.

quando eu coloquei 1 e 3 o VB não entende q eu quero o item 1 e o item 3 da listagem e sim as constantes que correspondem ao valor 1 e ao valor 3

Exemplo:

Public Const adOpenKeyset = 1

ela tem o valor um e não porque esta na ordem 1 da listagem

e onde escrevesse CONEXAO, tem que ser um objeto do tipo ADODB.Connection com uma conexão aberta.

Dim CONEXAO As New ADODB.Connection

Agora deixa eu trabalhar, a noite eu acesso novamente o forum, t+!

Link para o comentário
Compartilhar em outros sites

  • 0

Pode trabalhar Anderson! :rolleyes:

Mas qundo tiver tempo me diz como corrijo este detalhe:

Tou com um MSFlexGrid editavel, só que tenho um evento no Clique Duplo para apagar uma linha completa... utilizo este script:

Private Sub MSFlexGrid1_DblClick()

With MSFlexGrid1
''Remove a linha selecionada
.RemoveItem (.Row)
End With

End Sub

Só que dá erro quando eliminado a ultima linha... e as vezes é necessário...

EX:

Se tem 3 e eu elimino 1 ou 2 dá OK...porém se tento eliminar esta última apresenta o erro:

erro2w.png

Valeu ! :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0
Pode trabalhar Anderson! :rolleyes:

Mas qundo tiver tempo me diz como corrijo este detalhe:

Tou com um MSFlexGrid editavel, só que tenho um evento no Clique Duplo para apagar uma linha completa... utilizo este script:

Private Sub MSFlexGrid1_DblClick()

With MSFlexGrid1
''Remove a linha selecionada
.RemoveItem (.Row)
End With

End Sub
Só que dá erro quando eliminado a ultima linha... e as vezes é necessário... EX: Se tem 3 e eu elimino 1 ou 2 dá OK...porém se tento eliminar esta última apresenta o erro: erro2w.png Valeu ! :rolleyes:
Iae cara, pô só deu tempo de eu responder sua pergunta agora! no flexgrid tem q haver pelo menos uma linha, então como a 1ª é fixa fica assim com duas linhas. bom tenta dessa forma aqui não sei se ajuda, ou se alguém tiver alguma outra ideia ta valendo:
Private Sub MSFlexGrid1_DblClick()
On Error GoTo TrataErro
    With MSFlexGrid1
        'Remove a linha selecionada
        Call .RemoveItem(.RowSel)
    End With

Exit Sub
TrataErro:
    If Err.Number = 30015 Then
        MSFlexGrid1.Clear
    End If
End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

OK Anderson !

Funfou 100%...

Ainda adicionei ao script a linha: " MSFlexGrid1.Rows = 0 "... fazendo assim que comece o Grid como no inicio (Form_Load no meu caso)

Código:

Private Sub MSFlexGrid1_DblClick()
On Error GoTo TrataErro
    With MSFlexGrid1
        'Remove a linha selecionada
        Call .RemoveItem(.RowSel)
    End With

Exit Sub
TrataErro:
    If Err.Number = 30015 Then
        MSFlexGrid1.Clear
        MSFlexGrid1.Rows = 0
    End If
End Sub

Valeu Cara ! ;)

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,4k
×
×
  • Criar Novo...