Editar arquivo salvo que está ordenado no DBGrid

Delphi

28/12/2004

Helo Pessoal 8)

Estou com a seguinte dúvida, ou melhor, não tenho idéia de como fazer,
tenho um form com um DBGrid (conectado a um datasource4), dou 2 cliques nele e ele mostra no form3 com 3 DBTexts (conectado ao datasource4 também).

Até ae tudo bem, :arrow: o que quero é que, ao clicar em um botão, ele copie os dados dos DBTexts para os DBEdits para que possa alterar algo (nome, endereço, etc) só que quando clico e exporto os dados, ao clicar no DBEdit (que está conectado a o DataSource1) ele retorna com os ultimos dados que foram salvos na tabela. :shock:


Vagner.oliveira

Vagner.oliveira

Curtidas 0

Respostas

Sydhnney

Sydhnney

28/12/2004

Passe o código que vc está utilizando para abrir o outro form e exportar os dados. Vc está usando uma Query ou Table? Se for table não deveria fazer isso e se vc usar o comando locate (table1.locate...).

Sydhnney
flw


GOSTEI 0
Vagner.oliveira

Vagner.oliveira

28/12/2004

[b:c8582e0751]procedure [/b:c8582e0751]TForm1.DBGrid1DblClick(Sender: TObject);
[b:c8582e0751]begin[/b:c8582e0751]

DBEdit1.Text:=Query1.FieldByName( ´Nome´ ).AsString;
DBEdit2.Text:=Query1.FieldByName( ´Endereço´ ).AsString;
DBEdit3.Text:=Query1.FieldByName( ´Telefone´ ).AsString;
DBEdit4.Text:=Query1.FieldByName( ´Telefone2´ ).AsString;
[b:c8582e0751]end[/b:c8582e0751];


GOSTEI 0
Sydhnney

Sydhnney

28/12/2004

Da maneira q vc faz não vai funcionar!!!

Pelo que entendi vc está usando Table para inserir, gravar, alterar, etc... e uma Query para efetuar pesquisa.
Bom...para poder alterar registros vc tem que setá-lo primiero na Table, usando o camando Table.Locate.

Por exemplo.
Vc acabou de fazer a pesquisa, através de uma query e ela retornou vários registros para vc. Na procedure ´procedure TForm1.DBGrid1DblClick(Sender: TObject);´ faça assim.
1) Declare uma varíavel para receber o indice da tabela; (var...)
1) Grava o indice do registro selecionado nesta variável;
2) Use este comando para setar o registro. Table1.locate(´indice´,variável,[])

Pronto
A table está setada e pronto para alterar os dados.

Se não conseguir pesquise sobre o comando comando Locate, pertencente a TTable, concerteza vai resolver seu problema.!!!


GOSTEI 0
Vagner.oliveira

Vagner.oliveira

28/12/2004

:P Muito obrigado, mesmo funcionou perfeitamente, fico te devendo 1 :P


GOSTEI 0
Vagner.oliveira

Vagner.oliveira

28/12/2004

:P Muito obrigado mesmo, funcionou perfeitamente, fico te devendo 1 :P


agora ta correta a frase :oops:


GOSTEI 0
Sydhnney

Sydhnney

28/12/2004

Isso aí guri!!!

Qualquer coisa estamos aí...


Falow


GOSTEI 0
Pistesil

Pistesil

28/12/2004

Oi a todos
Eu tenho 2 dúvidassobre o comando locate a primeira é se posso utiliza-lo em uma query, se sim ,como faço. E a segunda é se posso utilizalo em mais de um campo (ex Nome e codigo).
Desde ja agradeço pela atencao.


GOSTEI 0
Sydhnney

Sydhnney

28/12/2004

Sim é possível utilizar locate com uma query...na verdade a maneira de utilização é identica ao da table. Código exemplo usando query:

´query1.Locate(´nome´,edit1.text,[locaseinsensitive,lopartialkey])´

locaseinsensitive = para não fazer diferenciação de maiuscula e minuscula
lopartialkey = para fazer a busca parcial. Se vc digitar ´A´ ela já seta um registro que começe com a letra ´A´.

Quanto a sua segunda pergunta, usar este comando em dois campos eu nunca vi...eu tentei aki e não deu. Mas vc pode contornar isso utilizando o IF..then.
Por exemplo: Vc colocaria dois radiobuttons no form. Um para pesquisar pelo nome e outro pelo código e no evento onClick do button colocaria o código como segue abaixo:

If radiobutton1.Checked = true then
begin
query1.Locate(´nome´,edit1.text,[locaseinsensitive,lopartialkey]);
end;

If radiobutton2.Checked = true then
begin
query1.Locate(´código´,edit1.text,[locaseinsensitive,lopartialkey]);
end;

concerteza resolve tb....
blz...espero ter ajudado

falow


GOSTEI 0
Paulo_amorim

Paulo_amorim

28/12/2004

Olá

Pode-se utilizar o locate em mais de um campo sim. Deve-se, para tanto, utilizar um array ao passar os valores:

DataSet.Locate( ´campo1;campo2´, VarArrayOf([valor1, valor2]), []);


Espero que ajude
Até+


GOSTEI 0
Pistesil

Pistesil

28/12/2004

Muito obrigado pelas dicas. Espero que no futuro eu tbm possa ajudar.


GOSTEI 0
POSTAR