sempaisaleh
یک شنبه 27 بهمن 1392, 13:51 عصر
با سلام خدمت دوستان
من يه تكه كد ارم كه يه select رو روي ديتابيس زدم. ولي يه مشكلي كه دارم اينه كه وقتي برنامه رو اجرا ميكنم وقتي مي خوات اين كد ها رو اجرا كنه ميگه مثلا "paramroz1 not found" در صورتي كه اين پارامتر در دستورات استفاده شده.
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT SUM(jam) AS jam, meghdar, GROUPOD_NM');
ADOQuery1.SQL.Add('FROM (SELECT S_GROUPOD.GROUPOD_NM, SUM(S_DTL_FCT.QUANTITY * S_ODS.vazn / 1000) AS jam, (Ahdaf.meghdar_to / 30 * :paramrooz) AS meghdar');
ADOQuery1.SQL.Add(' FROM S_HED_FCT INNER JOIN');
ADOQuery1.SQL.Add(' S_DTL_FCT ON S_HED_FCT.id = S_DTL_FCT.id INNER JOIN');
ADOQuery1.SQL.Add(' S_ODS ON S_ODS.OD_CD = S_DTL_FCT.OD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_GROUPOD ON S_GROUPOD.GROUPOD_CD = S_ODS.GROUPOD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_Markaz ON S_Markaz.Markaz_CD = S_HED_FCT.MARKAZ_CD INNER JOIN');
ADOQuery1.SQL.Add(' Ahdaf ON S_GROUPOD.GROUPOD_CD = Ahdaf.mahsool_gro_cd');
ADOQuery1.SQL.Add(' WHERE (S_HED_FCT.ACC_YEAR = :paramsal11) AND ((S_HED_FCT.Stock_cd = 1) OR');
ADOQuery1.SQL.Add(' (S_HED_FCT.Stock_cd = 2) OR');
ADOQuery1.SQL.Add(' (S_HED_FCT.Stock_cd = 16) OR');
ADOQuery1.SQL.Add(' (S_HED_FCT.Stock_cd = 30)) AND (S_HED_FCT.FLAG = 2) AND (S_HED_FCT.FACT_DATE >= :paramdate11) AND');
ADOQuery1.SQL.Add(' (S_HED_FCT.FACT_DATE <= :paramdate12) AND (S_Markaz.Markaz_CD = :paramgoroh11) AND (Ahdaf.markaz_cd = :paramgoroh12) AND (Ahdaf.sal = :paramsal12) AND');
ADOQuery1.SQL.Add(' (Ahdaf.mah = :parammah1)');
ADOQuery1.SQL.Add(' GROUP BY S_GROUPOD.GROUPOD_NM, Ahdaf.meghdar_to');
ADOQuery1.SQL.Add(' UNION');
ADOQuery1.SQL.Add(' SELECT *');
ADOQuery1.SQL.Add(' FROM OPENQUERY(TADBIR_ASAK,');
ADOQuery1.SQL.Add(' ''SELECT S_GROUPOD.GROUPOD_NM, SUM(S_DTL_FCT.QUANTITY * S_ODS.vazn / 1000) AS jam,');
ADOQuery1.SQL.Add(' (Ahdaf.meghdar_to / 30 * :paramroz1) AS meghdar');
ADOQuery1.SQL.Add(' FROM S_HED_FCT INNER JOIN');
ADOQuery1.SQL.Add(' S_DTL_FCT ON S_HED_FCT.id = S_DTL_FCT.id INNER JOIN');
ADOQuery1.SQL.Add(' S_ODS ON S_ODS.OD_CD = S_DTL_FCT.OD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_GROUPOD ON S_GROUPOD.GROUPOD_CD = S_ODS.GROUPOD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_Markaz ON S_Markaz.Markaz_CD = S_HED_FCT.MARKAZ_CD INNER JOIN');
ADOQuery1.SQL.Add(' Ahdaf ON S_GROUPOD.GROUPOD_CD = Ahdaf.mahsool_gro_cd');
ADOQuery1.SQL.Add(' WHERE (S_HED_FCT.ACC_YEAR = :paramsal21) AND (S_HED_FCT.Stock_cd = 9) AND (S_HED_FCT.FLAG = 2)');
ADOQuery1.SQL.Add(' AND (S_HED_FCT.FACT_DATE >= :paramdate21) AND (S_HED_FCT.FACT_DATE <= :paramdate22) AND');
ADOQuery1.SQL.Add(' (S_Markaz.Markaz_CD = :paramgoroh21) AND (Ahdaf.markaz_cd = :paramgoroh22) AND (Ahdaf.sal = :paramsal22) AND');
ADOQuery1.SQL.Add(' (Ahdaf.mah = :parammah2)');
ADOQuery1.SQL.Add(' GROUP BY S_GROUPOD.GROUPOD_NM, Ahdaf.meghdar_to'')');
ADOQuery1.SQL.Add(' Rowset_1) cte1');
ADOQuery1.SQL.Add('GROUP BY meghdar, GROUPOD_NM');
ADOQuery1.Parameters.ParamByName('paramrooz').Valu e := trim(ComboBox3.Text);
ADOQuery1.Parameters.ParamByName('paramsal11').Val ue := trim('13'+ComboBox2.Text);
ADOQuery1.Parameters.ParamByName('paramsal12').Val ue := trim('13'+ComboBox2.Text);
if ComboBox1.ItemIndex+1>9 then
begin
ADOQuery1.Parameters.ParamByName('paramdate11').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate12').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
if ComboBox1.ItemIndex+1<10 then
begin
ADOQuery1.Parameters.ParamByName('paramdate11').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate12').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
ADOQuery1.Parameters.ParamByName('paramgoroh11').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('paramgoroh12').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('parammah1').Valu e := trim(inttostr(ComboBox1.ItemIndex+1));
ADOQuery1.Parameters.ParamByName('paramroz1').Valu e := trim(ComboBox3.Text);
ADOQuery1.Parameters.ParamByName('paramsal21').Val ue := trim('13'+ComboBox2.Text);
if ComboBox1.ItemIndex+1>9 then
begin
ADOQuery1.Parameters.ParamByName('paramdate21').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate22').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
if ComboBox1.ItemIndex+1<10 then
begin
ADOQuery1.Parameters.ParamByName('paramdate21').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate22').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
ADOQuery1.Parameters.ParamByName('paramgoroh21').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('paramgoroh22').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('paramsal22').Val ue := trim('13'+ComboBox2.Text);
ADOQuery1.Parameters.ParamByName('parammah2').Valu e := trim(inttostr(ComboBox1.ItemIndex+1));
ADOQuery1.ExecSQL;
ADOQuery1.Open;
ADOQuery1.Active:=true;
من يه تكه كد ارم كه يه select رو روي ديتابيس زدم. ولي يه مشكلي كه دارم اينه كه وقتي برنامه رو اجرا ميكنم وقتي مي خوات اين كد ها رو اجرا كنه ميگه مثلا "paramroz1 not found" در صورتي كه اين پارامتر در دستورات استفاده شده.
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT SUM(jam) AS jam, meghdar, GROUPOD_NM');
ADOQuery1.SQL.Add('FROM (SELECT S_GROUPOD.GROUPOD_NM, SUM(S_DTL_FCT.QUANTITY * S_ODS.vazn / 1000) AS jam, (Ahdaf.meghdar_to / 30 * :paramrooz) AS meghdar');
ADOQuery1.SQL.Add(' FROM S_HED_FCT INNER JOIN');
ADOQuery1.SQL.Add(' S_DTL_FCT ON S_HED_FCT.id = S_DTL_FCT.id INNER JOIN');
ADOQuery1.SQL.Add(' S_ODS ON S_ODS.OD_CD = S_DTL_FCT.OD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_GROUPOD ON S_GROUPOD.GROUPOD_CD = S_ODS.GROUPOD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_Markaz ON S_Markaz.Markaz_CD = S_HED_FCT.MARKAZ_CD INNER JOIN');
ADOQuery1.SQL.Add(' Ahdaf ON S_GROUPOD.GROUPOD_CD = Ahdaf.mahsool_gro_cd');
ADOQuery1.SQL.Add(' WHERE (S_HED_FCT.ACC_YEAR = :paramsal11) AND ((S_HED_FCT.Stock_cd = 1) OR');
ADOQuery1.SQL.Add(' (S_HED_FCT.Stock_cd = 2) OR');
ADOQuery1.SQL.Add(' (S_HED_FCT.Stock_cd = 16) OR');
ADOQuery1.SQL.Add(' (S_HED_FCT.Stock_cd = 30)) AND (S_HED_FCT.FLAG = 2) AND (S_HED_FCT.FACT_DATE >= :paramdate11) AND');
ADOQuery1.SQL.Add(' (S_HED_FCT.FACT_DATE <= :paramdate12) AND (S_Markaz.Markaz_CD = :paramgoroh11) AND (Ahdaf.markaz_cd = :paramgoroh12) AND (Ahdaf.sal = :paramsal12) AND');
ADOQuery1.SQL.Add(' (Ahdaf.mah = :parammah1)');
ADOQuery1.SQL.Add(' GROUP BY S_GROUPOD.GROUPOD_NM, Ahdaf.meghdar_to');
ADOQuery1.SQL.Add(' UNION');
ADOQuery1.SQL.Add(' SELECT *');
ADOQuery1.SQL.Add(' FROM OPENQUERY(TADBIR_ASAK,');
ADOQuery1.SQL.Add(' ''SELECT S_GROUPOD.GROUPOD_NM, SUM(S_DTL_FCT.QUANTITY * S_ODS.vazn / 1000) AS jam,');
ADOQuery1.SQL.Add(' (Ahdaf.meghdar_to / 30 * :paramroz1) AS meghdar');
ADOQuery1.SQL.Add(' FROM S_HED_FCT INNER JOIN');
ADOQuery1.SQL.Add(' S_DTL_FCT ON S_HED_FCT.id = S_DTL_FCT.id INNER JOIN');
ADOQuery1.SQL.Add(' S_ODS ON S_ODS.OD_CD = S_DTL_FCT.OD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_GROUPOD ON S_GROUPOD.GROUPOD_CD = S_ODS.GROUPOD_CD INNER JOIN');
ADOQuery1.SQL.Add(' S_Markaz ON S_Markaz.Markaz_CD = S_HED_FCT.MARKAZ_CD INNER JOIN');
ADOQuery1.SQL.Add(' Ahdaf ON S_GROUPOD.GROUPOD_CD = Ahdaf.mahsool_gro_cd');
ADOQuery1.SQL.Add(' WHERE (S_HED_FCT.ACC_YEAR = :paramsal21) AND (S_HED_FCT.Stock_cd = 9) AND (S_HED_FCT.FLAG = 2)');
ADOQuery1.SQL.Add(' AND (S_HED_FCT.FACT_DATE >= :paramdate21) AND (S_HED_FCT.FACT_DATE <= :paramdate22) AND');
ADOQuery1.SQL.Add(' (S_Markaz.Markaz_CD = :paramgoroh21) AND (Ahdaf.markaz_cd = :paramgoroh22) AND (Ahdaf.sal = :paramsal22) AND');
ADOQuery1.SQL.Add(' (Ahdaf.mah = :parammah2)');
ADOQuery1.SQL.Add(' GROUP BY S_GROUPOD.GROUPOD_NM, Ahdaf.meghdar_to'')');
ADOQuery1.SQL.Add(' Rowset_1) cte1');
ADOQuery1.SQL.Add('GROUP BY meghdar, GROUPOD_NM');
ADOQuery1.Parameters.ParamByName('paramrooz').Valu e := trim(ComboBox3.Text);
ADOQuery1.Parameters.ParamByName('paramsal11').Val ue := trim('13'+ComboBox2.Text);
ADOQuery1.Parameters.ParamByName('paramsal12').Val ue := trim('13'+ComboBox2.Text);
if ComboBox1.ItemIndex+1>9 then
begin
ADOQuery1.Parameters.ParamByName('paramdate11').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate12').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
if ComboBox1.ItemIndex+1<10 then
begin
ADOQuery1.Parameters.ParamByName('paramdate11').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate12').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
ADOQuery1.Parameters.ParamByName('paramgoroh11').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('paramgoroh12').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('parammah1').Valu e := trim(inttostr(ComboBox1.ItemIndex+1));
ADOQuery1.Parameters.ParamByName('paramroz1').Valu e := trim(ComboBox3.Text);
ADOQuery1.Parameters.ParamByName('paramsal21').Val ue := trim('13'+ComboBox2.Text);
if ComboBox1.ItemIndex+1>9 then
begin
ADOQuery1.Parameters.ParamByName('paramdate21').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate22').Va lue := trim(ComboBox2.Text+'/'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
if ComboBox1.ItemIndex+1<10 then
begin
ADOQuery1.Parameters.ParamByName('paramdate21').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/01');
ADOQuery1.Parameters.ParamByName('paramdate22').Va lue := trim(ComboBox2.Text+'/0'+inttostr(ComboBox1.ItemIndex+1)+'/'+ComboBox3.Text);
end;
ADOQuery1.Parameters.ParamByName('paramgoroh21').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('paramgoroh22').V alue := dbedit4.Text;
ADOQuery1.Parameters.ParamByName('paramsal22').Val ue := trim('13'+ComboBox2.Text);
ADOQuery1.Parameters.ParamByName('parammah2').Valu e := trim(inttostr(ComboBox1.ItemIndex+1));
ADOQuery1.ExecSQL;
ADOQuery1.Open;
ADOQuery1.Active:=true;