Copiar Registro de uma tabela p/ outra tabela

18/03/2003

0

Olá Galera,

Gostaria que vcs me dessem uma ajudinha. Tenho uma tabela cadastro e outra tabela Aniversariantes. Gostaria que ao dar um clique no botao, fosse feita uma copia de registros, da tabela de cadastro para a tabela de aniversariantes, onde ambas contem os mesmos campos, só que eu gostaria q só fosse copiados os registros dos aniversariantes do dia. Como faço isso?

Banco: DBF
Delphi: 6.0

Eu já tentei isso:

Query1.SQL.Text:=´INSERT INTO Aniver SELECT * FROM Cadastro WHERE EXTRACT(DAY FROM NASC) = :DIA and EXTRACT(MONTH FROM NASC) = :MES´;
Query1.ParamByName(´DIA´).AsInteger := StrToInt( FormatDateTime( ´DD´,Date ) );
Query1.ParamByName(´MES´).AsInteger := StrToInt( FormatDateTime( ´MM´,Date ) );
Query1.ExecSQL;
Application.MessageBox(´Transferência bem Sucedida!!!´,´Retorno´,64);

Mas nao funcionou, deu uma mensagem de erro: Invalid Parameter, nao sei o que fiz errado.

Obrigado

Vivian

-------------------------------------------------------------------------------------
Mensagem de:

Poeta Noturno



Registrado em: Quarta-Feira, 12 de Fevereiro de 2003
Mensagens: 45

Enviada: Ter Mar 18, 2003 4:49 pm Assunto:

--------------------------------------------------------------------------------

faça o seguinte:

var
dia, diah, mes, mesh, ano, anoh: word;

while aniversariantes.recordcount > 0 do
aniversariantes.delete;

with cadastro do
begin
filtered := true;
first;
while not eof do
begin
decodedate(fieldbyname(´nascimento´).asdatetime,ano,mes,dia);
decodedate(date,anoh,mesh,diah);
if (dia = diah) and (mes = mesh) then
begin
aniversariantes.append;
aniversariantes.edit;
[inclui os dados de cada campo]
aniversariantes.post;
end;
next;
end;
end;


Para que isso funcione os campos devem ter o mesmo nome, correto? se tiver um campo com o nome diferente, nao dará certo? Eu gostaria de selecionar os campos do tabela. Tipo Cadastro (Matricula, Nome, End, Bairro, etc).

Tem como? E esse código copia os registro de uma tabela para outra? O q apareceu na minha tabela foram registros em branco.

Obrigado mesmo .. Já tentei várias coisas, mas nao deu certo.


Anonymous

Anonymous

Responder

Posts

18/03/2003

Poeta Noturno

Não precisa necessariamente os campos das duas tabelas terem o mesmo nome, basta terem o mesmo uso em situações iguais.
Você pode selecionar os campos que você quiser, sem problema nenhum.

faça desta forma:

tabela1.fieldbyname(´campo´).asinteger := tabela2.fieldbyname(´campo´).asinteger;

para que isto dê certo, os campos tem que te ter o mesmo tipo de dados ou caso contrário dará erro, a não ser que você converta os dados com funções de conversão como strtoint, strtodate, inttostr ou datetostr, e assim por diante.

Espero ter solucionado sua dúvida.

Um abraço querida

Poeta Noturno


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar