ALTERAR APENAS A LINHA ALTERADA.

USUARIO.EXCLUIDOS 13/04/2007 09:04:54
#211674
minha dúvida é até a que perguntei em outro tópico mais eu esqueci de aproveitar aquele e fechei.

mais é o seguinte. eu trago numa flexgrid uma porrada de registro. e quando eu der um duplo clica em uma liha da grid irá abrir um form com os dados para eu poder alterar. então eu queria saber o seguinte: quando eu alterar alguma informação no form e e clicar em gravar meu form vai fechar... queria saber como eu faço para atualizar apenas a linha do grid do registro q eu alterei? fiz q tem lá o refresh mais naum adiantou.


USUARIO.EXCLUIDOS 13/04/2007 09:15:37
#211678
é simples...no seu form (onde altera os dados) quando clicar em gravar e antes de fechá-lo, vc faz o seguinte:

NomeFormOndeEsta_o_Grid.msflexgrid.text.TextMatriz(lLinha,lCol) = txtDado.text ' O txtDado.text é do form que vc abre para alterar o dado.

Detalhe: No msFlexGrid no evento (click ou double click) vc deve armazenar a linha e coluna atual do grid em duas variaveis (global ou publica do form), pois vc irá usar conforme exemplo acima:

NomeFormOndeEsta_o_Grid.msflexgrid.text.TextMatriz(lLinha,lCol) = txtDado.text

VBAPRENDE 13/04/2007 09:17:11
#211679
voce pode colocar assim:
'Quando Abrir o Formulario e o cara alterou os dados e clicou no botao alterar ai você faz assim:

Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,1)=text2.text
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,2)=text3.text
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,3)= text4.text


Ve se funciona...
USUARIO.EXCLUIDOS 13/04/2007 09:23:11
#211680
só q eu tenho q alterar de um jeito sem precisar passar os campos textos.

tipo pra remover uma linha do grid depois q clica em excluir fiz isso: If m_Acao = AC_EXCLUSAO And m_Gravou Then
If m_GridForm.Rows = 2 Then
m_GridForm.Rows = 1
Else
m_GridForm.RemoveItem m_iIndex
End If
End If

teria q ser mais ou menos assim. o problema é q naum tem um metodo para alterar. tentei o refresh mais naum adianta.
VBAPRENDE 13/04/2007 09:32:14
#211682
Amigo você que alterar o que?
FGSANTOS 13/04/2007 09:37:10
#211683
O flexgrid não é vinculado, entao nao tem como refresh atualizar OS DADOS a partir de um banco de dados. O refresh está atualizando a exibição do grid. Se vc nao fizer o que o FRAU ou VBAPRENDE disseram, nunca vai atualizar o grid. Se quiser um grid vinculado, utilize o DataGrid:

Abra um recordset (e deixe aberto) e mande este comando

set datagrid.datasource = rs

Pronto, seu grid é vinculado, assim refresh funciona, mas mesmo assim tem que reabrir o rs, para pegar os dados atuais da tabela.
USUARIO.EXCLUIDOS 13/04/2007 10:14:17
#211690
então eu coloquei assim:

frmSharedListaCadastro.grdLista.TextMatrix(frmSharedListaCadastro.grdLista.Row, 1) = txtDescricao.Text

só q está me dando erro de subscript out range.

esse form frmSharedListaCadastro.grdLista é q o tem a grid com os dados.

o campo txtDescricao.Text é o campo q eu alterei. depois q eu cliquei m gravar deu esse erro acima, pq?

VBAPRENDE 13/04/2007 10:22:06
#211691
Isso acontece porque a linha que você ta mandando imprimir frmSharedListaCadastro.grdLista.Row ela não existe ou é a primeira linha aonde fica o cabeçalho.
USUARIO.EXCLUIDOS 13/04/2007 13:41:01
#211740
só q a linha q estou clicando existe sim.

tanto q quando aparece o form os campos vem preenchidos.
USUARIO.EXCLUIDOS 13/04/2007 13:49:32
#211742
tem um outro problema. essa minha tela q tem a grid serve para todos os cadastros q tem no sistema. as vezes muitos dos campos de um form naum vão corresponder nessa coluna do grid.
USUARIO.EXCLUIDOS 13/04/2007 14:39:30
#211759
RAFA.CRM eu o VBAPRENDE e o FGSANTOS já postamos a solução com MSFLEXGRID...se vc quer de outro jeito use o DATAGRID (Conforme exemplo do FGSANTOS)...
Tópico encerrado , respostas não são mais permitidas