Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Conflito em banco de dados FB E IB


robinhocne

Pergunta

Estou com um problema em conflito de banco de dados, pois esta dando esse erro na hora de fazer um abusca de um relatório por periodo de data:

Imagem de erro

Pois esta dando esse erro no cliente meu, pois em meu pc não está dando, já estou com o banco de dados do cliente e no meu passou normal, pois no cliente esta o Firebird instalado.E no meu eu tenho o InterBase e Firebird, então desistalei os dois e instalei o FB mas não funcionou da uma mensagem de DataBase Univable, depois instalei só o IB e deu certo e mostra o relatório normal.

Pois eu quero só ficar com o FB não quero o IB, como eu resolve esse conflito?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Estou com um problema em conflito de banco de dados, pois esta dando esse erro na hora de fazer um abusca de um relatório por periodo de data:
não estou certo de que a mensagem tenha relação com o "comflito", mas em todos os casos...

Pois esta dando esse erro no cliente meu, pois em meu pc não está dando, já estou com o banco de dados do cliente e no meu passou normal, pois no cliente esta oFirebird instalado.E no meu eu tenho o InterBase e Firebird, então desistalei os dois e instalei o FB mas não funcionou da uma mensagem de DataBase Univable, depois instalei só o IB e deu certo e mostra o relatório normal.

Pois eu quero só ficar com o FB não quero o IB, como eu resolve esse conflito?

experimente:

- feche seu aplicativo Delphi;

- desinstalar o IB e o Firebird;

- procurar na pasta c:\windows\system32 pelo arquivo GDS32.DLL e tente apagá-lo. Se não for possível, reinicie o computador após ter desinstalado os servidores dos bancos, e tente removê-lo novamente;

- instale o Firebird (de preferência uma versão compatível com a dos seu cliente) e no processo de istalação, haverá uma opção a ser marcada que fará com que seja gravada na pasta system32 uma versão de retro-compatibilidade com o IB (ou seja, será gravada uma cópia da FBCLient.DLL com o nome GDS32.DLL). Neste "manual" que coloquei neste post tem referência a ela (se não me engano).

Qual componente que você usa para fazer acesso ao banco? Se forem os da paleta IB não haverá qualquer problema, visto que ele acessa a GDS32.DLL (que você acabou de criar).

OBS: Quando for feita uma troca de versão do FB 1.5 para 2.0 ou 2.1, por exemplo, antes de desinstalar uma versão e instalar a nova, é conveniente fazer o backup - via gbak.exe ou IBExpert gerando o .fbk que pode posteriormente ser restaurado.

Link para o comentário
Compartilhar em outros sites

  • 0

Só para complementar a respeito o erro

invalid expression in the ORDER BY clause ( not contained in either aggregate function or the

group by clause )

expressão inválida na clausla ORDER BY ( não conteve uma função agregada ou a clausula GROUP BY )

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Só para complementar a respeito o erro

invalid expression in the ORDER BY clause ( not contained in either aggregate function or the

group by clause )

expressão inválida na clausla ORDER BY ( não conteve uma função agregada ou a clausula GROUP BY )

abraço

Em relação a respota do Micheus acho que faz sentido, mas no meu ele roda e no cliente não acabei testando agora só com o InterBase e funcionou, mas essa opção do Firebird eu não tinha testado ainda, vou verificar e espero que seja isso mesmo, pois preciso urgentemente, e a questão da tradução que o Jhonas colocou, o mais estranho é que o group by nem tem nada nesse formulario ou instrução, mas estava pesquisando e vou configurar como local host no IbDataBase que é o componente de conexão e como remoto, vou testar de noite e se der certo postarei .....

Link para o comentário
Compartilhar em outros sites

  • 0
Só para complementar a respeito o erro

invalid expression in the ORDER BY clause ( not contained in either aggregate function or the

group by clause )

expressão inválida na clausla ORDER BY ( não conteve uma função agregada ou a clausula GROUP BY )

abraço

