DBGrid(Produtos) para DBGrid(Pedido)

Delphi

28/04/2008

gostaria de uma ajuda denovo :P

tenho as tabelas

-PRODUTOS
Referencia VARCHAR(8)
Descricao VARCHAR(50)
...
-PEDIDO
numeroPed INTEGER
data ....
....
-ProdPed (Produtos do pedido)
refped INTEGER (referente a pedido X)
sequencia INTEGER
referencia VARCHAR(6)
precovenda VARCHAR(6)

no form para cadastrar o pedido tenho um dbgrid com as colunas Sequencia | Referencia | Descrição | Preço | Preço de Venda
ai tem o Form de Produtos, dentro dele tem o DBGrid com Referencia | Descricao | Preço, gostaria que quando o usuario desse um clique duplo sobre o registro selecionado, ele exportasse os dados do form de produtos para o DBGrid do form de pedidos


att
frega


Frega

Frega

Curtidas 0

Respostas

Webjoel

Webjoel

28/04/2008

Olá!

Informe quais componentes de acesso ao banco de dados você está usando para melhor nós o ajudarmos você!

Mas de qualquer forma, a lógica é simples!

evento doubleclick da bdgrid:
PedidoForm.ClientDataSetItensPedido.Insert;
PedidoForm.ClientDataSetItensPedidoREFERENCIA.AsString := ClientDataSetProdutosREFERENCIA.AsString;
PedidoForm.ClientDataSetItensPedidoDESCRICAO.AsString := ClientDataSetProdutosREFERENCIA.AsString;
PedidoForm.ClientDataSetItensPedidoPRECO.AsFloat := ClientDataSetProdutosPRECO.AsFloat;
PedidoForm.ClientDataSetItensPedido.Post;


Você precisará fazer algumas validações, por exemplo se o produto já existir você terá que dar um Edit em vez de um Insert e só incrementar a quantidade..etc...

Essa é só a lógica, você também pode fechar o FormProdutos depois do Post, ai volta para a sua tela de pedido, mas tudo depende da estrutura do seu projeto!

E dá-lhe F9!


GOSTEI 0
Frega

Frega

28/04/2008

estou usando Postgres, e conectando a ele com o componentes Zeos,

entendi a logica!, mas nao entendi como funciona o ClientDataSet

a informaçao nao fica no dbgrid, e sim no datasource, entao a logica eh no doubleclick pega o datasource.registro da tabela produtos := datasource.registro da tabela produtos do pedido...

Ok, mas nao entendi a parte dos comandos, na parte ClientDataSet.

att
Frega


GOSTEI 0
Webjoel

Webjoel

28/04/2008

Ok!

O ClientDataSet é um client que trabalha em memória, você faz toda a parte de inserção, edição e gravação nele, tudo na memoria, com as alterações confirmadas você grana no banco:

Comandos:

ClientDataSet1.Insert : insere novo valor no client.
ClientDataSet1.Edit : altera valor no client.
ClientDataSet1.Post : grava novo valor no client.
ClientDataSet1.ApplyUpdates : grava alterações no banco.

No seu caso, não sei a estrutura programada do seuprojeto, mas a idéia com o doubleclick, é que nesse método, você pode pegar o registro atual que você clicou, assim você tem todas as informações para jogar em outro Form ou dbgrid.

Não posso te ajudar quanto ao Zeos, pois não trabalho com ele.

Seria bem interessante você dar uma olhada nos componentes de acesso a banco de dados na paleta dbExpress, juntamente com a paleta Data Access formam a melhor dupla de acesso a banco de dados em Delphi. Não digo mudar seu projeto, mas para efeito de estudo e em novos projetos pode ser implantado e a manutenção é muito mais simples, qualquer coisas estamos ai.


GOSTEI 0
Frega

Frega

28/04/2008

hmm dei uma lida sobre clientdataset num artigo aki do forum, aprendi o basico, mas ainda tem algumas coisas que nao consigo entender

o ClientDataSet no Form de pedidos esta funcionando perfeito, os registros estao sendo adicionados pelo dbgrid etc...

o clientdataset (CDS) do form de produtos que complica, nao sei como pegar o registro do DataSet e transferir ele para o clientdataset, fiz asim mas nao deu:

CDS
Fields = referencia(CDSProdReferencia) para testes


no double click fiz como vc mostrou

CadPedido.ClientDataSet.Insert;
CadPedido.ClientDataSetREFERENCIA.AsString := CDSProdREFERENCIA.AsString;
CadPedido.ClientDataSet.Post;

no CDSProd > Field -> referencia (que fica no form de produtos) botei
KeyFields -> referencia
Lookupdataset -> qPRODUTOS (query dos produtos)
LookupKeyFields -> referencia
Lookupresultfield -> referencia

isso foi uma tentatia, mas nao deu certo, quando dou 2 cliques no DBGrid, dos produtos, o DBGrid dos Produtos do Pedido só adiciona uma linha, nao chega a receber a referencia..



desculpe a biblia
ATT
Frega


GOSTEI 0
POSTAR