Jump to content

Delphi 7 e Mysql mensagem "Objeto Parameter definido incorretamente. As informações são inconsistentes ou incompletas"


Robson Rabachini
Ir para a Solução Solucionado por Rogerio Santos,

Postagens Recomendadas

Pessoal. Fiz uma query onde preciso abater da tabela tbl_fab_saldo_estoque a quantidade da tabela tbl_fab_ppp_aaa e me exibindo o saldo que resta. Então, fiz no workbench umaquery abaixo, que roda certinho nesse ambiente, porém, quando vou rodar no Delphi 7 tenho a seguinte mensagem:

"Objeto Parameter definido incorretamente. As informações são inconsistentes ou incompletas"

O que faço para resolver isso?

Essa é a query em questão

set @saldo:= 0, @produto_ant:= 0; 
select *, 
IF(@produto_anterior!= cproduto_p, 
@saldo:= saldo_est, 
@saldo:= @saldo - qtdeOP_p) as saldo, 
@produto_anterior:= cproduto_p as produto, 
 @saldo:= @saldo + qtdeOP_p as isso 
from tbl_fab_ppp_aaa

left join tbl_fab_saldo_estoque on cod_est = CProduto_p 
where Prioridade_p > 0 
and Referencia_p = '102520-01B'
and PosicaodosProcessos_p not like '%greenyellow%' 
order by Prioridade_p, Referencia_p, CLote_p
 

 

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Solução

No seu código Delphi 7, você está usando variáveis de usuário (@saldo, @produto_ant) e também está tentando realizar uma lógica condicional dentro da consulta SQL.

A mensagem de erro sugere que pode haver um problema com a forma como os parâmetros estão sendo usados ou definidos. No entanto, sem ver todo o contexto do código Delphi, é difícil determinar o problema exato.

Aqui estão algumas coisas que você pode verificar para resolver o problema:

Certifique-se de que os parâmetros @saldo e @produto_ant foram definidos corretamente antes de executar a consulta SQL. Eles devem ser definidos como parâmetros de entrada ou saída, dependendo do banco de dados que você está usando.

Verifique se as variáveis de usuário (@saldo, @produto_ant) estão sendo usadas corretamente na consulta SQL. Certifique-se de que elas estão sendo inicializadas corretamente e que seus valores estão sendo usados nos lugares certos.

Verifique se não há erros de sintaxe na consulta SQL. Parece que você está tentando usar uma lógica condicional dentro da consulta (IF), o que pode ser complicado e propenso a erros. Verifique se a sintaxe está correta e se a consulta está fazendo o que você espera.

Certifique-se de que os parâmetros @produto_anterior e @saldo estão sendo usados corretamente na lógica condicional. Parece que você está tentando atualizar esses parâmetros dentro da consulta, o que pode ser confuso e propenso a erros. Certifique-se de que a lógica de atualização está correta e faz sentido.

Se você puder fornecer mais detalhes sobre o ambiente em que o código está sendo executado e o banco de dados que está sendo usado, eu posso oferecer mais assistência para resolver o problema.

uma ideia seria trocar o IF pelo CASE 
 

SET @saldo := 0;
SET @produto_ant := 0;

SELECT *,
    CASE
        WHEN @produto_ant != cproduto_p THEN
            @saldo := saldo_est
        ELSE
            @saldo := @saldo - qtdeOP_p
    END AS saldo,
    @produto_ant := cproduto_p AS produto,
    @saldo := @saldo + qtdeOP_p AS isso
FROM tbl_fab_ppp_aaa
LEFT JOIN tbl_fab_saldo_estoque ON cod_est = CProduto_p
WHERE Prioridade_p > 0
    AND Referencia_p = '102520-01B'
    AND PosicaodosProcessos_p NOT LIKE '%greenyellow%'
ORDER BY Prioridade_p, Referencia_p, CLote_p;
 

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

Amigo, obrigado pela resposta.

Fiz essa alteração proposta, rodei no ambiente MYSQL Workbench e funcionou, assim como a minha função

Porém, no Delphi 7, mesmo com a alteração,  continua exibindo essa mensagem de erro.

Será que tem algo a ver com o ODBC?

  • Curtir 1
Link to comment
Compartilhe em outros sites

5 horas atrás, Robson Rabachini disse:

Amigo, obrigado pela resposta.

Fiz essa alteração proposta, rodei no ambiente MYSQL Workbench e funcionou, assim como a minha função

Porém, no Delphi 7, mesmo com a alteração,  continua exibindo essa mensagem de erro.

Será que tem algo a ver com o ODBC?

Se a consulta SQL funciona normalmente no MySQL Workbench, mas causa o erro "Objeto Parameter definido incorretamente" no Delphi 7, é provável que haja uma diferença na configuração do ODBC entre o Delphi 7 e o MySQL Workbench.

Da uma verificada nos seguintes pontos

Driver ODBC: Verifique se você está usando o mesmo driver ODBC tanto no Delphi 7 quanto no MySQL Workbench. Se estiver usando um driver diferente no Delphi 7, pode haver diferenças na forma como os parâmetros são tratados ou na forma como a consulta é processada.

Configurações de DSN (Data Source Name): Verifique se as configurações de DSN no Delphi 7 estão corretas e correspondem às configurações usadas no MySQL Workbench. Certifique-se de que o DSN esteja apontando para o mesmo banco de dados e tenha as mesmas configurações de autenticação e permissões.

Compatibilidade de Versão: Verifique se há diferenças de versão entre o driver ODBC usado no Delphi 7 e o utilizado no MySQL Workbench. Às vezes, versões diferentes do driver podem ter comportamentos diferentes ou oferecer suporte a diferentes recursos.

Parâmetros da Conexão: Verifique se as configurações de conexão no Delphi 7 estão corretas e se os parâmetros, como o nome de usuário e a senha, estão definidos corretamente para acessar o banco de dados.

O teste de conexão do Data source retorna sucesso?

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...