Boa tarde, Alessandro

Obrigado pela ajuda!

Eu achei que o % estava relacionado ao ' na query...

No meu caso os valores estão armazenados no banco como Strings, abaixo um
novo exemplo que ainda não funciona por causa do mesmo erro.

ps: Tentei debugar a aplicação e não faz a macro-substituição quando executa
a query.

procedure TForm1.BitBtn1Click(Sender: TObject);
Var cQuery : String;
begin
cQuery := 'SELECT D1_FORNECE CLIENTE, D1_LOJA LOJA, D1_DTDIGIT DT_DEV,
D1_NFORI DOC_ORIG, D1_DOC DOC_DEV, SUM(D1_TOTAL-D1_VALDESC) TOTAL ';
cQuery := cQuery + 'FROM SD1010 ';
cQuery := cQuery + 'WHERE D1_FILIAL = :Filial ';
cQuery := cQuery + ' AND D_E_L_E_T_<> :Deletado ';
cQuery := cQuery + ' AND D1_DTDIGIT>= :DtDigit ';
cQuery := cQuery + ' AND D1_NFORI IN (SELECT DAI_NFISCA FROM DAI010 WHERE
DAI_COD= :Carga  AND DAI010.D_E_L_E_T_<> :Deletado AND DAI_FILIAL= :Filial
';
cQuery := cQuery + 'GROUP BY D1_FORNECE, D1_LOJA, D1_DTDIGIT, D1_NFORI,
D1_DOC ';
cQuery := cQuery + 'ORDER BY D1_DTDIGIT ';
ADOQuery1.close;
ADOQuery1.SQL.Add(cQuery);
ADOQuery1.Parameters.ParamByName('Filial').Value :=  #39+'02'+#39;
ADOQuery1.Parameters.ParamByName('DtDigit').Value := #39+'20070801'+#39;
ADOQuery1.Parameters.ParamByName('Carga').Value := #39+'001930'+#39;
ADOQuery1.Parameters.ParamByName('Deletado').Value := #39+'*'+#39;
ADOQuery1.Open;
end;

Em 27/09/07, Alessandro DUARTE de Moraes <[EMAIL PROTECTED]>
escreveu:
>
>   Vamos lá!
> Primeiro notei que estás sempre colocando '%' antes e depois, e utilizando
> os operadores = <> >= ... buenos, o % só deve ser utilizado com o LIKE e tb
> deve ser utilizado com muito cuidado, pois o banco não se utiliza dos
> índices para a instrução LIKE que tem % ante e depois do texto.
> Segundo é que tudo está sendo colocado como um texto, isto é, a
> propriedade Value está sempre recebendo uma string. Te aconcelho a atribuir
> o valor correto, isto é, se o campo que será comparado é uma data então
> atribua uma data ao parâmetro, exemplo:
> ADOQuery.Parameters.ParamByName('DtDigit').Value := Date;
>
> Mesmo assim talvez seja necessário atribuir o tipo de dados do parametro,
> que se não me falha a memória é a propriedade DataType.
>
> Alessandro DUARTE de Moraes
> A.C. Santa Casa do Rio Grande.
> http://www.santacasarg.com.br
>
>
> ----- Original Message -----
> From: Eduardo Mauricio Pessoa de Souza
> To: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
> Sent: Thursday, September 27, 2007 10:52 AM
> Subject: [delphi-br] ADOQuery - Erro com parametros
>
> Bom dia, Pessoal
>
> Sou programador a bastante tempo, porém, começo agora a trabalhar com
> Delphi. Montei um DBgrid que recebe dados de um ADOQuery, mas estou com
> problemas nos parâmetros. o Erro é o seguinte:
>
> Project Project1.EXE raised exception class EOleException with message
> 'Objeto Parameter definido incorretamente'.
> As informações são inconsistentes ou incompletas.
>
> procedure TForm1.BitBtn1Click(Sender: TObject);
> Var cQuery : String;
> begin
> cQuery := 'SELECT D1_FORNECE CLIENTE, D1_LOJA LOJA, D1_DTDIGIT DT_DEV,
> D1_NFORI DOC_ORIG, D1_DOC DOC_DEV, SUM(D1_TOTAL-D1_VALDESC) TOTAL ';
> cQuery := cQuery + 'FROM SD1010 ';
> cQuery := cQuery + 'WHERE D1_FILIAL = :Filial ';
> cQuery := cQuery + ' AND D_E_L_E_T_<> :Deletado ';
> cQuery := cQuery + ' AND D1_DTDIGIT>= :DtDigit ';
> cQuery := cQuery + ' AND D1_NFORI IN (SELECT DAI_NFISCA FROM DAI010 WHERE
> DAI_COD= :Carga AND DAI010.D_E_L_E_T_<> :Deletado AND DAI_FILIAL= :Filial
> ';
> cQuery := cQuery + 'GROUP BY D1_FORNECE, D1_LOJA, D1_DTDIGIT, D1_NFORI,
> D1_DOC ';
> cQuery := cQuery + 'ORDER BY D1_DTDIGIT ';
> ADOQuery1.close;
> ADOQuery1.SQL.Add(cQuery);
> ADOQuery1.Parameters.ParamByName('Filial').Value :=
> #39+'%'+Edit1.Text+'%'+#39;
> ADOQuery1.Parameters.ParamByName ('DtDigit').Value :=
> #39+'%'+Edit2.Text+'%'+#39;
> ADOQuery1.Parameters.ParamByName('Carga').Value :=
> #39+'%'+Edit3.Text+'%'+#39;
> ADOQuery1.Parameters.ParamByName('Deletado').Value :=
> #39+'%'+Edit4.Text+'%'+#39;
> ADOQuery1.Open;
> end;
>
> --
> Eduardo Pessoa
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> --------------------------
> E-mail Seguro Vetorial.net
>
> Mensagem classificada como NÃO-SPAM. Para classificar como SPAM,
> encaminhe para [EMAIL PROTECTED] <spam%40vetorial.net>
>
> Chave de Identificação: 54568,46fbbc2c327881807729863
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Eduardo Pessoa
Consultor Gestão Empresarial e Tecnologia da Informação
Fones: 19 3342-4147/ 9675-0514  / 8188-1990


[As partes desta mensagem que não continham texto foram removidas]

Responder a