Como faço p/ copiar resgitros de uma tabela p/ outra?
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:
[i:7160cbcc27][b:7160cbcc27]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);[/b:7160cbcc27][/i:7160cbcc27]
Mas nao funcionou, deu uma mensagem de erro: Invalid Parameter, nao sei o que fiz errado.
Obrigado :lol:
Vivian
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:
[i:7160cbcc27][b:7160cbcc27]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);[/b:7160cbcc27][/i:7160cbcc27]
Mas nao funcionou, deu uma mensagem de erro: Invalid Parameter, nao sei o que fiz errado.
Obrigado :lol:
Vivian
Viviankb
Curtidas 0
Respostas
Poeta Noturno
18/03/2003
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;
Espero que te sirva.
Um abraço
Poeta Noturno
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;
Espero que te sirva.
Um abraço
Poeta Noturno
GOSTEI 0
Anonymous
18/03/2003
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?
Obrigado mesmo .. Já tentei várias coisas, mas nao deu certo.
Eu fiz o q vc me recomendou e deu o seguinte erro: Project ProjetoAniver.exe raised exception class EDatabaseError with message ´Query_Aniver. Cannot perform this operation on a closed dataset.
Tem como?
Obrigado mesmo .. Já tentei várias coisas, mas nao deu certo.
Eu fiz o q vc me recomendou e deu o seguinte erro: Project ProjetoAniver.exe raised exception class EDatabaseError with message ´Query_Aniver. Cannot perform this operation on a closed dataset.
GOSTEI 0