Dúvida com DBEspress
Boa tarde.
Estou desenvolvendo um projeto de teste com o DBExpress. Basicamente o projeto tem um cadastro de clientes, produtos, pedidos, cidades e itens.
Utilizo os seguintes componentes:
SQLConnection, SQLQuery, SQLStoredProc, DataSetProvider e ClientDataSet;
Consulta Itens:
No form de pedido tenho um DBGrid com os itens. No DBGrid, quero que apareçam os seguintes campos:
Número do item, descrição do produto, Quantidade e Valor unitário.
Os campos estão aparecendo corretamente.
Vou direto à parte em que tenho dúvida:
O campo DESCR (Descrição do produto) é da tabela de produtos e, se eu colocar o seguinte código (para atualizar automaticamente o campo DESCR da tabela de Itens pois, ele só traria este valor quando for abrir e fechar a tabela de itens) :
dmPedidos.ItensDESCR.Value := dmProdutos.DadosDESCR.Value;
Onde dmPedidos e dmProdutos são DataModules, Itens e Dados são ClientDataSets;
Quando dou o Commit ocorre o seguinte erro:
Project Vendas.exe raised exception class EDatabaseError with message ´Column unknown DESCR AT line 8, Column 17´
E não salva nenhuma das atualizações. Sei que é porque DESCR é de outra tabela, mas como posso resolver isto? Não tenho experiência com DBExpress, se alguém puder me ajudar...
Desde já agradeço,
Fernando.
Estou desenvolvendo um projeto de teste com o DBExpress. Basicamente o projeto tem um cadastro de clientes, produtos, pedidos, cidades e itens.
Utilizo os seguintes componentes:
SQLConnection, SQLQuery, SQLStoredProc, DataSetProvider e ClientDataSet;
Consulta Itens:
select I.*, P.DESCR from ITEM I join PRODUTO P on I.COD_PRD = P.COD_PRD
No form de pedido tenho um DBGrid com os itens. No DBGrid, quero que apareçam os seguintes campos:
Número do item, descrição do produto, Quantidade e Valor unitário.
Os campos estão aparecendo corretamente.
Vou direto à parte em que tenho dúvida:
O campo DESCR (Descrição do produto) é da tabela de produtos e, se eu colocar o seguinte código (para atualizar automaticamente o campo DESCR da tabela de Itens pois, ele só traria este valor quando for abrir e fechar a tabela de itens) :
dmPedidos.ItensDESCR.Value := dmProdutos.DadosDESCR.Value;
Onde dmPedidos e dmProdutos são DataModules, Itens e Dados são ClientDataSets;
Quando dou o Commit ocorre o seguinte erro:
Project Vendas.exe raised exception class EDatabaseError with message ´Column unknown DESCR AT line 8, Column 17´
E não salva nenhuma das atualizações. Sei que é porque DESCR é de outra tabela, mas como posso resolver isto? Não tenho experiência com DBExpress, se alguém puder me ajudar...
Desde já agradeço,
Fernando.
Bico
Curtidas 0
Respostas
Bico
30/06/2004
O erro que ocorre não é no Commit e sim no ApplyUpdates.
GOSTEI 0
Bico
30/06/2004
Achei a solução do problema:
Abrir a SQLQuery -> Selecionar o(s) campo(s) da(s) outra(s) tabela(s) -> Em ProviderFlags -> Setar pfInUpDate = False e pfInWhere = False;
Abrir a SQLQuery -> Selecionar o(s) campo(s) da(s) outra(s) tabela(s) -> Em ProviderFlags -> Setar pfInUpDate = False e pfInWhere = False;
GOSTEI 0
Rômulo Barros
30/06/2004
Vá no ClientDataSet e selecione o field DESCPROD. Na propriedade Providerflags deste field, altere para o esquema abaixo:
pfInUpdate = False; // Indica para não atualizar este campo, pois naum pertence a esta tabela.
pfInWhere = False;
pfInKey = False;
pfInHidden = Deixe do jeito que está;
Neste mesmo ClientDataSet, selecione o field que representa a chave primária da tabela items e altera para pfInKey = True;
agora vá no DataSetProvider e mude a propriedade UPDATEMODE para umWhereKeyOnly;
Pronto.. agora naum vai dar mais erro, colega !!!!!
pfInUpdate = False; // Indica para não atualizar este campo, pois naum pertence a esta tabela.
pfInWhere = False;
pfInKey = False;
pfInHidden = Deixe do jeito que está;
Neste mesmo ClientDataSet, selecione o field que representa a chave primária da tabela items e altera para pfInKey = True;
agora vá no DataSetProvider e mude a propriedade UPDATEMODE para umWhereKeyOnly;
Pronto.. agora naum vai dar mais erro, colega !!!!!
GOSTEI 0
Adustina
30/06/2004
Aproveitando a dúvida do amigo, como eu faço para colocar dentro do campo DESC no Grid um botao para buscar essa descrição na tabela de produtos?
Valeu pela ajuda!!
Adustina
adustina@email.com
Valeu pela ajuda!!
Adustina
adustina@email.com
GOSTEI 0
Rômulo Barros
30/06/2004
select I.*, [color=red:c792ba6ab6]P.DESCR [/color:c792ba6ab6]
from ITEM I
join PRODUTO P on I.COD_PRD = P.COD_PRD
Isso já traz a descrição do produto !! :? :? :?
from ITEM I
join PRODUTO P on I.COD_PRD = P.COD_PRD
Isso já traz a descrição do produto !! :? :? :?
GOSTEI 0