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

DbGrid x Flexgrid


George Ferraz

Pergunta

Galera bom dia, vou criando meu sistema e me deparo com mais um problema.

Bom tenho um form com um Flexgrid e um CommandButton que chama um Dbgrid com um CommadButton para preencher as linhas e colunas do Flexgrid mais só consigo preencher uma linha com suas respectivas colunas. Agora como faço para preencher as demais linhas com suas respectivas colunas ? Quero dizer linha 2 , linha 3, linha 4...

Exemplo: do botão

Private Sub CommadButton_Click()

Dbgrid.Col (0)

Flexgrid.textmatrix(1,0) = Dbgrid.text

Dbgrid.Col (0)

Flexgrid.textmatrix(1,1) = Dbgrid.text

End Sub

Na verdade o q quero é preencher as outras linhas do flexgrid com os outros Produtos do Dbgrid, e não apenas um ?

alguém pode me ajudar ? B)

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

25 respostass a esta questão

Posts Recomendados

  • 0

pro DataGrid é só você setar as propriedades Row (linha) e Col (coluna) e pegar o Text. imagino q pro DbGrid deve ser igual.

tipo assim:

Private Sub CommadButton_Click()

Dbgrid.Col = 0
Dbgrid.Row = 0
Flexgrid.textmatrix(1, 0) = Dbgrid.text

Dbgrid.Col = 1
Flexgrid.textmatrix(1, 1) = Dbgrid.text

Dbgrid.Col = 0
Dbgrid.Row = 1
Flexgrid.textmatrix(2, 0) = Dbgrid.text

Dbgrid.Col = 1
Flexgrid.textmatrix(2, 1) = Dbgrid.text


End Sub[/code]

Link para o comentário
Compartilhar em outros sites

  • 0
pro DataGrid é só você setar as propriedades Row (linha) e Col (coluna) e pegar o Text. imagino q pro DbGrid deve ser igual.

tipo assim:

Private Sub CommadButton_Click()

Dbgrid.Col = 0
Dbgrid.Row = 0
Flexgrid.textmatrix(1, 0) = Dbgrid.text

Dbgrid.Col = 1
Flexgrid.textmatrix(1, 1) = Dbgrid.text

Dbgrid.Col = 0
Dbgrid.Row = 1
Flexgrid.textmatrix(2, 0) = Dbgrid.text

Dbgrid.Col = 1
Flexgrid.textmatrix(2, 1) = Dbgrid.text


[color="#2E8B57"]Kuroi, valeu por mais uma dica sua brother, agora eu estou no trampo, mais a noite eu vou testar esse procedimento em casa. Eí desde já agraço sua força, depois eu falo pro cê se deu certo brother.[/color]  B) 


End Sub

Link para o comentário
Compartilhar em outros sites

  • 0
pro DataGrid é só você setar as propriedades Row (linha) e Col (coluna) e pegar o Text. imagino q pro DbGrid deve ser igual.

tipo assim:

Private Sub CommadButton_Click()

Dbgrid.Col = 0
Dbgrid.Row = 0
Flexgrid.textmatrix(1, 0) = Dbgrid.text

Dbgrid.Col = 1
Flexgrid.textmatrix(1, 1) = Dbgrid.text

Dbgrid.Col = 0
Dbgrid.Row = 1
Flexgrid.textmatrix(2, 0) = Dbgrid.text

Dbgrid.Col = 1
Flexgrid.textmatrix(2, 1) = Dbgrid.text


[color="#2E8B57"]Kuroi, valeu por mais uma dica sua brother, agora eu estou no trampo, mais a noite eu vou testar esse procedimento em casa. Eí desde já agraço sua força, depois eu falo pro cê se deu certo brother.[/color]  B) 


End Sub

Amigo Kuroi, testei a instrução acima e realmente funciona, mais desculpa cara, eu me espressei errado. O q quero realmente é isso:

Private Sub CommadButton_Click()

'Quero q este botão faça isto, quando o usuário selecionar uma linha do DBgrid

'e clicar no CommandButton, a primeira linha do Flexgrid é preenchida

'daí o usuário chama outra vez o Dbgrid e seleciona outra linha e clica no CommandButton outra vez

'daí a segunda linha do Flexgrid é preenchida e assim sucessivamente.

End Sub

É possível ? vou ser cincero brother não sei fazer isto. Valeu mais uma vez por sua atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

mas é só fazer a mesma coisa, sem precisar setar o row. assim q o usuario seleciona uma linha qualquer do grid, a propriedade Row do grid já muda automaticamente e armazena a linha selecionada.

