Valeu lampada... ja melhorou muito... fiz dessa forma:
q1.Close;
q1.SQL.Clear;
q1.SQL.Text := 'insert into VENDA_001 (CODIGO,DATA,DESCRICAO,GRUPO,QUANTIDADE,VALOR,VALORTOTAL,FORNECEDOR)'+
'select CODIGO,DATA,DESCRICAO,GRUPO,QUANTIDADE,VALOR,VALORTOTAL,FORNECEDOR from CAIXA where CLIENTE = :vCodCliente and MARCADO = :vMarc order by DATA';
q1.ParamByName('vCodCliente').AsInteger := qClientesCODIGO.AsInteger;
q1.ParamByName('vMarc').AsInteger := 'SIM';
q1.ExecSQL;
Até aqui ta legal... mas se trata de um software em uma loja que vende roupas e calçados. O que acontece é que alguns clientes levam para provar e uns dias depois vão até a loja, e nem sempre ficam com todos os produtos que levou... eu precisava com que os itens dessa puxada voltassem ao estoque logo após o ExecSQL, pois qdo a mercadoria é levada o estoque é baixado... mas eu não queria colocar esse resultado num while editando a tabela ESTOQUE.
Alguma dica ?
Valeu + uma vez.
Sérgio