GARANTIR DESCONTO

Fórum Erro SQL: Invalid expression in the select list #350087

05/12/2007

0

Tenho uma tela que possui um botão ´Filtrar´ e quando clico nele ele roda os seguintes comandos:

procedure TFMBUMARKETING.Button2Click(Sender: TObject); begin qyres.Close; qyres.SQL.Clear; QYRES.SQL.ADD(´SELECT C.DS_FABRP, E.DS_SEGMERC, I.DS_CHART, A.CD_UF , A.DS_CIDADE, COUNT(A.NR_MARK_CHART) AS QT_EMAIL_ENVIADOS,´); QYRES.SQL.ADD(´COUNT(A.DT_RETORNO_EMAIL) AS QT_EMAIL_RETORNADOS FROM MARKETING_CHART A´); QYRES.SQL.ADD(´LEFT OUTER JOIN MARKETING_FABRP B ON (B.NR_MARKETING=A.NR_MARKETING)´); QYRES.SQL.ADD(´LEFT OUTER JOIN TAB_FABR C ON (C.CD_FABRP=B.CD_FABRP)´); QYRES.SQL.ADD(´LEFT OUTER JOIN MARKETING_SEGMERC D ON (D.NR_MARKETING=A.NR_MARKETING)´); QYRES.SQL.ADD(´LEFT OUTER JOIN TAB_SEGMERC E ON (E.CD_SEGMERC=D.CD_SEGMERC)´); QYRES.SQL.ADD(´LEFT OUTER JOIN MARKETING_E_MAIL_CONTATO F ON(F.NR_MARKETING=A.NR_MARKETING)´); QYRES.SQL.ADD(´LEFT OUTER JOIN TAB_TIPO_CONTATO_EMAIL G ON(G.CD_TIPO_CONTATO_EMAIL=F.CD_TIPO_CONTATO_EMAIL)´); QYRES.SQL.Add(´LEFT OUTER JOIN MARKETING_RAMO_ATIVIDADE H ON(H.NR_MARKETING=A.NR_MARKETING)´); QYRES.SQL.ADD(´INNER JOIN TAB_CHART I ON (I.CD_CHART=A.CD_CHART)´); qyres.SQL.Add(´WHERE´); if (e_email3.text<>´´) then begin qyres.SQL.Add(´A.DS_EMAIL=:DS_EMAIL´); qyres.ParamByName(´DS_EMAIL´).AsString := e_email3.text; qyres.SQL.Add(´AND ´); end; if (edtp_contato3.text<>´´) then begin qyres.SQL.Add(´G.CD_TIPO_CONTATO_EMAIL=:CD_TIPO_CONTATO_EMAIL´); qyres.ParamByName(´CD_TIPO_CONTATO_EMAIL´).asstring := edtp_contato3.text; qyres.SQL.Add(´AND ´); end; if (edcd_segmerc3.text<>´´) then begin qyres.SQL.Add(´D.CD_SEGMERC=:CD_SEGMERC´); qyres.ParamByName(´CD_SEGMERC´).asstring := edcd_segmerc3.text; qyres.SQL.Add(´AND ´); end; if (edcd_fabr3.text<>´´) then begin qyres.SQL.Add(´C.CD_FABRP=:CD_FABRP´); qyres.ParamByName(´CD_FABRP´).asstring := edcd_fabr3.text; qyres.SQL.Add(´AND ´); end; if (edcd_ramo3.text<>´´) then begin qyres.SQL.Add(´H.CD_RAMO_ATIVIDADE=:CD_RAMO_ATIVIDADE´); qyres.ParamByName(´CD_RAMO_ATIVIDADE´).asstring := edcd_ramo3.text; qyres.SQL.Add(´AND ´); end; if (edcd_uf3.text<>´´) then begin qyres.SQL.Add(´A.CD_UF=:CD_UF´); qyres.ParamByName(´CD_UF´).asstring := edcd_uf3.text; qyres.sql.savetofile(´C:\sql.txt´); qyres.SQL.Add(´AND ´); end; if not EMPTY(edds_cidade3.Text) then Begin qyres.SQL.Add(´A.DS_CIDADE LIKE ´´¬´+ edds_cidade3.Text+´´´´); qyres.SQL.Add(´AND ´); end; if (CheckBox2.Checked = True) then begin qyres.SQL.Add(´A.DT_RETORNO_EMAIL IN(SELECT DT_RETORNO_EMAIL FROM MARKETING_CHART WHERE DT_RETORNO_EMAIL IS NOT NULL)´); qyres.SQL.Add(´AND ´); end; if ((DateEdit3.text<>´ / / ´)and(DateEdit4.text<>´ / / ´)) then begin QYRES.SQL.ADD(´A.DT_EMISSA BETWEEN :DT1 AND :DT2´); QYRES.PARAMBYNAME(´DT1´).ASSTRING := DATEEDIT3.TEXT; QYRES.PARAMBYNAME(´DT2´).ASSTRING := DATEEDIT4.TEXT; QYRES.SQL.ADD(´AND ´); end; if (NR_MARK_CHART3.text<>´´) then begin QYRES.SQL.ADD(´A.NR_MARK_CHART=:NR_MARK_CHART´); QYRES.PARAMBYNAME(´NR_MARK_CHART´).ASSTRING := NR_MARK_CHART3.TEXT; QYRES.SQL.ADD(´AND ´); end; if (edcd_chart3.text<>´´) then begin QYRES.SQL.ADD(´A.CD_CHART=:CD_CHART´); QYRES.PARAMBYNAME(´CD_CHART´).ASSTRING := EDCD_CHART3.TEXT; QYRES.SQL.ADD(´AND ´); end; QYRES.SQL.DELETE(QYRES.SQL.COUNT-1); QYRES.SQL.ADD(´GROUP BY 1,2,3,4,5´); QYRES.OPEN; end;


Se eu não informar nada ou apenas clicar no checkbox2 e deixa-lo como true, o sql roda redondinho... agora se eu por exemplo quiser filtrar a partir do CD_UF o programa gera o seguinte erro..
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)


Mas eu não consigo entender o porque disso, pois quando eu rodo sql no ibexpert tudo funciona certinho...

Desde já agradeço, obrigado.

[/list]


Douglass

Douglass

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar