PDA

View Full Version : مشکل در SetDataSource



robat7
شنبه 28 فروردین 1389, 16:12 عصر
سلام
من در کریستال رپورت تازه کار هستم
یک برنامه در 2008 C#‎‎ تحت Windows نوشته ام و می خواهم با کریستال رپورت گزارش هایم را بسازم
ولی وقتی شروه به گزارش گیری می کنم پیام خطای زیر را دریافت می کنم
"The report has no tables."
جدول را نیز به گزارش اضافه کرده ام (تصویر پیوست)
لطفا راهنمایی فرمایید.
قبلا از زمانی که برای پاسخگویی صرف می نمایید سپاسگزارم


string Report_Loc_str = "";

SqlConnection RepWP_Conn_Obj = new SqlConnection(CP_Con_str);

SqlDataAdapter RepWP_dAdapter = new SqlDataAdapter(

"SELECT rq_id, rq_dt FROM rq_hdr WHERE rq_id LIKE '" + REQ_str + "'", RepWP_Conn_Obj);

DataSet RepWP_dSet_Obj = new DataSet();

RepWP_dSet_Obj.Clear();

RepWP_Conn_Obj.Open();

RepWP_dAdapter.Fill(RepWP_dSet_Obj, "rq_hdr");

RepWP_Conn_Obj.Close();

// Return report name

RepWP_Conn_Obj = new SqlConnection(Int_Con_str);

RepWP_dAdapter = new SqlDataAdapter(

"SELECT * FROM TblReports WHERE Rep_code = 1 ", RepWP_Conn_Obj);

RepWP_Conn_Obj.Open();

RepWP_dAdapter.Fill(RepWP_dSet_Obj, "TblReports");

RepWP_Conn_Obj.Close();

// ================================================== =====================

// Connection Setting

ClsUpdateAuxiliaryTable.ClsCP rpt_obj = new ClsUpdateAuxiliaryTable.ClsCP();

rpt_obj.ReaddbData(Int_Con_str);

Report_Loc_str = rpt_obj.ReportLocation;

ConnectionInfo ConInfo = new ConnectionInfo();

ConInfo.ServerName = rpt_obj.ServerName.Trim();

ConInfo.DatabaseName = rpt_obj.DatbaseName;

ConInfo.UserID = rpt_obj.Username;

ConInfo.Password = rpt_obj.Password;


// ================================================== =====================

if (Report_Loc_str.Substring(Report_Loc_str.Length - 1, 1) != "\\")

Report_Loc_str = Report_Loc_str + "\\";

ReportDocument Report_with_Price = new ReportDocument();

Report_with_Price.Load(Report_Loc_str +

RepWP_dSet_Obj.Tables["TblReports"].Rows[0]["ReportName"]);


Report_with_Price.SetDataSource(RepWP_dSet_Obj.Tab les["rq_hdr"]); // Error Will happen HERE

crRepViewer.ReportSource = Report_with_Price;

foreach (CrystalDecisions.CrystalReports.Engine.Table table in Report_with_Price.Database.Tables)

{

TableLogOnInfo tableLogOnInfo = table.LogOnInfo;

tableLogOnInfo.ConnectionInfo = ConInfo;

table.ApplyLogOnInfo(tableLogOnInfo);

}

RepWP_dSet_Obj = null; RepWP_dAdapter = null; RepWP_Conn_Obj = null;

crRepViewer.ReportSource = Report_with_Price;

crRepViewer.Dock = DockStyle.Fill;

crRepViewer.Show();

crRepViewer.Refresh();

sara.f
شنبه 28 فروردین 1389, 23:50 عصر
سلام
1. شما فیلدهای جدولتون را در قسمت Details قرار دارید، درسته؟
2. فعلا اصلا کار به کد نداریم، میخوام بدونم در حالتی که main report preview را می زنید، آیا رکوردهاتون نمایش داده میشه یا خیر؟ اگر خطا میده، خطاش چیه؟

