Fórum Help me #15983

21/02/2010

0

Pessoal, to precisando de uma ajuda grande aqui. 1º Estou desenvolvendo um aplicativo onde o cliente vai inserir vários dados ao mesmo tempo e os mesmo somente poderão ser gravados em banco se a comprar for finalizada, nunca fiz isso antes.Explicando melhor é como se fosse um televendas o cliente vai pedindo e o atendente vai inserindo dados, porem ir para o banco somente na hora que aperta o botão finalizar. 2º Para cada venda eu preciso gerar um numero que não seja auto-incrementos tem que ser inteiro mesmo, assim eu penso talvez ate esteja errado. Acho que se não for assim vai ficar difícil detalhar a venda de numero tal. To precisando de um ajuda de gerente de projeto RS,

[#VIDEO-180#]
Carlos Faria

Carlos Faria

Responder

Posts

21/02/2010

Wesley Yamazack

Olá Carlos,
  Dica : ClientDataSet trabalha com DataPack, que são os dados transportados pelo Provider apartir de uma query, ou sejá os dados ficam em memória, toda e qualquer atualização que você fizer, só será processada em BD quando rolar o Applyupdates, ou seja se você mexer em 1 item, mudar o código de outro, adicionar 4 novos itens, alterar mais um, você terá uma pancada de mudanças, porém tudo isso em memória, sacou ? QUando usar o APpplyUpdates, ai sim todas estas alterações, inclusoes ou deleções vão ser executadas de uma vez só.
 
  Este problema de jogar direto no Banco, é que você ao clicar no BtnNew, esta dando applyupdates em algum momento, não faça o applyupdates, so execute este comando quando for finalizar a venda, pois toda vez que você der o cdspadrao.post, os dados vão para o CLientDataSet, mas não para o Banco, então é só tirar ele.
  Quanto ao número de itens você pode criar um field, e ir preenchendo ele da seguinte forma.
  FIeldID := CDSPRoduto.RecordCount;
  E toda vez que você der um novo, o recordCOunt contém o número de registros armazenados no CDS, sacou ?

  Recomendações :
   - Não deixe a Grid ser editada
   - Não deixe incluir o item, sem ter todos os dados preenchidos
   - Já pensou em como baixar Estoque ?
 

  Acho que entendi o lance do ID de forma errada, mas vou deixar a dica de cima também. Por que não poderia ser auto incremento ? Toda vez que iniciar uma venda você tera um ID, o que você terá vários será o Item da venda, que é uma outra tabela, certo ? Um relacionamento mestre detalhe, é isso que você esta fazendo certo ?

   FIco no aguardo

Um abraço

Wesley Y
Responder

Gostei + 0

21/02/2010

Carlos Faria

Ola Wesley Seria possível uma pequena vídeo demostrando tudo isso , lembrando que uso SQL Server e que o campo id_venda é do tipo inteiro e não autoicremento. Eu fiz assim pois ao procurar exemplo a venda  id =15 todos os items daquela venda serão listados,se estiver errado me corriga por favor como te disse nunca fiz nada igual a isso.   Uma pequena vídeo mata o chamado se puder eu agradeço ! principalmente a parte onde o sistema ira gerar o idvenda e enaquanto não for finalizado todos os items adicionados aquela venda tem que ter o mesmo id Exemplo esse id_venda para gerar um numero ta bem complicado entender como fazer   Idvenda     Idvenda Idproduto Qt_items Valor   15 2 1 3,99   15 5 2 7,80   15 6 2 4,25  
Responder

Gostei + 0

21/02/2010

Carlos Faria

Ola Wesley andei relendo aqui , bom o id_venda no meu caso estou usando como numero inteiro mesmo , a tabela tbvendas e unica que uso para inserir. mas fique a vontade para dar dicas de como se faz isso ! 
Responder

Gostei + 0

22/02/2010

Wesley Yamazack

Olá Carlos,
  Seguinte seu modelo não esta muito bomm  não, eu não faço assim, veja um exemplo de venda




  Imagina so se você quiser salvar, informações dos produtos, naquela venda, sua tabela de venda ficaria muito poluida. Assim você tem um modelo mais limpo, e informações mais detalhadas e organizadas.
  Porém terá que trabalhar com mestre detalhe usando ClientDataSet para fazer isso, que não é dificil.


Um abraço

Wesley Y

Responder

Gostei + 0

23/02/2010

Carlos Faria

Ola Wesley , acho que você tem toda razão , uma tabela de venda e outra para detalhes daquela venda, o que acontece e que eu não sei trabalhar com máster detalhe no Delphi vou analisar tudo aqui e te retorno.
Responder

Gostei + 0

23/02/2010

Wesley Yamazack

Ok meu amigo, fico no aguardo.


Att,

Wesley Y
Responder

Gostei + 0

25/02/2010

Carlos Faria

Ola Wesley , valeu pela sugestao eu segui o exemplo que vc mostrou ficou mais claro e mais facil , uma tabela tb_vendas , e outra tb_itens venda. unica coisa que nao funcionou foi capturar o id_venda pelo delphi , pois sera criado um unico Id para a venda na tb_vendas do seu modelo o campo pode ser identity sim , e na tb_items_venda esse id_vai se repetir assim saberei quais os items estao relacionados com aquela venda. so falta captuar  o Id , o Rodrigo me passou um exemplo mas o sitema que desenvolo sera acessado por uma grande quantidade de maquinas , entao nao pode ter erros eu preciso do id_venda e gravar tudo dentro de uma transacao a venda e itens venda  
Responder

Gostei + 0

01/03/2010

Wesley Yamazack

Olá Carlos,
  Desculpe a demora, mas é que estamos com muitos chamados uma demanda muito grande, desculpe mais uma vez.
  O exemplo que o Rodrigo lhe passou, é sobre mester detalhe certo ? Independente de ser sistema grande ou pequeno, o mestre detalhe funciona da mesma forma, e nele o ID_Venda é passado para tabela ItemVenda, automaticamente.


Um abraço

Wesley Y
Responder

Gostei + 0

02/03/2010

Carlos Faria

Pode concluir o chamado
Responder

Gostei + 0

03/03/2010

Wesley Yamazack

Olá meu amigo,
  Chamado fechado

Um abraço

Wesley Y
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar