Jump to content
Fórum Script Brasil
  • 0

[resolvido] Edatabaseerro


Samuelsjn
 Share

Question

Ola pessoal,

Estou desenvolvendo um sisteminha utilizando delphi 7 + postgres.

Utilizei o componente ADOConnection para fazer a conexão com o driver ODBC do postgres.

A conexão esta legal, eu estou conseguindo ver todas as minhas tabelas no componente ADOTable, mas quando eu utilizo o componente ADOQuery, para inserir um valor na tabela, ele esta me trazendo uma exeção:

EDatabaseErro whith message 'Query: Parameter 'nome' not found', Process stopped.

Esse erro esta falando que não esta encontrando o atributo nome da minha tabela. Como posso resolver esse problema?

escrevi um codigo simples só para cadastrar o nome.

DataModule1.Query.Close;

DataModule1.Query.SQL.Add('select * from fornecedores');

DataModule1.Query.Parameters.ParamByName('cidade').Value := edtNome.Text;

DataModule1.Query.ExecSQL;

Ele da o erro exatamente quando mando abrir a conexão (ExecSQL). alguém pode me ajudar?

Desde já o meu muito obrigado.

Abraço

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

EDatabaseErro whith mensagem ' Query: Parâmetro ' nome' não encontrado', Processo parou.

aparentemente pareçe que voce definiu um parametro chamado 'nome' mas ao abrir a query este paramentro não esta aparecendo, como se voce tivesse definido assim = :nome ou Parameters.ParamByName('nome').Value ... da uma verificada na propriedade Params da query.

Link to comment
Share on other sites

  • 0
(...), ele esta me trazendo uma exeção:

EDatabaseErro whith message 'Query: Parameter 'nome' not found', Process stopped.

Esse erro esta falando que não esta encontrando o atributo nome da minha tabela. Como posso resolver esse problema?

escrevi um codigo simples só para cadastrar o nome.

DataModule1.Query.Close;

DataModule1.Query.SQL.Add('select * from fornecedores');

DataModule1.Query.Parameters.ParamByName('cidade').Value := edtNome.Text;

DataModule1.Query.ExecSQL;

Ele da o erro exatamente quando mando abrir a conexão (ExecSQL). alguém pode me ajudar?

Samuelsjn, Temos alguns problemas aqui. Vejamos:

1) A mensagem reclama da inexistência de um parâmetro chamado "nome". Porém, vê-se que você tenta passar um parâmetro chamado "cidade" (ver em ParamByName);

2) Usando um parâmetro "nome" ou "cidade", um deles deveria estar declarado na cláusula "where", a qual não foi utilizada em sua consulta;

3) Uma instrução do tipo SELECT é executada em um componente query através do método "Open". Utiliza-se "ExecSQL", para comandos SQL que não retornem linhas (resultado da consulta), ou seja, UPDATE, DELETE, CREATE, DROP, ... ;

4) Como esta instrução SQL é adicionada a propriedade SQL da query em tempo de execução, você não pode deixar de limpá-la antes de fazer a nova atribuição. Resumindo, antes de chamar o método SQL.Add(..) você deve chamar SQL.Clear.

como deveria ficar:

DataModule1.Query.Close;

DataModule1.Query.SQL.Clear;

DataModule1.Query.SQL.Add('select * from fornecedores where cidade = :cidade');

DataModule1.Query.Parameters.ParamByName('cidade').AsString := edtNome.Text;

DataModule1.Query.Open;

Observe que na cláusula "where", testar com "=" significa que deverá haver na tabela uma cidade "escrita" exatamente como o parâmetro informado.

Pode haver necessidade de converter para upcase os valores a serem testados ou, se for uma pesquisa parcial, ser utilizado o LIKE.

Abraços

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...