Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
bom pessoal como dito eu já fiz o relacionamento master/detail entre as tabelas VENDA e ITENS_VENDA
tabela VENDAS - chave primária=codigo
tabela ITENS VENDA - chave estrangeira= Codigo_venda
as chave já estão ligadas e já testei inserindo registro no IBEXPRESS...funfou tudo normal
Só que não sei como prosseguir dai pra frente, como cadastrar a venda e lançar os produtos na tabela de itens.
tem de colocar os produtos lançados no DbGrid (ligado a tabela ITENSVENDA) e ir passadoo total para o campo de totais (ligado a tabela VENDA)
como é que faço isso? alguém que já fez sistema comercial me dá uma luz ai...
opa Petrozzani..tudo certinho.... eu estou tentando entender a lógica de suas resposta . bem,
eu estou utilizando os conectores interbase para o Firebird...realmente o clientDataSet e um segundo dbGrid são necessários?..
perdoe minha arrogância pois estou começando a trabalhar com Delphi a pouco tempo e fico grato por sua colaboração.
eu estava pensando em fazer:
/applications/core/interface/imageproxy/imageproxy.php?img=https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash3/524890_483394038368506_1298889947_n.jpg&key=f560c5accb7faccea0d33b515aa5f7c6255d844de1d1c318810b1f324d27a1be" alt="524890_483394038368506_1298889947_n.jpg" />
1 - pego os dados do produto, qtd e preço, etc e jogo no dbgrid do frm venda sem joga-lo no banco
2 - quando cliecar em "encerrar a venda" salvar o registro na tabela de "VENDA" e depois que for gerado o ID eu jogo os itens na tabela "ITENSVENDA" sem precisar usar o master detail....
mas na verdade ainda não entendi a função desse "MASTER/DETAIL" e se realmente é necessário utilizá-lo... pode me explicar para que serve de fato?
fico no aguardo, grato!
então cara, essa parte é meio complicada mesmo. tipo, o certo é voce usar um clientdataset que salva os valores que voce for colocar na grid na memória, antes de passar para o banco.voce coloca o clientdataset, coloca um grid adicional que sera ligado com o clientdataset e deixa esse grid por baixo do grid que vai tar ligado com a tabela itensvenda direto no banco. nesse dataset voce tambem deve fazer o relacionamento master-detail com a tabela principal, é praticamente igual a table normal, e se voce quiser pode usar um dbnavigator pra colocar os dados tanto na grid do banco quanto na do dataset, um para cada. o detalhe é que, usando esses componentes, o programa deve seguir uma certa ordem de execução, por exemplo:
1º - voce vai la e clice em "nova venda" da tabela principal. até ai só colocar as duas tabelas em modo de edição.
2º - coloque os dados da venda normalmente e use o grid com o dataset pra colocar os itens da venda.
3º - agora que vem a dificuldade: quando for salvar a venda, voce vai ter que primeiramente gerar um código da nota automaticamente e jogá-la direto no banco. feito isso, vai ter que abrir denovo as tabelas para editar e passar cada registro que está no dataset para a tabela do banco, um bom meio de fazer isso é com um laço de repetição, "while not clientdataset1.eof" do e depois disso voce joga cada um dos dados do clientdataset na tabela do banco, registro por registro.
com isso voce ira ter salvo a venda no seu banco, não é necessario fazer com o clientdataset, mas é muito melhor e mais seguro, pois os dados só vão para o banco depois que estiver tudo confirmado e OK.não querendo ser chato, essa parte é dificil e vai dar muito erro, mas qualquer coisa pergunta ai que agente vai te ajudando na medida do possível