Fórum Dúvida com DBEspress #240662

30/06/2004

0

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:
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

Bico

Responder

Posts

01/07/2004

Bico

O erro que ocorre não é no Commit e sim no ApplyUpdates.


Responder

Gostei + 0

01/07/2004

Bico

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;


Responder

Gostei + 0

01/07/2004

Rômulo Barros

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 !!!!!


Responder

Gostei + 0

01/07/2004

Adustina

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


Responder

Gostei + 0

01/07/2004

Rômulo Barros

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 !! :? :? :?


Responder

Gostei + 0

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

Aceitar