GARANTIR DESCONTO

Fórum problemas com o dbexpress #352485

25/01/2008

0

Saudações pessoal,

Estou envolvido em um projeto onde estamos usando dbexpress+delphi2007+firebird. Tenho 1 problema e 1 duvida.

a duvida: No DataSetProvaider, o que devo usar no UpdateMode? Estou usando upWhereAll(onde não esta dando problema nenhum), mas em alguns materiais que tenho lido vejo que o pessoal recomenda usar upWhereKeyOnly, porem quando uso este método tenho tido erros ao gravar arquivos.

o problema: Tenho um select feito da seguinte forma:
Select pm.*,
       tp.descricao as nome_tpproduto
from produto_marca pm
inner join tipo_produto tp on (tp.id_tipoproduto = pm.id_tipoprod)
order by pm.descricao


onde NOME_TPPRODUTO não faz parte da tabela mas o dbexpress entende que ele faz parte da tabela PRODUTO_MARCA.
fui nos field do SQLDataSet e mudei as propriedades:
Required->False
ProviderFlags -> todos para False
mesmo assim ao gravar um registro tenho uma tela de erro onde diz: Table unknown produto_marca. Só que a tabela esta aberta. Depois apresenta o seguinte erro: No key specified.

O que pode esta ocorrendo?

Desde já agradeço a atenção de todos.


Antonio Correia


Antoniocorreia

Antoniocorreia

Responder

Posts

26/01/2008

Adriano Santos

Oi Antonio, é muito simples.

Realmente você precisa usar upWhereKeyOnly no DataSerProvider. Agora precisa mexer também no ClientDataSet. No Fields Editor você precisa alterar a propriedade ProviderFlags dos campos.

[list:7d211c1a55]
[*:7d211c1a55]1. Selecione o campo chave e marque-o como as três primeiras opções como True. As duas primeras já estão, terá que marcar só o pfInKey.

[*:7d211c1a55]2. Agora selecione os demais campo, NÃO INCLUINDO AQUELES DO JOIN, e deixe marcado só as duas primeiras opções.

[*:7d211c1a55]3. Os campos que vem em JOIN desmarque todas as opções.

[/list:u:7d211c1a55]

Pronto!


Responder

Gostei + 0

28/01/2008

Felipeiw

Bom dia Adriano, fiquei com uma duvida, no Segundo caso, nao é para ficar somente true a primeira opcao, pois se a segunda opcao ficar true estou dizendo para o campo entrar na clausula where, me desculpe se eu estiver errado.

Abs


Responder

Gostei + 0

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

Aceitar