Jump to content
Fórum Script Brasil
  • 0

DbGrid x Flexgrid


George Ferraz

Question

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)

Edited by George Ferraz
Link to comment
Share on other sites

25 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by George Ferraz
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

pelo numero não da pra saber, poste sempre a descricao do erro e sempre aponte qual a linha q da beleza??

olhando assim, acho q o erro é aqui:

FrmCmp.MSFlexGrid.Rows = FrmCmp.MSFlexGrid.Row - 1
acho q era isso q você queria??
FrmCmp.MSFlexGrid.Row = FrmCmp.MSFlexGrid.Rows - 1

Link to comment
Share on other 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

Edited by George Ferraz
Link to comment
Share on other 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.

Edited by kuroi
pra q tamanho 5??
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...