Consulta com mais de uma tabela (Erro ClientDataSet)
10/12/2003
0
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!
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!
Goncalves
Curtir tópico
+ 0
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...
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!
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
Clique aqui para fazer login e interagir na Comunidade :)