fazel-d
شنبه 22 فروردین 1394, 11:45 صبح
داخل کد برنامه یکسری عملیات insert در بانک اکسس دارم. بعد از این کد ها، دستورات مربوط به گزارش گیری اجرا می شن.
منتها فکر می کنم که دستورات مربوط به گزارش به صورت ذاتی تووی یه thread جداگانه اجرا میشه. چرا که هنوز کار عملیات درج تمام نشده و درج هنوز commit نشده دستورات گزارش گیری اجرا میشن و در گزارش همه اطلاعات درج شده را نشون نمی ده.
در ضمن گزارش بر اساس اطلاعاتی انجام میشه که اخیرا دارن درج میشن
s:= 'INSERT INTO TBWOR VALUES (:DSW_ID , :DSW_YY , :DSW_MM , :DSW_LISTNO '+ ', :DSW_ID1 , :DSW_FNAME , :DSW_LNAME , :DSW_DNAME , :DSW_IDNO , :DSW_IDPLC , :DSW_IDATE '+
', :DSW_BDATE , :DSW_SEX , :DSW_NAT , :DSW_OCP , :DSW_SDATE , :DSW_EDATE '+
', :DSW_DD , :DSW_ROOZ , :DSW_MAH , :DSW_MAZ , :DSW_MASH , :DSW_TOTL , :DSW_BIME , :DSW_PRATE , :DSW_JOB , :PER_NATCOD)';
//DisableControls;
with dbGridList.DataSource.DataSet do
begin
First;
while not (Eof) do
begin
qryTemp.SQL.Clear;
qryTemp.SQL.Add(s);
qryTemp.Parameters.ParamByName('DSW_ID').Value := txtCompCod.Text;
qryTemp.Parameters.ParamByName('DSW_YY').Value := Copy(txtYear.Text,3,2);
qryTemp.Parameters.ParamByName('DSW_MM').Value := txtMonth.Text;
qryTemp.Parameters.ParamByName('DSW_LISTNO').Value := txtListNo.Text;
qryTemp.Parameters.ParamByName('DSW_ID1').Value := FieldByName('insid').Value;
qryTemp.Parameters.ParamByName('DSW_FNAME').Value := dbGridList.DataSource.DataSet.FieldByName('nam').V alue;
qryTemp.Parameters.ParamByName('DSW_LNAME').Value := dbGridList.DataSource.DataSet.FieldByName('family' ).Value;
qryTemp.Parameters.ParamByName('DSW_DNAME').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_IDNO').Value := dbGridList.DataSource.DataSet.FieldByName('idcard' ).Value;
qryTemp.Parameters.ParamByName('DSW_IDPLC').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_IDATE').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_BDATE').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_SEX').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_NAT').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_OCP').Value := dbGridList.DataSource.DataSet.FieldByName('jobtitl e').Value;
qryTemp.Parameters.ParamByName('DSW_SDATE').Value := Copy(dbGridList.DataSource.DataSet.FieldByName('st artdate').Value , 3 ,8);
qryTemp.Parameters.ParamByName('DSW_EDATE').Value := Copy(dbGridList.DataSource.DataSet.FieldByName('en ddate').Value , 3 , 8);
qryTemp.Parameters.ParamByName('DSW_DD').Value := dbGridList.DataSource.DataSet.FieldByName('days'). Value;
qryTemp.Parameters.ParamByName('DSW_ROOZ').Value := dbGridList.DataSource.DataSet.FieldByName('rozanep ay').Value;
qryTemp.Parameters.ParamByName('DSW_MAH').Value := dbGridList.DataSource.DataSet.FieldByName('mahanep ay').Value;
qryTemp.Parameters.ParamByName('DSW_MAZ').Value := dbGridList.DataSource.DataSet.FieldByName('mazaya' ).Value;
qryTemp.Parameters.ParamByName('DSW_MASH').Value := dbGridList.DataSource.DataSet.FieldByName('totalma sh').Value;
qryTemp.Parameters.ParamByName('DSW_TOTL').Value := dbGridList.DataSource.DataSet.FieldByName('totalma sh').Value;
qryTemp.Parameters.ParamByName('DSW_BIME').Value := dbGridList.DataSource.DataSet.FieldByName('InsCont rib').Value;
qryTemp.Parameters.ParamByName('DSW_PRATE').Value := '27';
qryTemp.Parameters.ParamByName('DSW_JOB').Value := dbGridList.DataSource.DataSet.FieldByName('jobcod' ).Value;
qryTemp.Parameters.ParamByName('PER_NATCOD').Value := dbGridList.DataSource.DataSet.FieldByName('natcod' ).Value;
numRowAffected := 0;
if qryTemp.ExecSQL = 1 then;
Next;
end;
end;
و کد گزارش گیری
with frxReport do begin
LoadFromFile(GetCurrentDir + '\Reports\RPT.fr3',True);
frConnection := FindComponent('frConnection') as TfrxADODatabase;
frConnection.DatabaseName := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source='+
GetCurrentDir + '\Database\DBpardisk.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";' +
'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;' +
'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";' +
'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
if not frConnection.Connected then
frConnection.Connected := True;
ShowReport(True);
end;
منتها فکر می کنم که دستورات مربوط به گزارش به صورت ذاتی تووی یه thread جداگانه اجرا میشه. چرا که هنوز کار عملیات درج تمام نشده و درج هنوز commit نشده دستورات گزارش گیری اجرا میشن و در گزارش همه اطلاعات درج شده را نشون نمی ده.
در ضمن گزارش بر اساس اطلاعاتی انجام میشه که اخیرا دارن درج میشن
s:= 'INSERT INTO TBWOR VALUES (:DSW_ID , :DSW_YY , :DSW_MM , :DSW_LISTNO '+ ', :DSW_ID1 , :DSW_FNAME , :DSW_LNAME , :DSW_DNAME , :DSW_IDNO , :DSW_IDPLC , :DSW_IDATE '+
', :DSW_BDATE , :DSW_SEX , :DSW_NAT , :DSW_OCP , :DSW_SDATE , :DSW_EDATE '+
', :DSW_DD , :DSW_ROOZ , :DSW_MAH , :DSW_MAZ , :DSW_MASH , :DSW_TOTL , :DSW_BIME , :DSW_PRATE , :DSW_JOB , :PER_NATCOD)';
//DisableControls;
with dbGridList.DataSource.DataSet do
begin
First;
while not (Eof) do
begin
qryTemp.SQL.Clear;
qryTemp.SQL.Add(s);
qryTemp.Parameters.ParamByName('DSW_ID').Value := txtCompCod.Text;
qryTemp.Parameters.ParamByName('DSW_YY').Value := Copy(txtYear.Text,3,2);
qryTemp.Parameters.ParamByName('DSW_MM').Value := txtMonth.Text;
qryTemp.Parameters.ParamByName('DSW_LISTNO').Value := txtListNo.Text;
qryTemp.Parameters.ParamByName('DSW_ID1').Value := FieldByName('insid').Value;
qryTemp.Parameters.ParamByName('DSW_FNAME').Value := dbGridList.DataSource.DataSet.FieldByName('nam').V alue;
qryTemp.Parameters.ParamByName('DSW_LNAME').Value := dbGridList.DataSource.DataSet.FieldByName('family' ).Value;
qryTemp.Parameters.ParamByName('DSW_DNAME').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_IDNO').Value := dbGridList.DataSource.DataSet.FieldByName('idcard' ).Value;
qryTemp.Parameters.ParamByName('DSW_IDPLC').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_IDATE').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_BDATE').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_SEX').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_NAT').Value := EmptyStr;
qryTemp.Parameters.ParamByName('DSW_OCP').Value := dbGridList.DataSource.DataSet.FieldByName('jobtitl e').Value;
qryTemp.Parameters.ParamByName('DSW_SDATE').Value := Copy(dbGridList.DataSource.DataSet.FieldByName('st artdate').Value , 3 ,8);
qryTemp.Parameters.ParamByName('DSW_EDATE').Value := Copy(dbGridList.DataSource.DataSet.FieldByName('en ddate').Value , 3 , 8);
qryTemp.Parameters.ParamByName('DSW_DD').Value := dbGridList.DataSource.DataSet.FieldByName('days'). Value;
qryTemp.Parameters.ParamByName('DSW_ROOZ').Value := dbGridList.DataSource.DataSet.FieldByName('rozanep ay').Value;
qryTemp.Parameters.ParamByName('DSW_MAH').Value := dbGridList.DataSource.DataSet.FieldByName('mahanep ay').Value;
qryTemp.Parameters.ParamByName('DSW_MAZ').Value := dbGridList.DataSource.DataSet.FieldByName('mazaya' ).Value;
qryTemp.Parameters.ParamByName('DSW_MASH').Value := dbGridList.DataSource.DataSet.FieldByName('totalma sh').Value;
qryTemp.Parameters.ParamByName('DSW_TOTL').Value := dbGridList.DataSource.DataSet.FieldByName('totalma sh').Value;
qryTemp.Parameters.ParamByName('DSW_BIME').Value := dbGridList.DataSource.DataSet.FieldByName('InsCont rib').Value;
qryTemp.Parameters.ParamByName('DSW_PRATE').Value := '27';
qryTemp.Parameters.ParamByName('DSW_JOB').Value := dbGridList.DataSource.DataSet.FieldByName('jobcod' ).Value;
qryTemp.Parameters.ParamByName('PER_NATCOD').Value := dbGridList.DataSource.DataSet.FieldByName('natcod' ).Value;
numRowAffected := 0;
if qryTemp.ExecSQL = 1 then;
Next;
end;
end;
و کد گزارش گیری
with frxReport do begin
LoadFromFile(GetCurrentDir + '\Reports\RPT.fr3',True);
frConnection := FindComponent('frConnection') as TfrxADODatabase;
frConnection.DatabaseName := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source='+
GetCurrentDir + '\Database\DBpardisk.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";' +
'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;' +
'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";' +
'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
if not frConnection.Connected then
frConnection.Connected := True;
ShowReport(True);
end;