[firebase-br] Off-Topic Duvidas com IBO
MagnoS
magnoscosta em bol.com.br
Seg Mar 10 06:13:23 -03 2008
Só uma pergunta....
Pra cada venda vc tem só 1 item????
Pq desta forma ai vc faz o loop em Vendas e nao faz nos itens... ta certo
isso??
Bom.. caso tenha mais de um item vou dar a dica, caso contrario
desconsidere:
Vendas.Close;
...
Vendas.Open;
while not Vendas.eof do
begin
Itens.Close;
...
ItensOpen;
while not Itens.Eof do
begin
Nova.Insert;
...
Nova.Post;
Itens.Next;
end;
Vendas.Next
end;
flw
----- Original Message -----
From: "Forum ASR & Associados" <forum em asreassociados.com.br>
To: <paulollazaro em gmail.com>; "FireBase" <lista em firebase.com.br>
Sent: Sunday, March 09, 2008 2:34 AM
Subject: Re: [firebase-br] Off-Topic Duvidas com IBO
Vamos lá ao código:
IB_Vendas.Close;
IB_Vendas.SQL.Clear;
IB_Vendas.SQL.Add('SELECT PEDIDO, NOTAFISCAL, CODCLIENTE,
NOMECLIENTE, DATA, ');
IB_Vendas.SQL.Add('FROM VENDAS WHERE DATA BETWEEN :DATAI AND :DATAF
ORDER BY NOTAFISCAL');
IB_Vendas.Prepare;
IB_Vendas.Params[0].Value := IB_DateTimePicker1.Date;
IB_Vendas.Params[1].AsDate := IB_DateTimePicker2.Date;
IB_Vendas.Open;
IB_ITENSVENDAS.SQL.Clear;
IB_ITENSVENDAS.SQL.Add('SELECT PEDIDO, TRANSPORTADORA, NATUREZA,
QUANTIDADE, TOTALNF ');
IB_ITENSVENDAS.SQL.Add('FROM ITENSVENDAS WHERE PEDIDO = :nroped
ORDER BY PEDIDO');
IB_ITENSVENDAS.Prepare;
While not IB_Vendas.EOF do
begin
IB_ITENSVENDAS.Close;
IB_ITENSVENDAS.Params[0].AsInteger :=
IB_Vendas.FieldByName('PEDIDO').AsInteger;
IB_ITENSVENDAS.Open;
// a linha para adicionar um novo registro
IB_NOVATB.Append;
IB_NOVATB.FieldByName('PEDIDO').AsString :=
IB_VENDAS.FieldByName('PEDIDO').AsInteger;
IB_NOVATB.FieldByName('TRANSPORTADORA').AsInteger :=
IB_ITENSVENDAS.FieldByName('TRANSPORTADORA').AsInteger;
IB_NOVATB.FieldByName('QUANTIDADE').AsInteger :=
IB_ITENSVENDAS.FieldByName('QUANTIDADE').AsInteger;
IB_NOVATB.Post;
IB_Vendas.Next;
end;
Considerações: tente utilizar um IB_cursor para fazer essas tarefas ou
ainda o IB_query o objeto tabela é muito lento !
Sem falar que vc poderia fazer um procedure dentro do banco e copiar
internamente o conteúdo de ambas, colocando todos os objetos numa mesma
transação
Outra não estou vendo o controle transacional
(IB_transaction.StartTransaction e o commit na última linha).
Espero ter ajudado !
Atenciosamente,
Airton Salviano
Analista de Sistemas
www.asrtecnologia.com.br
www.pedeborracha.com
paulollazaro - Gmail escreveu:
> boa noite a todos
>
> Me desculpem novamente pelo off-topic, mas estou tentando fazer esta
> rotina, mas não está dando certo. Se alguem puder me ajudar?
>
> Utilizo D7, IBO e Firebird.
>
> O que eu gostaria de fazer é o seguinte: ler duas tabelas e gravar
> alguns dados numa terceira tabela, a query que receberá os dados está
> com generate EditSQL, generate insertSQL e Generate DeleteSQL marcados.
>
> É a primeira vez que faço desta forma, utilizava IBO com IBOTABLE, e
> agora estou apanhando mais que vaca na horta.
>
> O que acontece, o programa executa o while, mas não faz a inclusão dos
> registros lidos na nova tabela
>
> Segue abaixo um exemplo do que estou tentando fazer. obrigado a todos e
> desculpem o tamanho do e-mail.
>
> Paulo
> IB_Vendas.Close;
> IB_Vendas.SQL.Clear;
> IB_Vendas.SQL.Add('SELECT PEDIDO, NOTAFISCAL, CODCLIENTE,
> NOMECLIENTE, DATA, ');
> IB_Vendas.SQL.Add('FROM VENDAS WHERE DATA BETWEEN :DATAI AND :DATAF
> ORDER BY NOTAFISCAL');
> IB_Vendas.Prepare;
> IB_Vendas.Params[0].Value := IB_DateTimePicker1.Date;
> IB_Vendas.Params[1].AsDate := IB_DateTimePicker2.Date;
> IB_Vendas.Open;
>
> While not IB_Vendas.EOF do
> begin
> IB_ITENSVENDAS.Close;
> IB_ITENSVENDAS.SQL.Clear;
> IB_ITENSVENDAS.SQL.Add('SELECT PEDIDO, TRANSPORTADORA, NATUREZA,
> QUANTIDADE, TOTALNF ');
> IB_ITENSVENDAS.SQL.Add('FROM ITENSVENDAS WHERE PEDIDO = :nroped
> ORDER BY PEDIDO');
> IB_ITENSVENDAS.Prepare;
> IB_ITENSVENDAS.Params[0].AsInteger :=
> IB_Vendas.FieldByName('PEDIDO').AsInteger;
> IB_ITENSVENDAS.Open;
>
> IB_NOVATB.FieldByName('PEDIDO').AsString :=
> IB_VENDAS.FieldByName('PEDIDO').AsInteger;
> IB_NOVATB.FieldByName('TRANSPORTADORA').AsInteger :=
> IB_ITENSVENDAS.FieldByName('TRANSPORTADORA').AsInteger;
> IB_NOVATB.FieldByName('QUANTIDADE').AsInteger :=
> IB_ITENSVENDAS.FieldByName('QUANTIDADE').AsInteger;
>
> IB_NOVATB.Post; É NECESSÁRIO COLOCAR ESTE POST ?
> IB_Vendas.Next;
> end;
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.516 / Virus Database: 269.21.6/1317 - Release Date: 07/03/2008
8:15
Mais detalhes sobre a lista de discussão lista