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.
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
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)