Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renanbg

[Resolvido] Delete e Insert

Recommended Posts

Então pessoal, o banco é paradox com tables, querys e datasources no delphi 5

 

Tenho uma tabela chamada tbduplicatas onde gravo todas as duplicatas que chegam.

 

Queria pegar as duplicatas que ja estao vencidas e jogar em uma tabela chamada tbvencidas e logo em seguida deletar essas mesmas da tabela tbduplicatas

 

Alguem pode me ajudar a construir o codigo?

 

Para deletar pensei em algo assim:

 

QueryDeleta.Close;
QueryDeleta.SQL.Clear;
QueryDeleta.SQL.Text := 'Delete from tbduplicatas WHERE Vencimento < datetostr(date)';
QueryDeleta.Prepare;
QueryDeleta.Open;

Ainda n testei esse codigo, mas deve ser algo assim

 

me falta agora a ideia para pegar tudo que esta vencido e jogar na outra tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

comando 1 - você insere na outra tabela

insert into tbvencidas 
select campo1, campo2 from tbduplicatas where vencimento < data_atual

comando 2 - você apaga

delete from tdduplicatas where vencimento < data_atual

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi, eu não sei muito bem delphi ainda, mais em php eu faria algo assim (talves da pra adapta):

 

Eu criaria uma tabela só, com um campo a mais -> vencido -> "S" (sim) ou "N" (não).

 

Por default deixaria tudo "N", ai quando vencesse eu marcaria S, ai na hora fazer uma pesquisa pra mostrar só as vencidas ou só as não vencidas, ai você colocaria um WHERE na sql tipo '... WHERE vencido = "S" ...', algo assim acho que seria menos complicado e ficaria mais leve, pq você não prescisaria criar outra tabela e cadastrar os dados tudo de novo.

 

 

beleza qualquer coisa estamos ai, flw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

comando 1 - você insere na outra tabela

insert into tbvencidas 
select campo1, campo2 from tbduplicatas where vencimento < data_atual

comando 2 - você apaga

delete from tdduplicatas where vencimento < data_atual

Boa tarde, estou começando a olhar isso agora e fiz o seguinte:

 

Var
Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'Insert into tbvencidas select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje';
Query1.Prepare;
Query1.Open;

Mas da o erro abaixo:

 

Imagem Postada

 

Alguma sugestão?

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

comando 1 - você insere na outra tabela

insert into tbvencidas 
select campo1, campo2 from tbduplicatas where vencimento < data_atual

comando 2 - você apaga

delete from tdduplicatas where vencimento < data_atual

Boa tarde, estou começando a olhar isso agora e fiz o seguinte:

 

Var
Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'Insert into tbvencidas select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje';
Query1.Prepare;
Query1.Open;

Mas da o erro abaixo:

 

Imagem Postada

 

Alguma sugestão?

 

obrigado

 

 

Você tem um parâmetro :Hoje mas pelo visto não esta passando nada de informação para o mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso você esta atribuindo a variável, você precisa passar parâmetro para dentro da query:

 

var
	Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'Insert into tbvencidas select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje';
Query1.ParamByName('Hoje').Value:=StrToDate(Hoje);
Query1.Prepare;
Query1.Open;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê mais detalhes da sua situação, quais componentes que esta usando, e o fonte agora alterado.

estou usando delphi 5 com bde e tabelas paradox

 

tenho essa tabela de duplicatas ond egravo todas elas

 

então criei uma tabela chamada tbvencidas

 

o que desejo fazer é selecionar todas os registros que estejam vencidos na tbduplicatas e inseri-los na tbvencidas e em seguida apaga-los da tbduplicatas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio, acho que tem algum problema nessa linha do select, pq olha como deixei o codigo mais simples e mesmo assim da invalid parameter

 

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'Insert into tbvencidas select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas';
Query1.Prepare;
Query1.Open;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me esqueci de colocar antes, mas precisa mudar o comando para ExecSQL, ficando:

 

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into tbvencidas select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas'_;
Query1.ExecSQL;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente o mesmo erro marcio...

 

as duas tabelas tem a mesma estrutura e o tamanho dos campos são iguais..será q é problema pq o banco é paradox?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Declara os campos, quem sabe ajude:

 

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into tbvencidas (Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento) select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas');
Query1.ExecSQL;

Bom, não sei se pode ser o paradox, não utilizo esse BD, mas o comando já usei várias vezes, sempre funcionou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ufa...deu certo marcio

 

finalizei assim:

 

var
	Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into tbvencidas (Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento) select Cedente, Data_doc, Num_doc, Valor, Status, Estabelecimento from tbduplicatas where vencimento <:Hoje');
Query1.ParamByName('Hoje').Value:=StrToDate(Hoje);
Query1.ExecSQL;

Agora o delete:

 

var
	Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Delete from tbvencidas where vencimento <:Hoje');
Query1.ParamByName('Hoje').Value:=StrToDate(Hoje);
Query1.ExecSQL;
end;

Mas n esta deletando, alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vixe....pra você ver como eu to distraido..heheheh

 

então assim ficou o codigo para deletar caso mais alguem precise

 

var
	Hoje: String;
begin
Hoje := DateToStr(Date);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Delete from tbduplicatas where vencimento <:Hoje');
Query1.ParamByName('Hoje').Value:=StrToDate(Hoje);
Query1.ExecSQL;
frmdm.tbduplicatas.refresh;

coloquei um refresh na table para atualizar o dbgrid após deletar os itens

 

Marcio, muito obrigado pela ajuda, sem você eu estaria ainda pedalando aqui...hehehehe!

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.