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]