View Full Version : حرفه ای: نمایش مقادیر دو جدول در گزارش
crying sphere
پنج شنبه 29 مهر 1389, 12:22 عصر
من می خوام گزارشم رو جوری تهیه کنم که مقادیر دو تا جدولو زیر هم نشون بده .
مثلا فرض کنید من دو تا جدول دارم یکی جدول کالاها و دیگری جدول مجموع قیمت هرکدام از کالاها. حالا من می خوام مقادیر جدول کالاها در بالای گزارش و مقادیر جدول مجموع قیمت هرکدام از کالاها در پایین گزارش نشان داده شود.
اگه بشه محتویات توی دوتا دیتاگرید روی فرم رو به گزارش به طریقه بالا ارسال کنه بهتره.
کسی میتونه کمکم کنه؟
crying sphere
شنبه 01 آبان 1389, 14:33 عصر
فكر كنم مايكروسافت براي مشكل من راه حلي انديشيده باشه!!!! :عصبانی++:
واقعا كسي نيست راهنمايي كنه؟ :متعجب:
crying sphere
پنج شنبه 27 آبان 1389, 10:22 صبح
دوستان و برنامه نويسان گرامي لطفا كمك كنن. نه اينجا و نه تالار ابزارهاي گزارش گيري توي اين تاپيك (http://barnamenevis.org/forum/showthread.php?t=259365) كسي راهنماييم نكرد.
من مي خوام دوتا جدولو توي يك گزارش نمايش بدم. دقت كنيد كه نمي خوام Join كنم. تصوير رو نگاه كنين، جدولام مي خوام مثل اين نمايش داده بشه:
لطفا راهنمايي كنيد.
DoDoklak
پنج شنبه 27 آبان 1389, 15:35 عصر
منظور شما مثل تصویر زیر است
(اطلاعات این فاکتور از 4 جدول گرفته شده)
http://up.p30day.com/images/09149255630642256885.jpg
mc_laren
پنج شنبه 27 آبان 1389, 21:00 عصر
اطلاعات دو تا جدولت رو درون یک دیتاست بریز و توجه کن که اسم جدول هات در دیتاست با اسم جدول ها در گزارشت یک باشه و اون دیتاست رو به عنوان دیتا سورس گزارشت تحویل بده
Hossein Bazyan
پنج شنبه 27 آبان 1389, 21:36 عصر
اطلاعات دو تا جدولت رو درون یک دیتاست بریز و توجه کن که اسم جدول هات در دیتاست با اسم جدول ها در گزارشت یک باشه و اون دیتاست رو به عنوان دیتا سورس گزارشت تحویل بده
سلام
من همیشه اینکارو میکنم
amirsadeghi
شنبه 29 آبان 1389, 02:13 صبح
اصلا با sql میتونی خیلی راحت محتویات دو تا query رو با هم یه جا نشون بدی...
crying sphere
پنج شنبه 11 آذر 1389, 10:42 صبح
سلام
من همیشه اینکارو میکنم
خب شما دوتا دوست عزيز كه از اين روش استفاده ميكنيد به منم ياد بدين ديگه! ممنون ميشم.
من تا اين جاشو بلدم :
Dim DS As New DataSet
Dim str As String = "select * from table_kala where name_kala='medad'"
If SC.State = ConnectionState.Closed Then
SC.Open()
End If
DA.SelectCommand = New SqlCommand(SC)
DA.Fill(DS, "table_kala")
Dim CR As New CrystalReport_all()
CR.SetDataSource(DS)
Dim f As New frm_print
f.CrystalReportViewer1.ReportSource = CR
f.ShowDialog()
حالا شما هم اين كد رو كامل كنيد و جدول table_add رو هم به اون اضافه كنيد.
مانند شكل بالا اول جدول table_kala بياد و بعد زير اون جدول table_add بياد.
Hossein Bazyan
پنج شنبه 11 آذر 1389, 13:56 عصر
خب شما دوتا دوست عزيز كه از اين روش استفاده ميكنيد به منم ياد بدين ديگه! ممنون ميشم.
من تا اين جاشو بلدم :
Dim DS As New DataSet
Dim str As String = "select * from table_kala where name_kala='medad'"
If SC.State = ConnectionState.Closed Then
SC.Open()
End If
DA.SelectCommand = New SqlCommand(SC)
DA.Fill(DS, "table_kala")
Dim CR As New CrystalReport_all()
CR.SetDataSource(DS)
Dim f As New frm_print
f.CrystalReportViewer1.ReportSource = CR
f.ShowDialog()
حالا شما هم اين كد رو كامل كنيد و جدول table_add رو هم به اون اضافه كنيد.
مانند شكل بالا اول جدول table_kala بياد و بعد زير اون جدول table_add بياد.
سلام
من با کریستال کاری ندارم اما من به این شیوه عمل میکنیم
ابتدا یک DataTable میسازم که فیلدها را همانجا معرفی میکنم
Private Function CreateDataTable() As DataTable
Dim myDataTable As DataTable = New DataTable()
Dim myDataColumn As DataColumn
Try
myDataColumn = New DataColumn()
myDataColumn.DataType = Type.GetType("System.String")
myDataColumn.ColumnName = "id_m"
myDataTable.Columns.Add(myDataColumn)
myDataColumn.AllowDBNull = True
myDataColumn = New DataColumn()
myDataColumn.DataType = Type.GetType("System.String")
myDataColumn.ColumnName = "Medewerker"
myDataTable.Columns.Add(myDataColumn)
myDataColumn.AllowDBNull = True
myDataColumn = New DataColumn()
myDataColumn.DataType = Type.GetType("System.String")
myDataColumn.ColumnName = "Dag"
myDataTable.Columns.Add(myDataColumn)
myDataColumn.AllowDBNull = True
myDataColumn = New DataColumn()
myDataColumn.DataType = Type.GetType("System.String")
myDataColumn.ColumnName = "Klant"
myDataTable.Columns.Add(myDataColumn)
myDataColumn.AllowDBNull = True
myDataColumn = New DataColumn()
myDataColumn.DataType = Type.GetType("System.String")
myDataColumn.ColumnName = "OMA"
myDataTable.Columns.Add(myDataColumn)
myDataColumn.AllowDBNull = True
Catch ex As Exception
End Try
Return myDataTable
End Function
بعد به شکل زیر جدول را میسازم
Dim WeekTable1 As New DataTable
WeekTable1 = CreateDataTable()
حال برای چر کردن جدول به شکل زیر استفاده میکنم
Me.AddDataToTable(" Maandag", _klant, " m", _ureM, _med_n, WeekTable1)
اینهم تابع AddDataToTable
Private Sub AddDataToTable(ByVal _dag As String, _
ByVal _klant As String, _
ByVal _o_m_a As String, _
ByVal _uren As String, _
ByVal _med_n As String, _
ByVal myTable As DataTable)
Dim row As DataRow
row = myTable.NewRow()
Try
row("Dag") = _dag
row("Klant") = _klant
row("OMA") = _o_m_a
row("Uren") = _uren
row("Medewerker") = _med_n
myTable.Rows.Add(row)
Catch ex As Exception
End Try
End Sub
حال گرید را بایند کنید ( میتوانید سورت هم کنید)
Dim dataView1 As New DataView(WeekTable1)
dataView1.Sort = "id_m, week, dag, OMA"
Me.dgvWeek1.DataSource = dataView1
Me.dgvWeek1.DataBind()
پس :
یک دیتاتیبل بسازید
از جداول مورد نیاز فیلدها را بخوانید و به تابع فوق پمپ کنید (ارسال کنید)
دیتاست رو به گرید بایند کنید
من این کدها رو از یکی از پروژه هام کپی کردم
crying sphere
شنبه 13 آذر 1389, 16:32 عصر
من از شما دوست گرامي خيلي ممنونم:
فكر نمي كنيد كه كار را خيلي سخت كرده ايد؟ به نظر راحت تر از اين كارها باشد.
اگر ركوردها و داده ها زياد باشند پر كردن جدول سخت مي شود.
اگر كدهاي من رو دستكاري و تصحيح كنيد فكر كنم كار آسانتر باشد. آخه روش شما توش كريستال ريپورت هم نيست. به علاوه اينكه من جدولام آماده هستن و فقط كافيه كه پاسشون بدم به كريستال.
باز هم از زحمت و لطف شما بسيار ممنونم
دوستان ديگر اگر راه حل و پيشنهادي دارن دريغ نكن.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.