Delphi X SQL Server

02/06/2008

2

Olá a todos, possuo uma consulta em minha aplicação que funciona perfeitamente no Oracle e no MySQL, porém testando no SQL Server tenho recebido o seguinte erro:

´SQL Server Error: SQL State: 42000, SQL Error Code: 4104
The multi-part identifier ´EF.COD_PROCESSO´ could not be bound. ´

O mais estranho é que, apesar desse erro ser do próprio SQL Server, quando eu rodo ele no ´Microsoft SQL Server Management Studio Express´ ele funciona (caso eu retire a consulta interna dentro do case no delphi funciona).
Utilizo Delphi 7, dbexpress e SQl Server 2005 Express;
Segue minha consulta abaixo, se alguém puder me ajudar eu agradeço;

SELECT EF.COD_PERIODO/1 COD_PERIODO, EF.COD_EMPRESA/1 COD_EMPRESA,
EF.COD_PROCESSO/1 COD_PROCESSO, P.DES_PROCESSO DES_PROCESSO,
EF.COD_FRENTE/1 COD_FRENTE, F.DES_FRENTE DES_FRENTE,
EF.COD_EMPRESA_EQUIPAM/1 COD_EMPRESA_EQUIPAM, EMP.DES_EMPRESA DES_EMPRESA,
EF.COD_EQUIPAMENTO/1 COD_EQUIPAMENTO,
EF.DTA_INICIO DTA_INICIO, EF.DTA_FINAL DTA_FINAL,
EF.COD_PONTO/1 COD_PONTO, EC.COD_CLASS/1 COD_CLASS,
(CASE WHEN(SELECT COD_EQUIPAMENTO
FROM EQUIPAMENTOS_PARADAS EP
WHERE EP.COD_PERIODO = EF.COD_PERIODO
AND EP.COD_EMPRESA = EF.COD_EMPRESA_EQUIPAM
AND EP.COD_EQUIPAMENTO = EF.COD_EQUIPAMENTO
AND DTA_FIM IS NULL
) IS NULL
THEN ´DISPONIVEL´
ELSE ´INDISPONIVEL´
END) STATUS
FROM EQUIPAMENTOS_FRENTES EF,
FRENTES F, EQUIPAMENTOS E,
EMPRESAS EMP, EQUIPAMENTOS_CLASS EC, PROCESSOS P, RENDIMENTOS R

WHERE EF.COD_PERIODO = 2
AND EF.COD_EMPRESA = 1
AND EF.COD_PROCESSO = 10501
AND EF.DTA_FINAL IS NULL
AND EF.COD_PERIODO = F.COD_PERIODO
AND EF.COD_EMPRESA = F.COD_EMPRESA
AND EF.COD_PROCESSO = F.COD_PROCESSO
AND EF.COD_FRENTE = F.COD_FRENTE
AND EF.COD_PERIODO = E.COD_PERIODO
AND EF.COD_EMPRESA_EQUIPAM = E.COD_EMPRESA
AND EF.COD_EQUIPAMENTO = E.COD_EQUIPAMENTO
AND EF.COD_EMPRESA_EQUIPAM = EMP.COD_EMPRESA
AND EF.COD_PROCESSO = P.COD_PROCESSO
AND EF.COD_PROCESSO = R.COD_PROCESSO
AND E.COD_CLASS = EC.COD_CLASS
AND E.COD_CLASS = R.COD_CLASS
ORDER BY EF.COD_EQUIPAMENTO


Responder

Posts

publique exatamente como você está enviando esta instrução pelo Delphi


Responder

02/06/2008

Du_nirvana

Olá, vamos ao exemplo:

query1 -> provider1 -> cds1 -> ds1
query2 -> provider2 -> cds2 -> ds2

A query2 está ligada ao ds1, pois retiro de lá alguns códigos para executar a consulta acima, o que eu reparei é o seguinte:

1 = Na cláusula where possuo 1 variável de substituição (da query1), caso eu remova ela a consulta executa normalmente (mesmo com o sql interno)

2 = O erro ocorre apenas na primeira vez que carrego e abro o código (pois eu o utilizo em outras partes do mesmo programa e o erro não ocorre)

Me parece um bug em algum lugar entre delphi X dbExpress X SQL Server,
se tiver alguma idéia.


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar