Help me
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#]
[#VIDEO-180#]
Carlos Faria
Curtidas 0
Respostas
Wesley Yamazack
21/02/2010
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
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
GOSTEI 0
Carlos Faria
21/02/2010
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
GOSTEI 0
Carlos Faria
21/02/2010
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 !
GOSTEI 0
Wesley Yamazack
21/02/2010
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
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
GOSTEI 0
Carlos Faria
21/02/2010
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.
GOSTEI 0
Wesley Yamazack
21/02/2010
Ok meu amigo, fico no aguardo.
Att,
Wesley Y
Att,
Wesley Y
GOSTEI 0
Carlos Faria
21/02/2010
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
GOSTEI 0
Wesley Yamazack
21/02/2010
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
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
GOSTEI 0
Carlos Faria
21/02/2010
Pode concluir o chamado
GOSTEI 0
Wesley Yamazack
21/02/2010
Olá meu amigo,
Chamado fechado
Um abraço
Wesley Y
Chamado fechado
Um abraço
Wesley Y
GOSTEI 0