pelo menos é assim no DataGrid, imagino q o DbGrid seja igual. mas de qualquer forma você tb pode pegar pelos dados do RecordSet.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, acho q, mais uma vez, me espressei errado. Olha só o código abaixo.

CommandButton_Click()

'O controle que tem os dados é o DataGrid e logo depois vem o Controle q recebe os dados o MsFlexgrid, dessa forma cara, eu só consigo preencher uma linha do MsFlexgrid, e quando o usuário selecionar outra linha do DataGrid, ele vai subscrever a linha q acabou de preencher e a idéia é ele preencher a linha 2 MsFlexgrid ou não, ou seja, se o usuário quezer pegar outro dado do DataGrid, este botão teria que dár está possibilidade ao usuário, mais não estou conseguindo fazer com que este botão faça isso ? Será que estou indo pelo caminho certo ? Favor brother uma força.

Dbgrid.Col (0)

FrmCmp.MsFlexgrid.TextMatrix(1, 0) = Dbgrid.Texto

Dbgrid.Col (1)

FrmCmp.MsFlexgrid.TextMatrix(1 , 1) = Dbgrid.Texto

Dbgrid.Col (3)

FrmCmp.MsFlexgrid.TextMatrix(1, 2) = Dbgrid.Texto

Dbgrid.Col (5)

FrmCmp.MsFlexgrid.TextMatrix(1, 3) = Dbgrid.Texto

Dbgrid.Col (7)

FrmCmp.MsFlexgrid.TextMatrix(1, 4) = Dbgrid.Texto

End Sub

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

  • 0

é só adicionar uma linha no final e preenchar ela. você sabe qtas linhas o FlexGrid tem pela propriedade Rows.

e com um AddItem você adiciona uma nova linha:

MSFlexGrid1.AddItem "", MSFlexGrid1.Rows
ai pra ir pra ultima linha é só pegar pelo .Rows tb. tipo assim:
MSFlexGrid1.Row = MSFlexGrid1.Rows - 1

Link para o comentário
Compartilhar em outros sites

  • 0

Meu amigo, eu tentei seguir sua instrução, mais deu um erro em tempo de execução o código do erro é Rum-Time Error '381'

acho que fiz alguma coisa errada mais não desfendei o misterio, olha abaixo como eu fiz ?

------------------------------------------------------------------------------------------------------------------------------------------------

CODE

MSFlexGrid1.AddItem "", MSFlexGrid1.Rows

ai pra ir pra ultima linha é só pegar pelo .Rows tb. tipo assim:

CODE

MSFlexGrid1.Row = MSFlexGrid1.Rows - 1

MEU BOTÃO

Private Sub lvBEstq1_Click()

GrdEstoque.Col = 0

FrmCmp.MSFlexGrid.TextMatrix(1, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text

GrdEstoque.Col = 5

FrmCmp.MSFlexGrid.TextMatrix(1, 2) = GrdEstoque.Text

GrdEstoque.Col = 4

FrmCmp.MSFlexGrid.TextMatrix(1, 3) = GrdEstoque.Text

GrdEstoque.Col = 7

FrmCmp.MSFlexGrid.TextMatrix(1, 4) = GrdEstoque.Text

GrdEstoque.Col = 3

FrmCmp.MSFlexGrid.TextMatrix(1, 5) = GrdEstoque.Text

FrmCmp.MSFlexGrid.AddItem ""

FrmCmp.MSFlexGrid.Rows = FrmCmp.MSFlexGrid.Row - 1

End Sub

Valeu por sua atenção amigo Kuroi.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, quando ocorrer algum erro eu te falo a linha e a descrição. Hoje eu vou testar sua instrução e amanhã eu falo pro cê, mais aproveitando já aponto a linha do erro, agora a descrição ainda não tenho, pois está em outra máquina cara, você esta me pedindo pra fazer a mesma coisa outra vez é isso mesmo ? dá uma olha pra trás acho que é a mesma instrução. Mesmo assim muito obrigado por sua atenção vou testar ou me impenhar melhor valeu. B)

MEU BOTÃO

Private Sub lvBEstq1_Click()

GrdEstoque.Col = 0

