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

Como posso solucionar o "ERRO" EdatabaseError


Alex Freitas

Pergunta

Gente estou tentando criar uma aplicação que faz uma consulta à uma tabela em Access 2003 e posteriormente gere um relatório em QuickReports, A minha Form de pesquisa está montada com um Edit, 2 DateTimePicker, e 1 botão para Ok e um Cancelar, e uma ADOQuery para fazer a ligação com a tabela...

No evento onclick do Botão 1 digitei o seguinte código para a pesquisa.

procedure TFrmRelCorretor.BitBtn1Click(Sender: TObject);

Var

Inicio, Final : String;

begin

If DateTimePicker2.Date < DateTimePicker1.Date then

Begin

ShowMessage('Intervalo de datas inválido, a data inicial é menor que a data final!');

DateTimePicker2.Date := DateTimePicker1.Date;

end

else

begin

Inicio := DateToStr(DateTimePicker1.Date);

Final := DateToStr(DateTimePicker2.Date);

QueryPesCorretor.Close;

QueryPesCorretor.SQL.Clear;

QueryPesCorretor.SQL.Add('Select * From Clientes Where DataCadastro >=: PInicio and DataCadastro <=: PFinal and Clientes.Corretor = '''+EdtCampo.Text+'''');

QueryPesCorretor.Parameters.ParamByName('PInicio').Value := StrToDate(Inicio);

QueryPesCorretor.Parameters.ParamByName('PFinal').Value := StrToDate(Final);

QueryPesCorretor.Open;

FrmRelPorCorretor.QuickRep1.Preview;

FrmRelCorretor.Close;

end

end;

end.

Porem quando a aplicação é execultada, sai o seguinte erro:

Project AutoControle.Exe Raised exception class EdatabaseError with message

'QueryPesCorretor: Parameter 'PInicio' Not Found. Process stopped....

Por favor me ajudem a resolver este erro...

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Porem quando a aplicação é execultada, sai o seguinte erro:

Project AutoControle.Exe Raised exception class EdatabaseError with message

'QueryPesCorretor: Parameter 'PInicio' Not Found. Process stopped....

Alex Freitas, o problema é que você não está usando a sintax correta.

Para definir um parâmetro na instrução SQL o ":" tem que estar junto ao nome do parâmetro:

... Where DataCadastro >= :PInicio and DataCadastro <= :PFinal and Clientes.Corretor = ...

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

Este erro eu consegui resolver, a sua dica funcionou, muito obrigado, Porém gerou um novo erro...

"Project xxxxxxxx.exe raised exception class EOleException with message 'Objeto Parameter definido

incorretamente. As informações são inconsistentes ou incompletas'. Process stopped. Use Step or Run to

continue."

Porque está acontecendo este erro??

Link para o comentário
Compartilhar em outros sites

  • 0
"Project xxxxxxxx.exe raised exception class EOleException with message 'Objeto Parameter definido

incorretamente. As informações são inconsistentes ou incompletas'. Process stopped. Use Step or Run to

continue."

Alex Freitas, experimente definir o tipo do parâmetro que estará sendo passado:

...
QueryPesCorretor.Parameters.ParamByName('PInicio').DataType := ftDateTime; // ou ftDate
QueryPesCorretor.Parameters.ParamByName('PFinal').DataType := ftDateTime; // ou ftDate
QueryPesCorretor.Parameters.ParamByName('PInicio').Value := StrToDate(Inicio);
QueryPesCorretor.Parameters.ParamByName('PFinal').Value := StrToDate(Final);
...

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Alex Freitas

Amigo infelizmente o erro continua...

Não sei o que está acontecendo antes, fiz o mesmo código em um outra aplicação e funcionou, já neste não estou sabendo o porque.

Se puder me ajudar agradeço.

Abraço,

Link para o comentário
Compartilhar em outros sites

  • 0

Alex Freitas, por acaso você adicionou os parâmetros em design-time ao seu componente QueryPesCorretor (click no botãozinho [...] da propriedade Parameters)?

Se sim, remova eles, já que serão criados em run-time quando você adiciona a consulta SQL (via SQL.Add).

É o tipo de erro difícil de ajudar a distância... Voce deve dar uma repassada geral no componente e procedimentos para ver se não há algo errado.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver o erro.

O problema foi resolvido quando eu troquei a formato da data em meu banco de dados que é em Access 2003, o formato estava como Data Abreviada, e alterei para Data Completa resolvendo o problema.

Porem está acontecendo que a consulta não filtra os dados digitados, exibe todo o conteúdo do BD. Fiz alguma coisa errada ou falta alguma coisa?

Link para o comentário
Compartilhar em outros sites

  • 0
Porem está acontecendo que a consulta não filtra os dados digitados, exibe todo o conteúdo do BD. Fiz alguma coisa errada ou falta alguma coisa?

Alex Freitas, se você está utilizando parametrização e está passando as datas no tipo TDate ou TDateTime (já que usa a função StrToDate), fica difícil dizer.

Possivelmente não irá alterar em nada a condição atual, mas é interessante que quando você filtrar um período de data, que use o between:

Where DataCadastro between :PInicio and :PFinal and Clientes.Corretor = ...

Entretanto, sugiro que você execute esta mesma consulta (com os valores no lugar do parâmetro) diretamente no MSAccess - assim, você fica sabendo se sua consulta está ou não correta e retornando algo.

Abraços

Editado por Micheus
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...