И снова здрасте...
Сейчас делаем выгрузку через макрос в Excel'e, решил попробовать сделать тот же запрос в Delphi но наткнулся на проблему. Система все время выдает ошибку
Цитата:
ADOQuery1: Parameter 'start' not found
|
И так на все переменные. Уже попробовал прописывать, как советовали интернеты, но толку 0 ((
Код:
ADOQuery1.Parameters.ParseSQL(ADOQuery1.sql.text, true);
Вот сам код
Код:
procedure TForm1.Button1Click(Sender: TObject);
var startQ,finishQ,Cod1Q: string;
begin
if (Start.text <> '') and (Finish.Text <> '') and (Cod1.text <> '') then
StartQ:=Trim(Start.Text);
FinishQ:=Trim(Finish.Text);
Cod1Q:=Trim(Cod1.Text);
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SET QUOTED_IDENTIFIER OFF ');
ADOQuery1.SQL.Add('EXEC gdpExecSql "SELECT FNOM_DOC,FNOM_VAG,FNOM_CON,FDAT_SRC');
ADOQuery1.SQL.Add('FROM TDATA JOIN TCL AS TCL_FIC_NMK_ ON FIC_NMK_=TCL_FIC_NMK_.FID JOIN TCL AS TCL_FIC_MRS_V_ ON FIC_MRS_V_=TCL_FIC_MRS_V_.FID');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_OTP_V_ ON FIC_OTP_V_=TCL_FIC_OTP_V_.FID JOIN TCL AS TCL_FIC_PER_V_ ON FIC_PER_V_=TCL_FIC_PER_V_.FID JOIN TCL AS TCL_FIC_OTP_K_ ON FIC_OTP_K_=TCL_FIC_OTP_K_.FID JOIN TCL AS TCL_FIC_RPS_T_ ON FIC_RPS_T_=TCL_FIC_RPS_T_.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_RPS_V_ ON FIC_RPS_V_=TCL_FIC_RPS_V_.FID JOIN TCL AS TCL_FIC_RPS_P_ ON FIC_RPS_P_=TCL_FIC_RPS_P_.FID JOIN TCL AS TCL_FIC_RPS_O_ ON FIC_RPS_O_=TCL_FIC_RPS_O_.FID JOIN TCL AS TCL_FIC_RPS_A_ ON FIC_RPS_A_=TCL_FIC_RPS_A_.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_ORG_SRC ON FIC_ORG_SRC=TCL_FIC_ORG_SRC.FID JOIN TCL AS TCL_FIC_ORG_DST ON FIC_ORG_DST=TCL_FIC_ORG_DST.FID JOIN TCL AS TCL_FIC_ORG_COM ON FIC_ORG_COM=TCL_FIC_ORG_COM.FID JOIN TCL AS TCL_FIC_ORG_OUT ON FIC_ORG_OUT=TCL_FIC_ORG_OUT.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_VAL_ ON FIC_VAL_=TCL_FIC_VAL_.FID JOIN TCL AS TCL_FIC_STR_COM ON FIC_STR_COM=TCL_FIC_STR_COM.FID JOIN TCL AS TCL_FIC_RWY_COM ON FIC_RWY_COM=TCL_FIC_RWY_COM.FID JOIN TCL AS TCL_FIC_RWY_S_COM ON FIC_RWY_S_COM=TCL_FIC_RWY_S_COM.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_RWY_T_COM ON FIC_RWY_T_COM=TCL_FIC_RWY_T_COM.FID JOIN TCL AS TCL_FIC_STR_OUT ON FIC_STR_OUT=TCL_FIC_STR_OUT.FID JOIN TCL AS TCL_FIC_RWY_OUT ON FIC_RWY_OUT=TCL_FIC_RWY_OUT.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_RWY_S_OUT ON FIC_RWY_S_OUT=TCL_FIC_RWY_S_OUT.FID JOIN TCL AS TCL_FIC_RWY_T_OUT ON FIC_RWY_T_OUT=TCL_FIC_RWY_T_OUT.FID JOIN TCL AS TCL_FIC_RWY_PER ON FIC_RWY_PER=TCL_FIC_RWY_PER.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_RWY_S_PER ON FIC_RWY_S_PER=TCL_FIC_RWY_S_PER.FID JOIN TCL AS TCL_FIC_RWY_T_PER ON FIC_RWY_T_PER=TCL_FIC_RWY_T_PER.FID ');
ADOQuery1.SQL.Add('JOIN TCL AS TCL_FIC_RWY_S_SRC ON FIC_RWY_S_SRC=TCL_FIC_RWY_S_SRC.FID JOIN TCL AS TCL_FIC_RWY_T_SRC ON FIC_RWY_T_SRC=TCL_FIC_RWY_T_SRC.FID ');
ADOQuery1.SQL.Add('WHERE TCL_FIC_PER_V_.FCOD=''прибуття'' ');
ADOQuery1.SQL.Add('AND FOP_DATE>= '+Char(39));
ADOQuery1.Parameters.ParseSQL(ADOQuery1.sql.text, true);
ADOQuery1.SQL.Add(':start');
ADOQuery1.Parameters.ParamByName('start').Value:=StartQ;
ADOQuery1.SQL.Add(Char(39)+' AND FOP_DATE<= '+Char(39));
ADOQuery1.SQL.Add(':finish');
ADOQuery1.Parameters.ParamByName('finish').Value:=FinishQ;
ADOQuery1.SQL.Add(Char(39)+' AND (TCL_FIC_NMK_.FCOD LIKE '+Char(39));
ADOQuery1.SQL.Add(':Cod1');
ADOQuery1.Parameters.ParamByName('Cod1').Value:=Cod1Q;
ADOQuery1.SQL.Add('%'+Char(39)+')"');
ADOQuery1.Active:=True;
//ADOQuery1.ExecSQL;
end;
Подскажите пожалуйста где я чего не досоздал?
PS Прошу прощения. Разобрался через 6 часов возни на месте))) МОЖНО ЗАКРЫВАТЬ)