Consulta com mais de uma tabela (Erro ClientDataSet)

10/12/2003

1

Caros colegas, tenho um componente query do DBExpress e tenho o seguintes comandos:

select i.cd_imagem,
i.ds_imagem,
iii.ds_item_item_imagem
from imagem i,
item_imagem ii,
item_item_imagem iii
where i.cd_imagem = ii.cd_imagem
and ii.cd_imagem = iii.cd_imagem
and ii.cd_item_imagem = iii.cd_item_imagem
and iii.cd_imagem = 1
and iii.cd_item_imagem = 1

Isto retornará, em meu banco, quatro registros. Após executar esta query, dou um refresh no clientdataset e surgi o erro ´Key Violation´. O problema não está em dar um refresh no ClientDataSet, pois quando a query retorna um registro, este erro não acontece. Alguém sabe o que eu preciso fazer. Estou utilizando os seguinte componentes:

SQLQuery => DataSetProvider => ClientDataSet => DataSource.

Obrigado!


Responder

Posts

10/12/2003

Venus

gonçanves,

só d sacanagem, cê já trocou o sqlquery por um sqldataset só pra ver o q acontece ?
já tive determinados problms q qdo eu troquei pra sqldataset resolveu...


Responder

11/12/2003

Goncalves

Caro amigo, já havia feito mas não resolveu. Consegui resolver o problema em companhia de outra pessoa que já passou por isto:

Veja a respota a seguir:

[i:8c1124e7aa][b:8c1124e7aa]´Se for no refresh, é pq ele está trazendo um desses campos como
chave primária da sua tabela em operação que deve ser o código da sua
tabela, pra vc evitar este problema, no campo que é a chave primária da
sua tabela, no select ao chama-lo, coloque ´(MAX(campo))nomedocampo + 1´, entendeu, assim não haverá conflito com chave primária repetida...´

Cleber.
Analista - Programador.[/b:8c1124e7aa][/i:8c1124e7aa]

No meu caso eu omiti o campo que é chave primária, do select da query, pois não consegui validar a mesma, utilizando a cláusula MAX. E aí então resolvi meu problema.

Mas com certeza, o problema foi detectado e sabemos agora o motivo.

Obrigado pela ajuda!


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira