Erro em Inserção/Atualização de registro usando ClientDataSet

Delphi

15/02/2011

Boa tarde pessoal!

Estou com um problema que já está me tirando do sério, já fiz várias pesquisas e até agora não consegui achar a bendita solução. Vou tentar explicar aqui o cenário do problema.

Estou usando o componente ZQuery(Zeos Component) + DataSetProvider + ClientDataSet em Delphi 7, Windows XP e usando SQL Server 2000. Tenho um formulário só responsável tanto pela consulta como pela manutenção dos dados (Inserção, Exclusao, Alteração), no caso é um cadastro simples de Vendedores, no qual usa as seguintes tabelas:

Vendedores: Codigo(chave Primária), CodUsu(chave Estrangeira), PerCom(percentual de Comissão), LimDesc(Limite de Desconto);

Usuarios: CodUsu(Chave Primária), NomUsu;

Faço a seguinte consulta usando o CommandText do ClientDataSet:

Select Codigo, V.CodUsu, NomUsu, PerCOM, LimDESC From Vendedores V
Inner Join Usuarios U ON U.CodUsu = V.CodUsu

Dessa forma faço com que o usuário consiga consultar pelo Nome do Usuário, até aí tudo bem.

Possuo os seguintes Fields configurados tanto em meu ClientDataSet, como na ZQuery:
Codigo
ProviderFlags: pfUpdate, pfWhere, pfKey

CodUsu
ProviderFlags: pfUpdate, pfWhere

NomUsu
ProviderFlags: []

PerCom
ProviderFlags: pfUpdate, pfWhere

LimDesc
ProviderFlags: pfUpdate, pfWhere

Usuario (Campo Lookup ligado a tabela Usuarios, com KeyFiels: CodUsu da tabela Vendedor, LookupKeyFields: CodUsu da tabela Usuarios, LookupResultFields: NomUsu da tabela Usuarios para o cadastro do Vendedor)
ProviderFlags: []

Tenho o DataSetProvider com a configuração UpdateMode setada para upWhereKeyOnly e no evento OnGetTableName passo o Nome da tabela, no caso Vendedores.


Consigo gravar apenas o primeiro registro na tabela Vendedores, quando tento Alterar o mesmo, ou então, Inserir outro registro, obtenho a seguinte mensagem de erro: "Cannot update a complex query with more then one table".

Já tentei muitas coisas, até agora nada consegui, se alguem puder me ajudar, desde já muito obrigado!
Luis Gadelha

Luis Gadelha

Curtidas 0

Respostas

Luis Gadelha

Luis Gadelha

15/02/2011

ninguem???
GOSTEI 0
Izomil Filho

Izomil Filho

15/02/2011

Como está a sua query de insert e update ? Você já tentou Inserir, Atualizar e Excluir o cliente direto via banco usando as querys do sistema ? Quando você está Inserindo, esta usando o POST ? Seu componente está como auto commit ? Se não estiver você esta fazendo commit ? Pelo que entendi do erro ele está reclamando da query, creio que você deve estar tentando atualizar duas tabelas diferentes ao mesmo tempo ou fazendo alguma outra coisa na query que não é permitido, posta tua query ai !
Até mais.
 
GOSTEI 0
POSTAR