pedido X Itens

Delphi

15/09/2006

Pessoal tenho tabela de PEDIDo e outras de ITEM
Gostaria de saber como vcs fariam para dar um insert na tabela de ITEM?
Por exemplo na tela de PEDIDO vc primeiro da um INSERT no pedido e apos isto iria incluindo os ITENS
ou teria como fazer assim
Inserir o Codigo do Pedido junto com os itens e apos isto dar um Commit?
Se tiver como teria como dar um exemplo de como faze-lo?
Minha preocupacao é que possa haver mais de um usuario inserindo ao mesmo tempo e isto virar uma bagunça!
Desde ja agradeço a força!
Eu uso a seguinte sintaxe para inserir o item
veja que tenho o campo NF que é a da nota que será incluida
junto com o item!



if Application.MessageBox(´Confirma a Inclusão ´+
´Deste Produto A Esta Nota?´, ´Confirmação´,
mb_YesNo + mb_IconInformation) = idYes then
begin
with dm_principal.QRY_AUX do
begin
try
close;
sql.clear;
SQL.Add(´Insert into nota_fiscal_item(nf,codigo_produto,quantidade_produto,valor_item)´);///
SQl.Add(´Values (nota_fiscal,´);
SQL.Add(QuotEdStr( Edit_codigo_produto.Text)+´,´);
SQL.Add(QuotEdStr( edit_quantidade.Text)+´,´);
SQL.Add(QuotEdStr( edit_valor.Text)+´)´);
ExecSQL;
Except
on E:Exception do
Begin
MessageDlg(E.Message,mtError,[mbOk],0);
Exit;
End;
End;
end;
end

else
begin
exit;
end;


Magnus@

Magnus@

Curtidas 0

Respostas

Macario

Macario

15/09/2006

Ola colega.

Qual ambiente voce esta usando?


GOSTEI 0
Magnus@

Magnus@

15/09/2006

Estou usando Delphi7 SO Winxp banco Interbase


GOSTEI 0
Macario

Macario

15/09/2006

Voce poderia fazer uso do ClientDataSet, eu utilizo e a edicao de Nota e itens fica muito facil de usar.


GOSTEI 0
Raserafim

Raserafim

15/09/2006

eu utilizo o ClientDataSet, pois assim posso cadastrar o pedido e os ítens, tudo na memória.

depois quando vou salvar na base, faço primeiro o Pedido, para que a base gere o número autoincremento e eu consiga capturar este número.
depois vou em cada registro do ítem e coloco este número e depois salvo-o.
lembrando, claro, que tudo isto envolvido em uma transação.


GOSTEI 0
Raserafim

Raserafim

15/09/2006

e em relação ao caoes caso mais de um usuário esteja inserindo dados, a melhor solução que encontri foi utilizar uma função 9que tem no firebird, não sei se tem no interbase), que ao ler o valor do contador já é adicionado um a mais.
desta forma posso ler este valor, colocar no pedido e nos ítens, e só então salvar tudo.


GOSTEI 0
Rinez

Rinez

15/09/2006

Prezado raserafim:
´e em relação ao caoes caso mais de um usuário esteja inserindo dados, a melhor solução que encontri foi utilizar uma função 9que tem no firebird, não sei se tem no interbase), que ao ler o valor do contador já é adicionado um a mais
desta forma posso ler este valor, colocar no pedido e nos ítens, e só então salvar tudo.´

[b:098c2df575]Você não acha que ao gravar os dados, com dois ou mais usuários ao mesmo tempo pode dar erro, se esses usuários pegarem o mesmo número do contador?[/b:098c2df575]


GOSTEI 0
Macario

Macario

15/09/2006

Prezado raserafim: ´e em relação ao caoes caso mais de um usuário esteja inserindo dados, a melhor solução que encontri foi utilizar uma função 9que tem no firebird, não sei se tem no interbase), que ao ler o valor do contador já é adicionado um a mais desta forma posso ler este valor, colocar no pedido e nos ítens, e só então salvar tudo.´ [b:2cf48d63d4]Você não acha que ao gravar os dados, com dois ou mais usuários ao mesmo tempo pode dar erro, se esses usuários pegarem o mesmo número do contador?[/b:2cf48d63d4]


Creio que no caso se estiver usando um generator, nao se corre este risco.


GOSTEI 0
Raserafim

Raserafim

15/09/2006

zenir, isto não ocorre pois quem faz o controle disso é o próprio firebird. no momento em que eu apenas leio este valor [basta ler], ele automaticamente já incrementa um.


GOSTEI 0
Magnus@

Magnus@

15/09/2006

Ok pessoal obrigado,
Eu estou usando o componente Interbase
Vou colocar este clientdataset e ver oque acontece
Desde ja agradeço a atenção
Se caso alguem tiver mais alguma dica Agradeço


GOSTEI 0
POSTAR