robat7
یک شنبه 29 فروردین 1389, 01:48 صبح
سلام
از اینکه پرسش من را بررسی نمودید واقعا ممنونم
در پاسخ باید عرض کنم گزارش براحتی کار می کند.فیلد ها در Report Header, Details قرار دارند.
نمونه خروجی و پیام خطای برنامه در هنگام اجرا ( مقادیر داده ها در Watch نمایش داده شده اند) را پیوست نموده ام
باز هم ممنونم

sara.f
یک شنبه 29 فروردین 1389, 10:51 صبح
من پیشنهاد می کنم از دوتا dataset جداگانه برای پر کردن جدول های TblReports و rq_hdr استفاده کن،یعنی دوتا dataset تعریف کن. ببین بازم خطا میده؟ و چه خطایی؟

robat7
یک شنبه 29 فروردین 1389, 16:07 عصر
سلام
هیچ تغییری ایجاد نشد
تصویر را پیوست نموده ام
راستی به خط آخر watch توجه کن
Report_with_Price.Database.Tables.Count=0 است این مقدار منطقی است؟

mn_zandy63
یک شنبه 29 فروردین 1389, 21:27 عصر
سلام دوست من،
این ReportLocation مقدارش چیه؟
به عبارتی گزارشت رو داری از کجا Load میکنی، این گزارشی که نشون دادی سه تا جدول داره، همونه که داره از اون آدرس Load میشه؟

robat7
یک شنبه 29 فروردین 1389, 23:46 عصر
سلام
با تشکر از شما reportlocation مسیری است که قصد دارم گزارش هایم را در آنجا ذخیره نمایم و برروی سرور قرار دارد و گزارش از آنجا Load می شود

\\Servername\Folder1\DeveloperAssemblies\Reports (file://\\Servername\Folder1\DeveloperAssemblies\Reports)

mn_zandy63
دوشنبه 30 فروردین 1389, 00:56 صبح
سلام دوست من،
خب لطف کن و همون فایل گزارش رو ، از اون آدرس که برنامه داره Load میکنه، بردار و بذار اینجا.
شاید متوجه ایرادش شدیم.
موفق باشی

robat7
دوشنبه 30 فروردین 1389, 04:48 صبح
از پی گیری شما واقعا ممنونم

mn_zandy63
دوشنبه 30 فروردین 1389, 16:07 عصر
سلام دوست من،
فایل گزارشی که فرستادی، یک گزارش خالی خالیه.
فایل گزارشی که طراحی میکنی رو ببین کجا ذخیره اش کردی، اونو بردار و جایگزین این فایل روی سرورت کن.
موفق باشی.

robat7
دوشنبه 30 فروردین 1389, 19:11 عصر
سلام
ممنون از پاسخ شما و همانطور كه قبلا عرض كردم اين نخستين پروژه من با كريستال رپورت است.
من رپورت را از :N باز مي كنم ولي وقتي Properties را چك مي كنم مسير رپورت بر روي :D است
چكار بايد بكنم؟

robat7
دوشنبه 30 فروردین 1389, 19:16 عصر
سلام
ممنون از پاسخ شما. همانطور كه قبلا عرض كردم اين نخستين پروژه من با كريستال رپورت است
مطابق راهنمايي شما گزارش را در :N كپي كردم ولي وقتي آنرا از مسير Add\Existing Item به پروژه اضافه مي نمايم مسير گزارش در برنامه ...\:D مي شود
چكار بايد بكنم؟

robat7
دوشنبه 30 فروردین 1389, 19:55 عصر
با سلام مجدد
و تشكر از راهنمايي شماو به نظر مي آيد گزارش كار مي كند
اگر باز مشكل داشتم بر مي گردم

خيلي خيلي ممنون

sara.f
دوشنبه 30 فروردین 1389, 21:32 عصر
با سلام مجدد
و تشكر از راهنمايي شماو به نظر مي آيد گزارش كار مي كند
اگر باز مشكل داشتم بر مي گردم

خيلي خيلي ممنون

کار می کنه؟ چطوری؟ یعنی خود به خود درست شد و شروع به کار کرد؟ خب بگید چیکار کردید که درست شد تا این تاپیک به یه نتیجه ای برسه حداقل.