Fórum Migração Interbase 6.0.2.0 (Open Edition) para Firebird 2.1 #60899

28/09/2009

0

Gostaria de uma ajuda nessa migração. Especificamente nas diferenças da linguagem SQL. Pois, nao encontrei documentação sobre o assunto. Caso alguém posso ajudar, agradeço desde de já.


Virgiliomax

Virgiliomax

Responder

Posts

28/09/2009

Afarias

|Gostaria de uma ajuda nessa migração. Especificamente nas diferenças
| da linguagem SQL. Pois, nao encontrei documentação sobre o assunto.
|Caso alguém posso ajudar, agradeço desde de já.

1) Se usa dialeto 3 ótimo! Se usa dialeto 1, migrar para o dialeto 3 pode exigir alguns cuidados com os tipos de dados.

2) Não há diferenças na linguagem SQL, apenas q no FB2 existem mais comandos/funcionalidades

3) No FB2 tb existem mais restrições. SQLs escritos de forma errada q funcionavam no IB6 não vão funcionar no Fb2. Além disso, alguns poucos SQLs (com IN principalmente) podem ficar lentos e pode ser necessário ´reescrevê-los´ para se adequar ao FB2

3) Vc deve fazer um backup da base de dados com o IB6 e restaurar com o FB2 (ou recriar um banco do zero com Fb2 e migrar os dados com alguma ferramenta)

4) Se usa algum character set (<>NONE) na base, e tiver optado por fazer um backup e restaurar, em geral é importante que faça a atualização do metadata a partir de scripts q se encontram na instalação do FB2


T+


Responder

Gostei + 0

29/09/2009

Virgiliomax

A seguinte instrução SQL, esta contida em um relatorio (Fast Report 3). E Funciona normalmente com o IB6.


SELECT A.CLIENTE,
       MAX(A.NOMECLIENTE) AS NOMECLIENTE,
       SUM(A.valortotal) as VALORTOTAL,
       (SUM(A.valortotal) / (SELECT sum(t.valortotal) FROM TBRELATORIO_CURVA_ABC_CLI t
                             WHERE t.DataVenda >=:DATA1 AND t.DataVenda <=:DATA2) * 100) AS CURVA
FROM TBRELATORIO_CURVA_ABC_CLI A
WHERE A.DATAVENDA >=:DATA1 AND A.DATAVENDA <=:DATA2
GROUP BY A.CLIENTE
ORDER BY A.valortotal DESC



No FB2 tenho a seguinte mensage de erro:

[b:68c6f798f2]Dynamic SQL Error
SQL error code = -104
Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause)[/b:68c6f798f2]

Aceito sugestões. Agradeço desde já.

Virgilio Maximiliano[/b]


Responder

Gostei + 0

29/09/2009

Afarias

Como eu disse no item 3... SQLs incorretos q ´funcionam´ no IB6 não vão funcionar no FB2... é necessário corrigir.

No seu caso, não se pode ordenar por um campo q não está entre os ´agregadores´ ou agregados. A solução é simples... vc deseja ordenar por SUM(A.valortotal) que é a 3a. coluna, então:


ORDER BY 3 DESC



T+


Responder

Gostei + 0

29/09/2009

Virgiliomax

Obrigado pela ajuda, afarias!!!

Tão certo como [b:be7f649a2a]1 + 1 = 2[/b:be7f649a2a] !!!

:D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar