PDA

View Full Version : سوال: ارسال دو یا چند تا DataSet یا DataTable به یک stimul report



Mcraft
دوشنبه 12 اسفند 1392, 15:59 عصر
سلام به همه ی اساتید.
آقا چطور میشه دو یا چند تا DataSet یا DataTable رو به یک report پاس داد؟
میخوام از هر کدوم یک سری اطلاعات رو استخراج کنم.
مثلا مشخصات کاربر از یک dataTable و پرداخت های او از DataTable دیگری استخراج و به استیمول فرستاده بشه.
ممنون میشم جواب بدید.

Behnam6670
دوشنبه 12 اسفند 1392, 20:00 عصر
دوتا یا هر تعداد که میخوای دیکشنری تو استیمول بساز و دقیقا به همون تعداد دیتا ست یا دیتا تیبل تو پروژت بساز بعد اونارو بفرست به استیمول

NasimBamdad
دوشنبه 12 اسفند 1392, 22:02 عصر
نمونه کد .



cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = @"SELECT dbo.patients.id, dbo.patients.fname + ' ' + dbo.patients.lname AS Full_Name, dbo.daroo_usage.numberz, dbo.daroo_type.azad, dbo.daroo_type.daroo_name, dbo.daroo_usage.numberz * daroo_type.azad AS Cost_Daroo_AZAD
FROM dbo.patients INNER JOIN
dbo.daroo_usage ON dbo.patients.id = dbo.daroo_usage.patientid INNER JOIN
dbo.daroo_type ON dbo.daroo_usage.darooid = dbo.daroo_type.id WHERE dbo.patients.id ='" +
textBox1.Text + "'";
SqlDataAdapter da0 = new SqlDataAdapter(cmd);
DataTable dt0 = new DataTable();
da0.Fill(dt0);
cnn.Close();


cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = @"SELECT dbo.tajhiz_type.tajhiz_name, dbo.tajhiz_usage.numberz , dbo.tajhiz_type.azad, dbo.tajhiz_usage.numberz * dbo.tajhiz_type.azad AS Cost_Tajhiz_Azad
FROM dbo.patients INNER JOIN
dbo.tajhiz_usage ON dbo.patients.id = dbo.tajhiz_usage.patientid INNER JOIN
dbo.tajhiz_type ON dbo.tajhiz_usage.tajid = dbo.tajhiz_type.id WHERE dbo.patients.id ='" +
textBox1.Text + "'";
SqlDataAdapter da1 = new SqlDataAdapter(cmd);
DataTable dt1 = new DataTable();
da1.Fill(dt1);
cnn.Close();


string path = "Reports\\List_Daroo_Taj_Azad.mrt";
stiReport1.Load(path);
stiReport1.ResetRenderedState();
DataSet ds = new DataSet();
dt0.TableName = "DS1";
dt1.TableName = "DS2";
ds.Tables.Add(dt0);
ds.Tables.Add(dt1);
stiReport1.Dictionary.Clear();
stiReport1.RegData(ds);
stiReport1.Dictionary.Synchronize();
stiReport1.Show();

Mcraft
سه شنبه 13 اسفند 1392, 09:33 صبح
ممنون از کدت
ولی یک مشکل :
زمانی که DataSet با یک DataTable به Report ارسال میکنم کار میکنه . اما وقتی 2 تا DataTable به DataSet ام Add میکنم صفحه Report فقط با Header خالی نمایان میشه.
لازم بگم تو Report هم 2 تا Table ساختم و هر دو رو توی صفحه Design قرار دادم. ولی اطلاعات رو نمایش نمیده...

NasimBamdad
سه شنبه 13 اسفند 1392, 09:51 صبح
نوع DataSource در گزارش رو حتما از نوع DataSet / DataTable قرار بدید . من اون روشی نوشتم رو امتحان کردم

خالی بودن به دلیل عدم تطابق اسم ها می باشد . یعنی اسم DataSet / DataTable ها در سی شارپ و گزارش یکی نیست

مثلا من اسم DataSource ام در گزارش رو DS1 و DS2 قرار دادم و همون در کد نویسی هست

اسم فیلد های در SQL و کوری ، با اسمشان در گزارش یکی هست . این ها رو چک کنید

Behnam6670
سه شنبه 13 اسفند 1392, 10:37 صبح
stiReport1.Load("reportName.mrt");
stiReport1.Dictionary.Clear();
stiReport1.RegData(ds);
stiReport1.Dictionary.Synchronize();
stiReport1.Compile();
stiReport1.Show();

Behnam6670
سه شنبه 13 اسفند 1392, 10:39 صبح
دیتا ستی که تو سی شارپ میسازی با دیتا ستی که تو استیمول میسازی هم اسم انتخاب کن.هر تعداد که بود اسماشونو یکی در نظر بگیر

aminbrleevb
سه شنبه 13 اسفند 1392, 12:32 عصر
با سلام
ممنون میشم به این سوال هم که مشابه همینه جواب بدین
http://barnamenevis.org/showthread.php?442806-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%86%D8%AA%DB%8C%D8%AC%D9%87-%DB%8C%DA%A9-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D8%A8%D9%87-%D8%A7%D8%B3%D8%AA%DB%8C%D9%85%D9%88%D9%84-%D8%B3%D8%A7%D9%81%D8%AA&p=1984527&posted=1#post1984527

hosseinhaji
یک شنبه 15 تیر 1393, 16:47 عصر
یا سلام منم مشکلم تقریبا مشابهه. من یک برنامه با vb.net نوشتم. گزارش رو هم تو استیمول ساختم. ولی هر وقت دیتاتیبل به گزارش ارسال میکنم هیچی نشون میده و فقط یه صفحه سفید با عناوین فیلدها میآد. به نظر شما کاری تو استیمول باید انجام بدم؟