Em relação a respota do Micheus acho que faz sentido, mas no meu ele roda e no cliente não acabei testando agora só com o InterBase e funcionou, mas essa opção do Firebird eu não tinha testado ainda, vou verificar e espero que seja isso mesmo, pois preciso urgentemente, e a questão da tradução que o Jhonas colocou, o mais estranho é que o group by nem tem nada nesse formulario ou instrução, mas estava pesquisando e vou configurar como local host no IbDataBase que é o componente de conexão e como remoto, vou testar de noite e se der certo postarei .....

As duas dicas tanto como do Micheus e Jhonas foi otimas para pode resolver esse tópico meu,

Primeiro para funcionar só com o Firebird, tentei fazer do jeito que um amigo meu me falou:

Mudar a conexão do DataBase para LocalHost, fiz dessa maneira, mas só que a minha conexão com o banco de dados é feito por registro- Ok.

Segundo fiz da maneira que o Micheus me passou, desistalei o Fb e Ib e exclui o gds32 da system32 e instalei o Fb de acordo com as instruções dele, Ok funcionou, consegui fazer rodar pelo Fb - Ok

e Terceiro em questão de maior precisao seria o erro que estava dando, testei e continuou com o mesmo erro, mas verificando melhor a mensagem de erro e a dica que Jhonas tinha passado, a soma de valores desse relatorio eu estava colocando um Order By, foi só tirar e tudo funcionou corretamente.....

Mas um duvida que me fica matutando, mesmo com esse erro na soma do Relatorio, com o InterBase ele rodou e com o Ferebir não, então porque aconteceu isso?

Link para o comentário
Compartilhar em outros sites

  • 0
(...) e Terceiro em questão de maior precisao seria o erro que estava dando, testei e continuou com o mesmo erro, mas verificando melhor a mensagem de erro e a dica que Jhonas tinha passado, a soma de valores desse relatorio eu estava colocando um Order By, foi só tirar e tudo funcionou corretamente.....

Mas um duvida que me fica matutando, mesmo com esse erro na soma do Relatorio, com o InterBase ele rodou e com o Ferebir não, então porque aconteceu isso?

robinhocne, você poderia colocar aqui a SQL que estava causando o erro (com o order by e tudo o mais)?

Qual a versão do Intebase que você usava? (seria 7 ou posterior)

Qual a versão do Firebird? (seria a 1.5)

Link para o comentário
Compartilhar em outros sites

  • 0
(...) e Terceiro em questão de maior precisao seria o erro que estava dando, testei e continuou com o mesmo erro, mas verificando melhor a mensagem de erro e a dica que Jhonas tinha passado, a soma de valores desse relatorio eu estava colocando um Order By, foi só tirar e tudo funcionou corretamente.....

Mas um duvida que me fica matutando, mesmo com esse erro na soma do Relatorio, com o InterBase ele rodou e com o Ferebir não, então porque aconteceu isso?

robinhocne, você poderia colocar aqui a SQL que estava causando o erro (com o order by e tudo o mais)?

Qual a versão do Intebase que você usava? (seria 7 ou posterior)

Qual a versão do Firebird? (seria a 1.5)

Bom essa seria a instrução errada:

With QrySoma do
   begin
      close;
      sql.clear;
      sql.add ('Select sum (L.valor), L.codigo, L.aluno, L.historico, L.valor, L.vencimento, A.Codigo from lancamento L, Alunos A');
      sql.add ('where l.aluno = a.codigo order by l.vencimento, l.historico, l.aluno');
      open;
   end;

e tirei o order by l.vencimento, l.historico, l.aluno

e funcionou.

O InterBase é o 6.

e o Firebird é o 2.0.1

mas perguntei para alguns amigos e eles me falaram que no IB você consegue fazer umas coisa que não dá erro que o FB acaba dando erro.

Mas em questão de duvida seria porque em um funcionou e no outro não, se caso é isso que meus amigos me falaram então pode encerrar este tópico.

