-
Crystal Report و مشکل
من می خوام رکوردایی که توی GridView دارم رو فقط ازشون Report بگیرم
و از بقیه نگیرم
نمی دونم چرا از کد زیر خطا می گیره موقع Add کردن Row به جدول
خطا :
This row already belongs to another table.
کد:
Dim repFrm As ReportFrm = New ReportFrm()
Dim crystal As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim table As New Dset.StudentDataTable
For Each row As System.Windows.Forms.DataGridViewRow In Grid.Rows
Dim drow As DataRow = table.NewStudentRow()
drow = Dset.Student.Rows.Find(Double.Parse(row.Cells(0).Value.ToString()))
table.Rows.Add(drow)
Next
crystal.Load(Environment.CurrentDirectory + "\\MyReport.rpt")
Dim tbl As DataTable = table
crystal.SetDataSource(tbl)
repFrm.CRviewer.ReportSource = crystal
repFrm.Show()
-
سلام
شما نمیتوانید سطرهایی که متعلق به یک DataTable هستند را به DataTable دیگری Add کنید.
یا باید آنها را از DataTable اولی حذف کنید و یا کپی از ان را اضافه کنید ...
=====
کدی هم که نوشتید اصلاً جالب نیست، از همه بدتر دستور اولی که drow را پر میکند!!!
چندین بار تاحالا در برنامه های ایرانی دیده ام ...
نمیدانم دوستان چه فکر میکنند که دستوراتی مثل این را مینویسند ...
یا :
;()dt = new DataTable
;(...)dt = Func1
!!!!!!!!!!!!!!!!!!!!
اخه چه کاریه؟؟؟؟؟
شما در خط بعد فوراً دارید متغیرتان را از چیز دیگری پر میکنید، پس چرا در خز قبلی آن را با ایجاد یک شی جدید پر میکنید که بعد در خط بعدی پاکش کنید و چیز دیگری در ان بریزید؟؟؟؟؟؟؟؟؟؟؟؟؟
این واقعاً یعنی چی؟
واقعاً بدون شوخی عرض میکنم، اگر بفرمانید چطور و برای چه این خط را نوشته اید خیلی خوشحال میشوم؟
چون این چند وقته در کد خیلیها دیده ام و برایم خیلی جالب شده بدانم فرد ان لحظه چه فکری میکرده که این را نوشته؟
=====
منبع پر کننده گراید شما چیست؟
شاید راه خیلی ساده تری هم داشته باشد.
شب بخیر.
-
سلام
فکر کنم اگر به جای استفاده از متد Add از متد ImportRow که برای خود DataTable است استفاده کنی مشکل حل شود