GARANTIR DESCONTO

Fórum Copiar o registro anterior e usar parte dele #341307

04/05/2007

0

Estou usando o MySQL e o Delphi 7.
Preciso copiar parte de um registro da tabela e colocar no próximo registro. Ex: Minha tabela tem 5 campos diferentes e preciso copiar 2 campos do registro atual e usar para o próximo registro, mas não me interessa copiar esses campos para sempre.
Ouvi falar de um comando chamado Carry ou Set Carry do SQL, mas não sei usar isso.
Alguém pode me ajudar?


Mcsmarmcs

Mcsmarmcs

Responder

Posts

04/05/2007

Mcsmarmcs

Só pra complementar: eu gostaria que no próximo registro os dados aparececem em campos edit.


Responder

Gostei + 0

04/05/2007

Adriano Santos

Cara não tem muito segredo, eu acho. Não sei se entendi direito.
Eu criaria variáveis pra armazenar temporariamente os valores dos campos que precisa e daria um next na tabela. Depois do next você edita o registro e passa para os campos os valores armazenados nas variáveis. Assim:

procedure TForm1.Button1Click(Sender: TObject);
var
  Nome: string;
  Endereco: string;
begin
  Nome := ClientDataSet1.FieldByName(´NOME´).Asstring;
  Endereco := ClientDataSet1.FieldByName(´ENDERECO´).Asstring;
  ClientDataSet1.Next;
  ClientDataSet1.Edit;
  ClientDataSet1.FieldByName(´NOME´).Asstring := Nome;
  ClientDataSet1.FieldByName(´ENDERECO´).Asstring := Endereco;
  ClientDataSet1.Post;
  ClientDataSet1.ApplyUpdates(0);
  Edit1.Text := Nome;
  Edit2.Text := Endreco;
end;



Responder

Gostei + 0

05/05/2007

Mcsmarmcs

Na verdade, foi ainda mais simples, com o código abaixo consegui resolver. A diferença é que estou usando componentes ADO e você deve estar usando dbExpress.

var
data: string;
begin
data := QRYfuturo.FieldByName(´data´).Asstring;
QRYfuturo.Next;
QRYfuturo.Insert;
QRYfuturo.FieldByName(´data´).Asstring := data;
end;

Mas ainda não acabou, tem um campo que precisa se repetir, mas ele está em um local qualquer da tabela.
Ex: Ao entrar com o conteúdo do campo, seria necessário trazer algumas informações referentes a este campo.
Devo usar alguma consulta?


Responder

Gostei + 0

05/05/2007

Paullsoftware

e que tipo de campo seria esse?


Responder

Gostei + 0

05/05/2007

Adriano Santos

Na verdade, foi ainda mais simples, com o código abaixo consegui resolver. A diferença é que estou usando componentes ADO e você deve estar usando dbExpress.

É isso ai, uso DBX, mas o princípio é o mesmo.


Responder

Gostei + 0

05/05/2007

Mcsmarmcs

É um campo chamado nome e é do tipo string.
Ao criar um novo registro, eu digito algo neste campo nome e deve haver uma consulta pra verificar se o conteúdo deste campo já existe.
Se o que digitei já existir, pego o conteúdo do campo data do registro antigo e replico no campo data do registro atual.


Responder

Gostei + 0

05/05/2007

Paullsoftware

Esse nome seria o nome de um pessoa, tipo cliente??

se for, não acha meio impróprio essa técnica? uma vez que exitam umas 30 [b:ababbc3ee7]Maria José da Silva[/b:ababbc3ee7] como faria pra saber qual é? não sei se essa seria a melhor solução para o seu problema, ainda não entendi exatamente o que você quer fazer realmente... :roll:


Responder

Gostei + 0

05/05/2007

Mcsmarmcs

Vai haver nomes repetidos mas só do mesmo cliente, o que vai diferenciar é um campo data, mas eu gostaria de pegar a última vez que cada cliente estava presente.


Responder

Gostei + 0

05/05/2007

Paullsoftware

você pode fazer uma pesquisa auxiliar no evento OnExit do DbEdit correspondente, para usar o conteudo digitado em uma pesquisa na tabela, claro que tb deve ser usado uma query auxiliar para isso...
é só uma ideia...:wink:


Responder

Gostei + 0

05/05/2007

Mcsmarmcs

Você poderia me dar um exemplo?


Responder

Gostei + 0

06/05/2007

Adriano Santos

Você poderia me dar um exemplo?


procedure TForm1.DBEditPesquisaExit...;
begin
  with QueryAuxiliar do
  begin
    Close;
    Sql.Clear;
    Sql.Add(´SELECT * FROM TABELA WHERE CAMPO= :PESQUISA´);
    ParamByName(´PESQUISA´).AsString := DbEditPesquisa.Text;

    Open;
    if not IsEmpty then
      //Faz alguma coisa.
    Close;
  end;
end;



Responder

Gostei + 0

06/05/2007

Paullsoftware

[quote:f4d1632d9d=´Adriano Santos´]
Você poderia me dar um exemplo?


procedure TForm1.DBEditPesquisaExit...;
begin
  with QueryAuxiliar do
  begin
    Close;
    Sql.Clear;
    Sql.Add(´SELECT * FROM TABELA WHERE CAMPO= :PESQUISA´);
    ParamByName(´PESQUISA´).AsString := DbEditPesquisa.Text;

    Open;
    if not IsEmpty then
      //Faz alguma coisa.
    Close;
  end;
end;
[/quote:f4d1632d9d]
Valeu [b:f4d1632d9d]x-man[/b:f4d1632d9d] pela força!!! :wink:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar