jonata 0 Denunciar post Postado Dezembro 9, 2012 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... Compartilhar este post Link para o post Compartilhar em outros sites
Petrozzani 0 Denunciar post Postado Dezembro 19, 2012 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 Compartilhar este post Link para o post Compartilhar em outros sites
jonata 0 Denunciar post Postado Dezembro 23, 2012 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: 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! Compartilhar este post Link para o post Compartilhar em outros sites