Como deletar vários registros ao mesmo tempo ?
Gigatel
Respostas
Rjun
22/08/2005
DELETE FROM Tabela WHERE Codigo = 10
Gigatel
22/08/2005
DELETE FROM Tabela WHERE Codigo = 10
Olha isso..esta é minha tabela..
DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE Codigo = 10
dá este erro..
[Error] Unit28.pas(444): ´(´ expected but identifier ´FROM´ found
Rjun
22/08/2005
1) Que banco você esta usando?
2) Qual a tecnologia de acesso?
3) Onde você pos essa instrução SQL?
Gigatel
22/08/2005
1) uso interbase,
2) uso uma IBquery + IBUpdat + Datasouce
3) coloquei no botão..
desculpe num sou muito bom em sql..se vc pudesse me ajudar me mostrando o o código inteiro..
este é o nome da tabela..ORCAMENTO_OFIC_ELET_ITENS ...
este é o nome que coloquei na IBquery....BD_ORCA_ITENS....
Vlw...
Rjun
22/08/2005
Crie uma Query. Vou chama-la de qryApaga. No botão, coloque o seguinte código:
qryApaga.SQL.Clear; qryApaga.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE Codigo = ´ + IntToStr(Codigo)); qryApaga.ExecSql;
Assim, isso é uma idéia. Se alguem que manja de IB puder ajudar mais, então poste aí.
Gigatel
22/08/2005
qryApaga.SQL.Clear; qryApaga.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE Codigo = ´ + IntToStr(Codigo)); qryApaga.ExecSql;
Montei o sódigo..
BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE Codigo = ´ + IntToStr(BD_ORCA_ITENSGS_OOEI_CODIGO)); BD_ORCA_ITENS.ExecSql;
está dando este erro....
[Error] Unit28.pas(445): There is no overloaded version of ´IntToStr´ that can be called with these arguments
Gigatel
22/08/2005
O nome do componente ( ibquery )é.. BD_ORCA_ITENS ..
O nome do campo código é ... BD_ORCA_ITENSGS_OOEI_CODIGO ...
Só para eclarecimento..
Rjun
22/08/2005
Você esta tentando passar um TField como parâmetro em IntToStr. Coloque BD_ORCA_ITENSGS_OOEI_CODIGO.Value.
Eu evito fazer o q vc fez. Prefiro utilizar FieldByName.
BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE Codigo = ´ + IntToStr(BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODIGO´).Value)); BD_ORCA_ITENS.ExecSql;
Gigatel
22/08/2005
BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE Codigo = ´ + IntToStr(BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODIGO´).Value)); BD_ORCA_ITENS.ExecSql;
o campo em questão estva errado...agora está o código com os campos certos...
BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE GS_OOEI_CODACES = ´ + IntToStr(BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODACES´).Value)); BD_ORCA_ITENS.ExecSql;
Mas está dando este erro..
Project Teste.exe raised execption class EVariantTyeCastError..Não é possivel converter tipo de variant (null) em tipo (integer)...[/img]
Imoreira
22/08/2005
BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE GS_OOEI_CODACES = ´ + quotedstr(BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODACES´).asString));
BD_ORCA_ITENS.ExecSql;
Gigatel
22/08/2005
Tá complicado amigo...hehehehe..tem que rir pra naum chorar...agora deu este erro..
exception class EIBInterbaseError with message..erro de conversão da string..
Gandalf.nho
22/08/2005
BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE GS_OOEI_CODACES = :vGS_OOEI_CODACES´); BD_ORCA_ITENS.ParamByName(´vGS_OOEI_CODACES´).AsInteger := BD_ORCA_ITENSGS_OOEI_CODACES.Value; BD_ORCA_ITENS.ExecSql;
Jujan
22/08/2005
IBQuery1.sql.clear;
IBQuery1.sql.add(´delete from <nome_da_tabela>´);
IBQuery1.sql.add(´where <nome_do_campo> like´+QuotedStr(edit1.text));
try
IBQuery1.open;
except
end;
Gigatel
22/08/2005
BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(´DELETE FROM ORCAMENTO_OFIC_ELET_ITENS WHERE GS_OOEI_CODACES = :vGS_OOEI_CODACES´); BD_ORCA_ITENS.ParamByName(´vGS_OOEI_CODACES´).AsInteger := BD_ORCA_ITENSGS_OOEI_CODACES.Value; BD_ORCA_ITENS.ExecSql;
Parece que está desligando a tabela e os ítens não apagam..más parou de dá erro...
Gigatel
22/08/2005
Onde este edit1 entraria na minha função...
Gigatel
22/08/2005
Onde este edit1 entraria na minha função...[/quote:7ca492b924]
BD_ORCA_ITENS.close; BD_ORCA_ITENS.sql.clear; BD_ORCA_ITENS.sql.add(´delete from ORCAMENTO_OFIC_ELET_ITENS´); BD_ORCA_ITENS.sql.add(´where GS_OOEI_CODACES like´+QuotedStr(edit4.text)); try BD_ORCA_ITENS.open; except end;
eu coloco só para teste um edit4 para colocar o codigo (GS_OOEI_CODACES) manualmente....ele aparentemente até apaga más quando sai do programa e volta os dados não ficam apagado....
Rjun
22/08/2005
O exemplo da Gandalf.nho está perfeito.
Gigatel
22/08/2005
De fato parece que está funcionando..más não deleta...e desliga o DBgrid..
O DBGrid na primeira coluna fica QnT-UNT-Descrição-Valor Unt- Valor Total.
Quando click no botão onde está a função, ele desabilita o dbgrid...doideira...
Rjun
22/08/2005
Gigatel
22/08/2005
Na verdade é só isso aí mesmo... más deixa tentar explicar como funciona...Tenho um programa de Ordem de serviço....Tenho o cadastro de aparelhos onde alí entra todos os dados nescessários..Nesta OS exite 2 tabelas uma para o cadastro e outra para para o orçamento..as tabelas são relacionadas por códigos. Exemplo entrei com um novo registro este mesmo cria um código ( um auto incremento ). Tenho uma segunda tabela onde é recebido os ítens ou peças gastas neste Orçamento então o process é feito assim..
_FormOSOR.BD_ORCA_ITENS.Insert; _FormOSOR.BD_ORCA_ITENSGS_OOEI_CODACES.Value := _FormOSSaida.BD_OFC_ELEGS_OOE_CODIGO.value; _FormOSOR.BD_ORCA_ITENS.Post; _FormOSOR.BD_ORCA_ITENS.Close; _FormOSOR.BD_ORCA_ITENS.SQL.Clear; _FormOSOR.BD_ORCA_ITENS.SQL.Add(´select * from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES=´+inttostr(E)); _FormOSOR.BD_ORCA_ITENS.Open; Close;
Até aí funciona...más na hora de dar baixa n OS e consequentimento os ítens é que está dando problema...pois estou dando baixa somente na os e os ítens continua na tabela .... quando vou dar baixa tem um filtro onde tenho que chamar um forma para os precedimentos finais...este é o código
procedure T_FormOSSaida.ToolButton8Click(Sender: TObject); var e:integer; begin E:=_FormOSSaida.BD_OFC_ELEGS_OOE_CODIGO.Value; _FormOSSaidaB := T_FormOSSaidaB.Create(application); _FormOSSaidaB.BD_ORCA_ITENS.Close; _FormOSSaidaB.BD_ORCA_ITENS.SQL.Clear; _FormOSSaidaB.BD_ORCA_ITENS.SQL.Add(´select * from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES=´+inttostr(E)); _FormOSSaidaB.BD_ORCA_ITENS.Open; _FormOSSaidaB.showmodal; end;
aí vem somente os ítens referente ao código ao código da OS....e aí que o bicho pega.....este é o código da baixa da OS..
procedure T_FormOSSaidaB.Button1Click(Sender: TObject); var a,b,c : real; r: integer; g: string; begin QRLabel31.Caption := ´R$ ´+ _FormOSSaida.BD_OFC_ELEGS_OOE_VALOR_TOT.Value; QuickRep1.PrinterSettings.Copies := strtoint(Table5Imprime_Folhas_BX.value); r:= _FormOSSaida.BD_OFC_ELEGS_OOE_CODIGO.Value; g:=format(´¬5.5d´,[r]); if MessageDlg(´Deseja dar saída a O.S. do cliente ´ + _FormOSSaida.BD_OFC_ELEGS_OOE_NOME.Value + ´ ?´,mtConfirmation,[mbYes,mbNo],0)<>mrYes then Abort; Table3.Insert; Table3Origem.value := ´OS´; Table3CodigDoc.value := g; Table3Nome.value := _FormOSSaida.BD_OFC_ELEGS_OOE_NOME.Value; Table3CodAcess.Value := _FormOSSaida.BD_OFC_ELEGS_OOE_CODACES.Value; Table3DataEnt.value := _FormOSSaida.BD_OFC_ELEGS_OOE_DATA_ENT.Value; Table3Dataorcamento.value := _FormOSSaida.BD_OFC_ELEGS_OOE_DATA_ORC.Value; Table3ValorTot.value := Edit3.Text; Table3Decricao.value := _FormOSSaida.BD_OFC_ELEGS_OOE_APDESCR.Value; Table3Defeito.Value := _FormOSSaida.BD_OFC_ELEGS_OOE_DEF_ALEGADO.Value; Table3Marca.value := _FormOSSaida.BD_OFC_ELEGS_OOE_MARCA.Value; Table3Modelo.value := _FormOSSaida.BD_OFC_ELEGS_OOE_MODELO.Value; Table3Ndeserie.value := _FormOSSaida.BD_OFC_ELEGS_OOE_NSERIE.Value; Table3Datapreventr.value := _FormOSSaida.BD_OFC_ELEGS_OOE_DATA_ENT.Value; Table3DataOut.value := _FormOSSaida.BD_OFC_ELEGS_OOE_DATA_SAI.Value; Table3Resp.value := _FormOSSaida.BD_OFC_ELEGS_OOE_TEC_RESP.Value; // Table3Condsaida.value := _FormOSSaida.Table1Cond_saida.value; Table3.Post; a:=strtofloat(edit3.text); b:=strtofloat(_FormOSSaida.BD_OFC_ELEGS_OOE_VALOR_TOT.Value); c:= b-a ; QRLabel5.Caption := ´R$ ´+ floattostrf(c,ffFixed,10,2); QRLabel7.Caption := ´R$ ´+ Edit3.Text; r:= _FormOSSaida.BD_OFC_ELEGS_OOE_CODIGO.Value; g:=format(´¬5.5d´,[r]); QRLabel16.Caption:= g; if Application.MessageBox(´Imprimir documento de saida ?´ , ´Imprimir.´, MB_ICONQUESTION + MB_YESNO) = IDYES then QuickRep1.Print; _FormOSSaida.BD_OFC_ELE.Delete; Close; end;
Ao final deste ao código acima queria adicionar as funções...somente isso...más complicado...
Rjun
22/08/2005
Recomendações :
1) Use DataModule. Não faça isso que você fez. Acessar componentes de um outro Form a partir de outro.
2) Dê uma procurada em padrões de nomenclatura. Esse tipo de sintaxe com _FORM??????????? é dificil de entender.
3) Você está usando InterBase, certo? Evite usar TTABLE. Use TQUERY. Utilize instruções SQL para inserir registros. Assim como você usou SELECT, utilize INSERT/UPDATE/DELETE.
Gigatel
22/08/2005
1) Eu uso DataModule sim...por questões para facilitar um processo optei por usar assim para executar alguns cálculos....
2) Por isso que não queria mostrar os códigos..pois os padrões adotados por mim são de entendimento meu, más explicando isso ´ _Form´ e para facilitar o acesso pois com este ´_´o form fica como primeiro na janela o Objeto inspector facilitando assim o acesso ao form...
3) Por questões de compatibilidade eu sempre usei o IBQUERY, IBUpdateSQL e um DATA MODULE, más se num está dando certo deixa....
Agora a questão que foi colocada aki é o seguinte...eu num sabia como deletar vários arquivos, ou seja eu num tinha um código para isto, inclusive coloque um botão só para teste da função aki colocado..mostrei os campos e e as tabelas e estou testando más num funciona...
espero ter esclarecido..mas acho que suas questões referentes 1 e 2 num afeta diretamente o meu código..... o que eu quero deleter arquivos filtrados por um codigo e em seguida deleta a tabela principal..más é isso aí...
Gigatel
22/08/2005
esta é a tela principal
[img][URL=http://imageshack.us][img:fde441c79a]http://img400.imageshack.us/img400/2199/telaprincipal8cy.jpg[/img:fde441c79a][/URL][/img]
esta é a tela da Baixa com os ítens..
[img][URL=http://imageshack.us][img:fde441c79a]http://img400.imageshack.us/img400/5583/gamdejuju0qn.jpg[/img:fde441c79a][/URL][/img]
Este a o problema ( eu acho )
[img][URL=http://imageshack.us][img:fde441c79a]http://img400.imageshack.us/img400/7682/gand9wr.jpg[/img:fde441c79a][/URL][/img]
está muito estranho.. é outra coisa,,, os códigos aki citados estão estão nos botoes Galf e juju..por tanto as funções não está na função final do programa....
Kenio_c
22/08/2005
1- coloque um componente IBSQL
procedure Apaga;
var SQL : String;
begin
SQL := ´ delete from NOME_DA_TABELA where CHAVE_PRIMARIA = ´
+´IntToStr(VALOR_CHAVE_PRIMARIA);
IBSQL.Close;
IBSQL.SQL.Clear;
IBSQL.SQL.Add(SQL);
IBSQL.ExecQuery;
end;
Gigatel
22/08/2005
Blz...coloquei o UBquery e coloque o neme de BD_ORCA_ITENS e o nome da tabela no IB é o ORCAMENTO_OFIC_ELET_ITENS e o campo com o grupo a ser deletado é o GS_OOEI_CODACES.. só que tem um detalhe achave primária não ceita números duplicados..o seja este campo (GS_OOEI_CODACES) Recebe valores iguais e mesmo este código abaixo está dando este erro...[Error] Unit28.pas(506): Unterminated string...Valew...
var SQL : String; begin SQL := ´ delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = ´ +´IntToStr(GS_OOEI_CODACES); BD_ORCA_ITENS.Close; BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Sandra
22/08/2005
Pela mensagem de erro e analisando o código, talvez esteja faltando a ( [b:c6ab280148]´[/b:c6ab280148] ) - aspa simples - ao encerrar a string do select.
var SQL : String; begin SQL := ´ delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = ´ +´IntToStr(GS_OOEI_CODACES)´; <= essa última BD_ORCA_ITENS.Close; BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Verifique!
Gigatel
22/08/2005
var SQL : String; begin SQL := ´ delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = ´ +´IntToStr(GS_OOEI_CODACES)´; <= essa última BD_ORCA_ITENS.Close; BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Corrigido..más agora dá isso..
[img][URL=http://imageshack.us][img:5b304f5f13]http://img201.imageshack.us/img201/7661/erro12nx.jpg[/img:5b304f5f13][/URL][/img]
xiiiiiii..
Sandra
22/08/2005
var SQL, Campo : String; begin Campo := IntToStr(BD_ORCA_ITENS.GS_OOEI_CODACES.asInteger); SQL := ´ delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = Campo´); BD_ORCA_ITENS.Close; BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Rjun
22/08/2005
var SQL: String; begin SQL := ´ delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = :Campo´); BD_ORC_ITENS.ParamByName(´Campo´).AsInteger := BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODACES´).asInteger BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Gigatel
22/08/2005
olhe o erro..
[img][URL=http://imageshack.us][img:a4f29214af]http://img292.imageshack.us/img292/7913/erro27uc.jpg[/img:a4f29214af][/URL][/img]
heheeh tá osso...
Rjun
22/08/2005
Sandra
22/08/2005
Campo := IntToStr(BD_ORCA_ITENSGS_OOEI_CODACES.asInteger);
PS: viu a resposta do Rjun que está antes da sua última postagem?
Gigatel
22/08/2005
más deu outro erro....
[img][URL=http://imageshack.us][img:aa3b8fc2cd]http://img329.imageshack.us/img329/7245/erro33na.jpg[/img:aa3b8fc2cd][/URL][/img]
Alías, pode colocar tudo isso de imagem aki no fórum ? eu que posso fazer é só agradecer a suas paciencias....vlw..
Rjun
22/08/2005
Gigatel
22/08/2005
Blz..minha joia..eu testei seu código dá este erro ao copilar
[img][URL=http://imageshack.us][img:8bf8b832da]http://img160.imageshack.us/img160/6391/erro42ba.jpg[/img:8bf8b832da][/URL][/img]
....
Rjun
22/08/2005
var SQL: String; begin SQL := ´delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = :Campo´; BD_ORC_ITENS.ParamByName(´Campo´).AsInteger := BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODACES´).asInteger BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Tem um paranteses no fim da linha...tira ele.
Sandra
22/08/2005
var SQL: String; begin SQL := ´delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = :Campo´; BD_ORC_ITENS.ParamByName(´Campo´).AsInteger := BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODACES´).asInteger ; <= aqui BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORCA_ITENS.ExecQuery; end;
Mais uma coisinha. Está faltando o ´;´ (ponto e vírgula) também. :D
Gigatel
22/08/2005
Rjun
22/08/2005
var SQL: String; begin SQL := ´delete from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES = :Campo´; BD_ORCA_ITENS.SQL.Clear; BD_ORCA_ITENS.SQL.Add(SQL); BD_ORC_ITENS.ParamByName(´Campo´).AsInteger := BD_ORCA_ITENS.FieldByName(´GS_OOEI_CODACES´).asInteger ; BD_ORCA_ITENS.ExecQuery; end;
Agora deve funcionar.
Gigatel
22/08/2005
Algum moderador poderia deletar foto acima que está fora do tamanho permitido aki no fúrum?
[Error] Unit28.pas(528): Undeclared identifier: ´ExecQuery´
[color=red:1ddf24f9c9]Editando o tópico:[/color:1ddf24f9c9]
Agora que postou, não tem problema, pode deixar. :wink:
Somente para as próximas vezes que incluir uma figura no tópico/post, após dar o printscreen, redimensione-a deixando um pouco menor e faça o upload... apenas isso.
Qualquer dúvida, entre en contato.
Sandra/Moderação
Gigatel
22/08/2005
Troquei a instrução esta instrução
BD_ORCA_ITENS.ExecQuery;
por esta
BD_ORCA_ITENS.ExecSql;
Funcionou quando saio da form más deleta...saio da baixa e volto novamente os dados estão todos lá...[/code]
Gigatel
22/08/2005
BD_ORCA_ITENS.Delete;
Só para testar se deleta mesmo...
Apaga más dá este erro ao sair do formulário..
[img][URL=http://imageshack.us][img:70a6fa286b]http://img380.imageshack.us/img380/7325/erro55nk.jpg[/img:70a6fa286b][/URL][/img]
Para minha supresa quando volto ao mesmo registro o arwuivo continua lá...acho que agora tenho um problema na tabela...O que vc´s acham ?[/code]
Gigatel
22/08/2005
Gigatel
22/08/2005
procedure T_FormOSSaida.ToolButton8Click(Sender: TObject); var e:integer; begin E:=_FormOSSaida.BD_OFC_ELEGS_OOE_CODIGO.Value; _FormOSSaidaB := T_FormOSSaidaB.Create(application); _FormOSSaidaB.BD_ORCA_ITENS.Close; _FormOSSaidaB.BD_ORCA_ITENS.SQL.Clear; _FormOSSaidaB.BD_ORCA_ITENS.SQL.Add(´select * from ORCAMENTO_OFIC_ELET_ITENS where GS_OOEI_CODACES=´+inttostr(E)); _FormOSSaidaB.BD_ORCA_ITENS.Open; _FormOSSaidaB.showmodal; end;
este código coloco no Butoon que entra no form da baixa...
Gigatel
22/08/2005
Gigatel
22/08/2005
dá uma olhada e me fala..
Gigatel
22/08/2005
é Pega os fontes aí..para evitar de um falar que estou vendendo algo..hehehehehee
Gigatel
22/08/2005
Gigatel
22/08/2005
Tive uma idéa más num sei se seria viável..acho que sobrecarregaria demais o programa..invés de deletar deixar como morto...porque tudo que se deleta nas minhas tabelas vão para um morto...como niguém aki no fórum conseguiu me ajudar nesta questão, acho que ficaria interessante deixar sem deletar, já que quando deleto um registro da tabela principal o morto herda todas as informações referente ao arqv. excluido aí e só associar o morto a tabela ítens..más fico com medo é que esta tabela recebe uma grande quant. de informação e pode ficar sobrecarregado.. com o tempo...
Gigatel
22/08/2005
var i,r: integer; n: real; begin n:= 0; r:= BD_CONT_REC.RecordCount; BD_CONT_REC.First; for i:=1 to r do begin n:= n + BD_CONT_RECGS_COR_VALOR_PARCELA.asfloat; BD_CONT_REC.Next; end;
Tira os cáculos e aproveita somente a parte que percorre a tabelae logo depois do next..colocar um delete..será que funciona ?
Gigatel
22/08/2005
var i,r: integer; begin r:= BD_ORCA_ITENS.RecordCount; BD_ORCA_ITENS.First; for i:=1 to r do begin BD_ORCA_ITENS.Next; BD_ORCA_ITENS.Delete; end;
Num acredito que perdí um tempão danado nisto ..más é assim mesmo que num perde....