PDA

View Full Version : نمایش ندادن خروجی کریستال ریپورت



f_naderi
سه شنبه 31 شهریور 1388, 09:46 صبح
سلام
من می خوام با زدن دکمه ی صورتحساب از چندین جدول اطلاعات لازم استخراج بشه و در کریستال ریپورت نمایش داده بشن(داده ها با توجه به کدی که در textbox12 وارد میشه فیلتر میشن)، من وقتی که این دکمه رو میزنم در datagridveiw اطلاعات رو بدرستی نمایش میده ولی موقع باز کردن ریپورت این خطا رو میده.
cannot determine the queries necessary to get data for this report. faild to open a rowset.


DataTable dt = newDataTable();
CrystalReport1 rpt = newCrystalReport1();
int code = Convert.ToInt32(textBox12.Text);
string strsql = "select moshtari.codemoshtari,moshtari.name,bedehkari,kala .name,forosh.date,sefaresh.tedadkala from sefaresh,moshtari,kala,forosh where kala.codekala=sefaresh.codekala and sefaresh.shomarehsefaresh=forosh.shomarehsefaresh and forosh.codemoshtari=moshtari.codemoshtari and moshtari.codemoshtari=" + code;
oleDbConnection1.Open();
da1 = newOleDbDataAdapter(strsql, oleDbConnection1);
da1.Fill(dt);
oleDbConnection1.Close();
dataGridView1.DataSource = dt;
Form2 re = newForm2();
rpt.SetDataSource(dt);
re.crystalReportViewer1.ReportSource = rpt;
re.ShowDialog();

این کدها رو زیر دکمه صورتحساب می نویسم به نظر شما مشکلش چیه؟
البته فکر کنم که مشکل از این باشه که من در کد اسکیوالم دارم یک جدول میانی درست میکنم ولی داخل کریستال ریپورتم فیلدهای جداول بانکم رو اضافه میکنم (همون فیلدهایی که داخل دستور select نوشتم) پس به خاطر این نمی تونه مثلا moshtari.codemoshtari رو پیدا کنه، حالا باید چه تغییراتی رو اعمال کنم؟

explorer2
چهارشنبه 01 مهر 1388, 13:15 عصر
ببین منم این مشکل برام به وجود آمده بود وقتی اطلاعاتت تو grid نمایش داده می شه پس مشکل از دستور select نیست .شما یک datatable درست کن و اطلاعات را از dataset داخل datatable بریز و datatable را نمایش بده درست می شه.

f_naderi
چهارشنبه 01 مهر 1388, 13:41 عصر
این کار رو انجام دادم ولی بازم همون پیغام خطا رو داد.الان کدی رو هم که اینجا قرار دادم همون کد هستش (اطلاعات رو داخل دیتاتیبل ریختم)

f_naderi
چهارشنبه 01 مهر 1388, 14:02 عصر
وقتی که دیتاست رو به خاصیت setdatasource نسبت میدم اررور نمی گیره ولی اطلاعات همه ی مشتریان رو نشون میده در صورتی که من می خوام فقط اطلاعات یک شخص بخصوص رو نشون بده.

explorer2
پنج شنبه 02 مهر 1388, 12:06 عصر
ببین تو باید از view یا storeprocedour استفاده کنی
Crystal Reaport فقط از یک جدول می تونه بخونه وقتی چند تا جدول را link میدی نمی تونه بخونه برای link چند جدول در sql یا access از view یا store proceduor استفاده کن.

f_naderi
جمعه 03 مهر 1388, 15:15 عصر
بلد نیستم میشه با یک مثال برام بگید و بفرمایید که اون کدها رو کجا باید بنویسم.ممنون میشم

explorer2
یک شنبه 05 مهر 1388, 16:28 عصر
من در sql این کارو کردم
وقتی sql را باز کنی در database شما یک بخشی است به نام view که شما یک view جدید باز می کنید و جدول ها یتان را در آن قسمت Add می کنید و بعددر آنجا هر کدام از جدول هایی که می خواهی لینک دهی می آوری و بعد select را در آنجا می نویسی .
راحته خودت بری پیدا می کنی .
ولی من با access این کار را نکردم حتما" در access هم می شه table مجازی درست کرد.
یعنی با این کار شما یک table جدید درست می کنی با دستور select ایی که می نویسی.