Valeu mais uma vez de muitas vezes Micheus e Jhonas, espero um dia ficar bem capacitado igual à vocês para que posssa fazer parte do tópico como moderador.

Link para o comentário
Compartilhar em outros sites

  • 0

Apesar de resolvido o tópico, vou alongar mais um pouquinho, esta discussão, porque acredito que seja útil.

Bom essa seria a instrução errada:

With QrySoma do
  begin
    close;
    sql.clear;
    sql.add ('Select sum (L.valor), L.codigo, L.aluno, L.historico, L.valor, L.vencimento, A.Codigo from lancamento L, Alunos A');
    sql.add ('where l.aluno = a.codigo order by l.vencimento, l.historico, l.aluno');
    open;
  end;
e tirei o order by l.vencimento, l.historico, l.aluno e funcionou.
robinhocne, para ser sincero, eu diria que nem deste modo deveria ter funcionado. Sempre que você usa uma função de agregação (SUM, COUNT, MIN, MAX, AVG) você tem que declarar a cláusula GROUP BY, onde os campos que a seguem são todos aqueles outros declarados na cláusula SELECT (quando houverem), exceto os utilizados pela função. Lembrando a mensagem que você citou: "invalid expression in the ORDER BY clause ( not contained in either aggregate function or the group by clause )" Veja que ela aponta um erro na cláusula ORDER BY, citando: "expressão inválida na cláusula ORDER BY" e complementa com: "não contida em qualquer função de agregação ou na cláusula group by" Ou seja, a mensagem sugere que você não teria usado campos na cláusula ORDER BY que fossem qualquer um das colunas em que a função de agregação foi usada ou que, pelo menos, fosse um dos campos contidos na cláusula GROUP BY - a qual você não declarou. Resumindo, sua consulta eventualmente pode estar "funcionando", mas não está de acordo com o padrão. Ficam aqui exemplos de algumas situações possíveis: 1) Exemplo de ORDER BY com usando campo de agregação - sem cláusula GROUP BY:
select count(JOB_CODE) Qtd_Job, max(MAX_SALARY) Tot_Salary
from JOB order by Qtd_Job
note que neste caso não se fez necessário o uso de GROUP BY, porque só temos funções de agregação na cláusula SELECT e o ORDER BY será aceito porque faz referência a uma coluna que é uma das funções. A verdade é que apesar de funcionar, na prática não há utilidade porque não haveria o que ordenar, já que o resultado será apenas uma única linha. Mas, ao utilizar a cláusula GROUP BY, já teríamos mais linhas como resultado. 2)Exemplo de ORDER BY usando campo de agregação e agrupamento de valores com o uso de GROUP BY:
select count(JOB_CODE) Qtd_Job, max(MAX_SALARY) Tot_Salary
from JOB group by JOB_COUNTRY, JOB_GRADE
order by JOB_COUNTRY
agora estaremos usando, na cláusula ORDER BY, um campo declarado na cláusula GROUP BY e que não aparece na cláusula SELECT. Note também, que estamos agrupando o resultado por campos que não declaramos na cláusula SELECT, porém, a recíproca não é verdadeira. Ao declarar campos na cláusula SELECT, estes deverão ser declarados na cláusula GROUP BY! 3)Exemplo de ORDER BY com campo de agregação e outros para o agrupamento:
select count(JOB_CODE) Qtd_Job, max(MAX_SALARY) Tot_Salary, JOB_COUNTRY
from JOB group by JOB_COUNTRY, JOB_GRADE
order by Tot_Salary desc

nesta situação, usamos a coluna referente a função de agregação declarada na cláusula SELECT para a ordenação das informações.

As consultas exemplo, tem apenas função didática, e você pode testá-las usando o banco EMPLOYEE (um db de teste que acomampanha o IB e FB). No FB, normalmente é instalado na pasta: C:\Arquivos de programas\Firebird\Firebird_2_0\examples\empbuild\EMPLOYEE.FDB

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...