Editar arquivo salvo que está ordenado no DBGrid
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:
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
Curtidas 0
Respostas
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
Sydhnney
flw
GOSTEI 0
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];
[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
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.!!!
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
28/12/2004
:P Muito obrigado, mesmo funcionou perfeitamente, fico te devendo 1 :P
GOSTEI 0
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
28/12/2004
Isso aí guri!!!
Qualquer coisa estamos aí...
Falow
Qualquer coisa estamos aí...
Falow
GOSTEI 0
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.
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
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
´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
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:
Espero que ajude
Até+
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
28/12/2004
Muito obrigado pelas dicas. Espero que no futuro eu tbm possa ajudar.
GOSTEI 0