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:
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
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
Curtir tópico
+ 0
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!
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
Abs
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)