FrmCmp.MSFlexGrid.TextMatrix(1, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text " O error esta apontando esta linha"

GrdEstoque.Col = 5

FrmCmp.MSFlexGrid.TextMatrix(1, 2) = GrdEstoque.Text

GrdEstoque.Col = 4

FrmCmp.MSFlexGrid.TextMatrix(1, 3) = GrdEstoque.Text

GrdEstoque.Col = 7

FrmCmp.MSFlexGrid.TextMatrix(1, 4) = GrdEstoque.Text

GrdEstoque.Col = 3

FrmCmp.MSFlexGrid.TextMatrix(1, 5) = GrdEstoque.Text

FrmCmp.MSFlexGrid.AddItem ""

FrmCmp.MSFlexGrid.Rows = FrmCmp.MSFlexGrid.Row - 1

End Sub

CODE

FrmCmp.MSFlexGrid.Rows = FrmCmp.MSFlexGrid.Row - 1

acho q era isso q você queria??

CODE

FrmCmp.MSFlexGrid.Row = FrmCmp.MSFlexGrid.Rows - 1

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

  • 0

"Olha mano, desta forma o usuário, consegue pegar 2 itens e preenche o Flexgrid até aí belesma. Agora a minha idéia é 1 itém por vez, e daí vai preenchendo o Flexgrid a medida que o usuário vai confirmando o itém que quizer. Eu não estou conseguindo fazer isto ?"

Private Sub lvBEstq1_Click()

GrdEstoque.Col = 0

GrdEstoque.Row = 0

FrmCmp.MSFlexGrid.TextMatrix(1, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text

GrdEstoque.Col = 0

GrdEstoque.Row = 1

FrmCmp.MSFlexGrid.TextMatrix(2, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(2, 1) = GrdEstoque.Text

FrmCmp.MSFlexGrid.Row = FrmCmp.MSFlexGrid.Rows - 1

Unload Me

End Sub

Valeu galera um forte abraço.

Editado por kuroi
pra q tamanho 5??
Link para o comentário
Compartilhar em outros sites

  • 0

passei mais ou menos uma ideia de como fazer isso aqui:

é só adicionar uma linha no final e preenchar ela. você sabe qtas linhas o FlexGrid tem pela propriedade Rows.

e com um AddItem você adiciona uma nova linha:

MSFlexGrid1.AddItem "", MSFlexGrid1.Rows
ai pra ir pra ultima linha é só pegar pelo .Rows tb. tipo assim:
MSFlexGrid1.Row = MSFlexGrid1.Rows - 1

no clique do botao, de um AddItem (primeiro codigo do meu post acima), va pra ultima linha (segundo codigo do meu post acima) e preencha as colunas com o codigo q você já conhece.

qualquer duvida, poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi kuroi, cara desculpa pela font = 5, na verdade eu só queria um pouco de atenção sua, porque sei de seu conhecimento em VB e quero apenas apreder mais viu, belesma e beleza. Valeu por eu poder contar com você brother, vou tar testando da forma que você me orienta e desde já torço muito pra dá certo, amanhã eu falo pro cê.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, brother, olha só no evento click do botão, uma linha é acrescentada e ela é preenchida com 1 itém qualquer belesma sua orientação funciona, agora quando eu chamo o Form que tem o botão outra vez para escolher outro item e confirmo isso, ele só acrescente outra linha mais não preenche com o item que selecionei a linha fica em branco " " Como faço pra preencher esta linha em branco, quando chamo outra vez o Form que tem o botão ? É Possível isso ?

Private Sub lvBEstq1_Click()

FrmCmp.MSFlexGrid.AddItem "", FrmCmp.MSFlexGrid.Rows

GrdEstoque.Col = 0

GrdEstoque.Row = 0

FrmCmp.MSFlexGrid.TextMatrix(1, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text

GrdEstoque.Col = 5

FrmCmp.MSFlexGrid.TextMatrix(1, 2) = GrdEstoque.Text

GrdEstoque.Col = 4

FrmCmp.MSFlexGrid.TextMatrix(1, 3) = GrdEstoque.Text

GrdEstoque.Col = 7

FrmCmp.MSFlexGrid.TextMatrix(1, 4) = GrdEstoque.Text

GrdEstoque.Col = 3

FrmCmp.MSFlexGrid.TextMatrix(1, 5) = GrdEstoque.Text

FrmCmp.MSFlexGrid.Row = FrmCmp.MSFlexGrid.Rows - 1

End Sub

Valeu por sua atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, olha só a linha que ficava em branco está sendo preenchida apenas o campo “Código” , que é a Col (0) do Flexgrid, e alterando os outros campos do Flexgrid ,”Nome”, “Unidade” etc.. É bom frisar bem que o primeiro campo do Flexgrid que é o “Código” esta belesma funcionando, meu amigo, mais não conseguir fazer com que os outros façam o mesmo.

CODE

FrmCmp.MSFlexGrid.TextMatrix(FrmCmp.MSFlexGrid.Rows - 1, 0) = GrdEstoque.Text

Private Sub lvBEstq1_Click()

FrmCmp.MSFlexGrid.AddItem "", FrmCmp.MSFlexGrid.Rows

GrdEstoque.Col = 0

GrdEstoque.Row = 0

FrmCmp.MSFlexGrid.TextMatrix(FrmCmp.MSFlexGrid.Rows - 1, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text

GrdEstoque.Col = 5

FrmCmp.MSFlexGrid.TextMatrix(1, 2) = GrdEstoque.Text

GrdEstoque.Col = 4

FrmCmp.MSFlexGrid.TextMatrix(1, 3) = GrdEstoque.Text

GrdEstoque.Col = 7

FrmCmp.MSFlexGrid.TextMatrix(1, 4) = GrdEstoque.Text

Unload Me

End Sub

Me ajuda brother e desculpa minha ignorancia, mais não consegui fazer funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, tudo bom com vc6.

eu sou um novo aqui e tou com duvidas em relação a onde postar as minhas duvidas

^^

mas é o seguinte.

eu to tentando fazer um programa no vb de controle de alunos.

fiz o banco de dados já.

fiz quase tudo..

so tem um problema.

Eu preciso que o vb salve as informaçoes que passo dos alunos

todo dia

..

tipo hoje eu coloco uma obs para o aluno X

e amanha eu coloco otra

eu preciso xegar no final do mes e

ter todas essas obs..

alguém ai me ajuda a fazer isso

e se não for aki que devo dexa minha pergunta,.

alguém ai me fala onde é !!!

obrigado ate o momento

.!!

Link para o comentário
Compartilhar em outros sites

  • 0

Brother n.Borel, você criou sua conta como acabei de ver, agora você precisa Criar "Um Novo tópico", e apartir daí você começa a postar suas dúvidas, como eu faço e os outros membros do Script Brasil e mais eu peço que você em seu tópico, envie o código junto com sua pergunta, para ficar mais fácil para toda rapaziada falou mano valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, olha só a linha que ficava em branco está sendo preenchida apenas o campo “Código” , que é a Col (0) do Flexgrid, e alterando os outros campos do Flexgrid ,”Nome”, “Unidade” etc.. É bom frisar bem que o primeiro campo do Flexgrid que é o “Código” esta belesma funcionando, meu amigo, mais não conseguir fazer com que os outros façam o mesmo.

CODE

FrmCmp.MSFlexGrid.TextMatrix(FrmCmp.MSFlexGrid.Rows - 1, 0) = GrdEstoque.Text

Private Sub lvBEstq1_Click()

FrmCmp.MSFlexGrid.AddItem "", FrmCmp.MSFlexGrid.Rows

GrdEstoque.Col = 0

GrdEstoque.Row = 0

FrmCmp.MSFlexGrid.TextMatrix(FrmCmp.MSFlexGrid.Rows - 1, 0) = GrdEstoque.Text

GrdEstoque.Col = 1

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text

GrdEstoque.Col = 5

FrmCmp.MSFlexGrid.TextMatrix(1, 2) = GrdEstoque.Text

GrdEstoque.Col = 4

FrmCmp.MSFlexGrid.TextMatrix(1, 3) = GrdEstoque.Text

GrdEstoque.Col = 7

FrmCmp.MSFlexGrid.TextMatrix(1, 4) = GrdEstoque.Text

Unload Me

End Sub

Me ajuda brother e desculpa minha ignorancia, mais não consegui fazer funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

é mas você teria q pegar pela linha FrmCmp.MSFlexGrid.Rows - 1 em todas as colunas. veja q você ta pegando só na coluna 0, por isso preenche só a primeira.

tipo você teria q fazer assim:

FrmCmp.MSFlexGrid.TextMatrix(FrmCmp.MSFlexGrid.Rows - 1, x) = GrdEstoque.Text

pra todas as colunas (onde x é o numero da coluna. veja q no codigo acima, você esta pegando a linha 1 das demais colunas:

FrmCmp.MSFlexGrid.TextMatrix(1, 1) = GrdEstoque.Text
Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, você está absolutamento certo brother, desde a última resposta sua, onde você dizia passei uma idéia de como fazer isso, e eu não conseguia fazer funcionar, mais aí fiquei imaginando uma coisa se o Kuroi falou isso é porque a xarada é essa, e daí neste fim de semana eu fiquei em cima das linhas e fiz funcionar. Agora meu amigo, muito obrigado por sua força valeu mesmo mano.

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...