[firebase-br] "key violation"

Anticlei Scheid clei em geous.com.br
Qua Out 15 10:34:08 -03 2008


Bom dia pessoal.

Estou usando uma instrução SQL para uma consulta e no IBExpert funciona perfeitamente, mas na aplicação Delphi com o dbexpint.dll ou dbexpUIBfire15.dll recebo a mensagem "key violation".
O problema está na seguinte parte da instrução :
...
from MOVFISICO MF
left join MOVFISICOITEM MFI on MFI.MOVFISICOID = MF.MOVFISICOID
...

O objetivo é listar registros da MOVFISICOITEM e da primeira vez usei esta parte assim :
...
from MOVFISICOITEM MFI
left join MOVFISICO MF on MF.MOVFISICOID = MFI.MOVFISICOID
...
,ou seja, a tabela MOVFISICOITEM é a "mandante" no from, mas desse jeito o plano de pesquisa nela fica NATURAL, isto é, sem utilizar qualquer índice, visto que preciso filtrar os dados pelo intervalo de datas e a data do movimento está na MOVFISICO.
Como estava muito lento resolvi mudar para a instrução abaixo, mas daí funciona no IBExpert, mas no Delphi não funciona como expliquei acima.
Tentei até testar o driver trial da Upscene, mas continuo com o mesmo problema.
Alguém sabe qual é o driver utilizado pelo IBExpert ou tem alguma sugestão ?

select MF.MOVFISICOID, MF.TIPOMOVFISICOID, TMF.ENTRADASAIDA, MF.DTMOVIMENTO,
MF.HRMOVIMENTO, MFI.ITEMID, I.ITEMCODIGO, I.ITEM, MFI.DEPOSITOID, D.CODDEPOSITO,
MFI.LOTE, MFI.QUANTIDADE, PI.VALORUNITARIOPEDIDO, P.DTCONFIRMADO,
NFI.QTDFATURADA, NFI.VALORUNITARIOFATURADO, NF.DTENTRADASAIDA, IL.DTFABRICACAO,
IL.HRFABRICACAO, IL.DTVALIDADE, P.PEDIDOID, NF.NFID, NF.NF, NF.DTEMISSAO,
MFI.MOVFISICOITEMID, P.PESSOAID, FAT.DTFATURAMENTO, P.TIPOFECHAMENTOID,
P.TIPOFATURAMENTOID, P.NOMEPESSOA
from MOVFISICO MF
left join MOVFISICOITEM MFI on MFI.MOVFISICOID = MF.MOVFISICOID
left join TIPOSMOVFISICO TMF on TMF.TIPOMOVFISICOID = MF.TIPOMOVFISICOID
left join ITENS I on I.ITEMID = MFI.ITEMID
left join DEPOSITOS D on D.DEPOSITOID = MFI.DEPOSITOID
left join PEDIDOITENS PI on PI.PEDIDOID = MFI.PEDIDOID and PI.PEDIDOITEMID = MFI.PEDIDOITEMID
left join PEDIDOS P on P.PEDIDOID = MFI.PEDIDOID
left join NFITENS NFI on NFI.NFID = MFI.NFID and NFI.NFITEMID = MFI.NFITEMID
left join ITEMLOTE IL on IL.ITEMID = MFI.ITEMID and IL.LOTE = MFI.LOTE
left join NF on NF.NFID = MFI.NFID
left join FATURAS FAT on FAT.FATURAID = NF.FATURAID
where MF.DTMOVIMENTO between '09-01-2008' and '10-14-2008'
and TMF.ENTRADASAIDA = 'S'  and P.PESSOAID = 1289
order by TMF.ENTRADASAIDA

Desculpem-me pela extensão do e-mail...

Abraço e obrigado


Mais detalhes sobre a lista de discussão lista