PDA

View Full Version : مشکل در گزارش گیری با FastReport(دوستان لطفا کمک !)



rayangostar_co
دوشنبه 06 خرداد 1392, 08:15 صبح
با سلام خدمت دوستان و اساتید محترم

بنده یه پروسجر تو sql نوشتم که در واقع خروجیش برای تهیه گزارش برناممه -
این پروسجر چند تا جدول برمی گردونه که واسه نشون دادنشون تو گزارشم تو دلفی از recordset استفاده کردم.
درست هم کار می کنه و خروجیمو میگیرم. منتها.................
وقتی یه گزارش بر اساس یه فیلدی یا هر چیزی که می گیرم و پروسجرمو اجرا می کنم واسه گزارش های بعدیم همون اطلاعات گزارش قبلیم میاد و من باید هر دفه حتما از برنامه کاملا خارج بشم تا بتونم گزارش بروز شدمو بگیرم. از دوستان تقاضای بررسی و رفع مشکلمو دارم- با تشکر فراوان

کد استفاده جهت اجرای گزارش و نشون دادنشو در زیر می تونید ببینید.


objSQL := Tsqlmanager.Create(DM1.GetConnectionString);
s := TMemoryStream.Create;
adoProcedure := TADOStoredProc.Create(nil);
rpt := TfrxReport.Create(nil);
frxDbDs1 := TfrxDBDataset.Create(nil);
frxDbDs2 := TfrxDBDataset.Create(nil);
frxDbDs3 := TfrxDBDataset.Create(nil);
frxDbDs4 := TfrxDBDataset.Create(nil);
frxDbDs5 := TfrxDBDataset.Create(nil);
frxDbDs6 := TfrxDBDataset.Create(nil);
ds1 := TADODataSet.Create(nil);
ds2 := TADODataSet.Create(nil);
ds3 := TADODataSet.Create(nil);
ds4 := TADODataSet.Create(nil);
ds5 := TADODataSet.Create(nil);
ds6 := TADODataSet.Create(nil);
path := Copy(shahr_path, 0, pos('MessagePic', shahr_path) - 3);

with adoProcedure do
begin
try
ExecuteOptions := [];
Connection := DM1.ADOC1;
ProcedureName := 'Gozaresh_Info_Melk';
Parameters.CreateParameter('@shop', ftInteger, pdInput, 4, Shop);
Parameters.CreateParameter('@shoDarkhast', ftInteger, pdInput, 4, shod);
ExecProc;
Open;
except
end;

try
rpt.LoadFromFile(path + '\reports\InfoMelk.fr3', True);
except
end;
ds1.Recordset := adoProcedure.Recordset;
ds2.Recordset := adoProcedure.NextRecordset(X);
ds3.Recordset := adoProcedure.NextRecordset(X);
ds4.Recordset := adoProcedure.NextRecordset(X);
ds5.Recordset := adoProcedure.NextRecordset(X);
ds6.Recordset := adoProcedure.NextRecordset(X);
frxDbDs1.DataSet := ds1;
frxDbDs2.DataSet := ds2;
frxDbDs3.DataSet := ds3;
frxDbDs4.DataSet := ds4;

frxDbDs5.DataSet := ds5;
frxDbDs6.DataSet := ds6;

frxDbDs1.UserName := 'frxDBInfoMelk1';
frxDbDs2.UserName := 'frxDBInfoMelk2';
frxDbDs3.UserName := 'frxDBInfoMelk3';
frxDbDs4.UserName := 'frxDBInfoMelk4';
frxDbDs5.UserName := 'frxDBInfoMelk5';
frxDbDs6.UserName := 'frxDBInfoMelk6';
rpt.DataSets.Clear;
rpt.DataSets.Add(frxDbDs1);
rpt.DataSets.Add(frxDbDs2);
rpt.DataSets.Add(frxDbDs3);
rpt.DataSets.Add(frxDbDs4);
rpt.DataSets.Add(frxDbDs5);
rpt.DataSets.Add(frxDbDs6);

try
pic := TfrxPictureView(rpt.FindObject('kroki'));
pic.Picture.LoadFromFile('e:\Jpeg\' + Shop + '.jpeg');
except
on e: Exception do
begin
ShowMessage('فایل کروکی یافت نشد');
end;
end;

with frxDbDs6.DataSet do
begin
if frxDbDs6.DataSet.RecordCount > 0 then
begin
Mt := TfrxMasterData(rpt.FindObject('Md1'));
Mt.Visible := True;
end;
end;

// {
ds := objSQL.select(Tprocedure.select_all, 'tarifha');
if ds.DataSet.RecordCount > 0 then
begin
try
TfrxMemoView(rpt.FindObject('shahrdari')).Text :=
ds.DataSet.FieldByName('companyname').AsString;
if ds.DataSet.FieldByName('logo').AsString <> '' then
begin
TBlobField(ds.DataSet.FieldByName('logo')).SaveToS tream(s);
s.Position := 0;
TfrxPictureView(rpt.FindObject('logo')).LoadFromSt ream(s);
end;
finally
s.Free;
objSQL.Free;
end;
end;