PDA

View Full Version : سوال: انتقال اطلاعات دیتاگرید به دیتاست



pedramfj
پنج شنبه 05 اسفند 1389, 18:41 عصر
سلام
در مورد سوالم جستجو کردم ولی مطلب مفیدی پیدا نکردم.
می خواهم اطلاعات یک دیتا گرید را توسط dataset به ابزار گزارش سازی کریستال انتقال دهم با فرض اینکه کارهای زیر را انجام داده باشم:
یک dataset ساخته ام بنام dsone و به آن فیلد های مورد نظر را اضافه کردم و در محیط طراحی کریستال از آن فیلد ها استفاده کرده ام.
سوال: من یک دیتاگریدی دارم که حاوی اطلاعاتی است .چگونه دیتاست مورد نظر را با این اطلاعات مقدار دهی کنم؟
لطف می کنید اگر راهنمایی کنید...
تشکـــــــر...

ucnazard
پنج شنبه 05 اسفند 1389, 22:18 عصر
اميدوارم اين بتونه كمكتون كنه
من خودم از اين استفاده كردم ولي الان تو لود گزارش مشكل دارم
امتحان كنيد و لطفا بگيد كه شما هم همين مشكل رو داريد يا نه
البته اين تابع كارش رو درست انجام ميده


DataSet ds = newDataSet(); ds.Tables.Add("Table");DataColumn dtCol ;foreach( DataGridViewColumn col in DGV.Columns){dtCol = newDataColumn(col.HeaderText);ds.Tables["Table"].Columns.Add(dtCol);} DataRow dtRow;int countCol = DGV.Columns.Count;for (int i = 0; i < DGV.Rows.Count; i++){dtRow = ds.Tables["Table"].NewRow();for (int j = 0; j < countCol;j++ ){dtRow[j] = DGV[j, i].FormattedValue; }ds.Tables["Table"].Rows.Add(dtRow);}

ميتونين يه نگاه به اينجام (http://barnamenevis.org/showthread.php?275986-عدم-نمايش-اطلاعات-در-كريستاريپورت) بندازين

dll9095
دوشنبه 09 اسفند 1389, 14:34 عصر
behtarin kar ine ke etelaato ro az hamoon aval dakhele dataset berizid va bad az on dakhele datagrid bad be rahati mitoonid ba xml az dataset dar drystal report estefadeh konid

bad az por kardane dataset ba dastoore zir datagrid ham por mishavad
DataGridView.Datasource=ds
DataGridView.DataMember=TBName

sepas ba dastoor zir etelaat daroone xml rikhte shode va be rahati crystal report mitavan estefade kar
ds.writetoxml(path) 1

ucnazard
چهارشنبه 11 اسفند 1389, 12:01 عصر
من که اطلاعاتم رو مستقیم می نویسم تو دیتاگرید یعنی از دیتابیس نمیخونم ، از این روشی که دوستمونdll گفتن سر در نیاوردم؟؟؟؟
خودتون چطوری نوشتین؟؟

dll9095
شنبه 14 اسفند 1389, 00:57 صبح
خوب ببینید دوست من در صورتی که شما اطلاعاتتون رو مستقیم در DataGridView مینویسید باید اون رو تبدیل به یک DataSet کنید و بعد بقیه کارها البته در روشی من بالا گفتم .
میتونم کد تبدیل DataGridView به Dataset رو همین جار برات بزارم .
من برات یه کلاس گذاشتم که دارای 2 تابع است که اولی یک DataGridView رو به عنوان یک پارامتر ورودی دریافت میکنه و درنهایت Dataset رو به عنوان خروجی برمیگردونه ،دومی هم DataSet رو یک آدرس رو به عنوان ورودی دریافت میکنه و بعد میتونی از اون فایل به عنوان فایل بانک در کریستال ریپورت استفاده کنی .

Public Class ConvertDataGridViewToDataset

Public Function Convert(ByRef DV As DataGridView) As DataSet
Dim ds As New DataSet
Dim TbName As String = "temp"

ds.Tables.Add(TbName) 'Add new table in dataset

For i As Integer = 0 To DV.ColumnCount - 1 'create columns in dataset
ds.Tables(TbName).Columns.Add(DV.Columns(i).Name)
Next

For R As Integer = 0 To DV.RowCount - 1
ds.Tables(TbName).Rows.Add()
For C As Integer = 0 To DV.ColumnCount - 1
ds.Tables(TbName).Rows(R).Item(C) = DV.Item(C, R).Value
Next
Next

Return ds
End Function

Public Sub CreateXML(ByRef DS As DataSet, ByVal Path As String)
DS.WriteXml(Path)
End Sub
End Class

ucnazard
شنبه 14 اسفند 1389, 11:09 صبح
خوب این کارارو با همون کد من هم انجام میشه داد
مشکل تو نمایش اطلاعات تو کریستال که نمایش نمیده یاLoad report failed میده؟؟؟؟

dll9095
یک شنبه 15 اسفند 1389, 14:26 عصر
امیدوارم به دردت بخوره .:چشمک:
یه سورسه که کلا مثل همون چیزی که میخای رو برات نوشتم البته اگه درست فهمیده باشم :لبخند: