View Full Version : مبتدی: انتقال اطلاعات دیتا ست به کریستال
kasra_khan2003
یک شنبه 02 خرداد 1389, 19:45 عصر
سلام، من تو ضمینه چاپ کردن کاملا مبتدی هست.
خواستم ببینم، چطور میشه اطلاعاتی رو که با Adapter میفرستم داخل دیتاست، بدم به کریستال ریپورت تا نشون بده؟
Database من اکسس هست و با VB .net نوشتم.
یا این حالت که sample های زیادی تو سایت بود، ولی هیچ کدوم ریز به ریز توضیح نداده بودن که چطور اطلاعات دیتاگرید رو بدیم به کریستال؟ میخوام ساده ترین کد رو لطف کنین.
بعد اینکه، آیا حتما باید Database رو از طریق Wizard بدیم به کریستال؟ بعد اگه dierctory برنامه عوض بشه، مشکلی پیش نمیاد؟
sara.f
یک شنبه 02 خرداد 1389, 23:34 عصر
سلام، من تو ضمینه چاپ کردن کاملا مبتدی هست.
خواستم ببینم، چطور میشه اطلاعاتی رو که با Adapter میفرستم داخل دیتاست، بدم به کریستال ریپورت تا نشون بده؟
Database من اکسس هست و با VB .net نوشتم.
یا این حالت که sample های زیادی تو سایت بود، ولی هیچ کدوم ریز به ریز توضیح نداده بودن که چطور اطلاعات دیتاگرید رو بدیم به کریستال؟ میخوام ساده ترین کد رو لطف کنین.
بعد اینکه، آیا حتما باید Database رو از طریق Wizard بدیم به کریستال؟ بعد اگه dierctory برنامه عوض بشه، مشکلی پیش نمیاد؟
سلام
اول اینکه شما باید واسه هر سوال یک تاپیک جداگانه ایجاد کنید.
من کدی با C# واستون میذارم، چون VB کار نمی کنم.
واسه set کردن یک دیتا ست برای گزارش کافیه این خط را بنویسید.
reportDocument.SetDataSource(ds);
ds همون data set هست و ReportDocument نمونه ای هست که واسه گزارش گیری تعریف شده.اگر ابهامی هست بپرسید.
kasra_khan2003
دوشنبه 03 خرداد 1389, 00:25 صبح
ممنون، تا اینجا رو فهمیدم و خیلی خوب اجرا شد.
اما الان مشکل اینجاست که اگه من یه query بنویسم که مثلا فقط ردیف هایی که قیمت کالا بیشتر از 200 هست رو بده و دیتا ست رو با این query پر کنم، وقتی report میگیرم، باز هم کل ردیف ها رو بهم میده!
sara.f
دوشنبه 03 خرداد 1389, 12:13 عصر
پس این نشون میده که Query که نوشتید اشکال داره، پس اگر Query را صحیح بنویسید میتونید نتیجه را در data set قرار بدید و برای گزارش set کنید.
kasra_khan2003
دوشنبه 03 خرداد 1389, 13:14 عصر
پس این نشون میده که Query که نوشتید اشکال داره، پس اگر Query را صحیح بنویسید میتونید نتیجه را در data set قرار بدید و برای گزارش set کنید.
خیر دوست عزیز، query صحیح هست چون که نتیجش رو تو datagrid فرستادم و دیدم!
برای اطمینان:
Select ID, Name, Family, Price,Phone, Mobile,Address From Customer Where Price > @Price
یه شخصی گفت این مشکل access هست و تو SQL اینجوری نمیشه...
sara.f
دوشنبه 03 خرداد 1389, 13:33 عصر
کوئریتون که به نظر درست میاد.
مگر شما نتیجه کوئری را درون یک dataset نمیریزید و بعدش اون dataset را به عنوان source برای datagridview سِت نمی کنید؟
اگر جواب مثبته، پس هیچ اشکالی از Access نیست.
kasra_khan2003
دوشنبه 03 خرداد 1389, 13:42 عصر
کوئریتون که به نظر درست میاد.
مگر شما نتیجه کوئری را درون یک dataset نمیریزید و بعدش اون dataset را به عنوان source برای datagridview سِت نمی کنید؟
اگر جواب مثبته، پس هیچ اشکالی از Access نیست.
چرا، من همون دیتا ست رو هم به عنوان سرور برای ریپورتم انتخاب میکنم. این کل کد هست:
Dim conn As New OleDbConnection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Pazirik_DB.mdb;"
Dim cmd As New OleDbCommand
cmd.CommandText = "Select ID, Name, Family, Price,Phone, Mobile,Address From Customer Where Price > @Price"
cmd.Connection = conn
cmd.Parameters.Add("@Price", OleDbType.Integer, 16).Value = Integer.Parse(txt_Max.Text, NumberStyles.Number)
Dim myAdapter As New OleDbDataAdapter
myAdapter.SelectCommand = cmd
Dim dtSet As New DataSet
conn.Open()
myAdapter.Fill(dtSet, "Pazirik_db")
grd.DataSource = dtSet
grd.DataMember = "Pazirik_db"
conn.Close()
conn.Dispose()
myAdapter.Dispose()
cmd.Dispose()
Dim Review As New flc_Print_Review
Dim report As New cry_Print
report.SetDataSource(dtSet)
Review.x.ReportSource = report
Review.ShowDialog()
kasra_khan2003
دوشنبه 03 خرداد 1389, 17:19 عصر
مشکل من موقتا حل شد! بجای DataSet از DataTable استفاده کردم و حل شد.
اما امروز 10 صفحه از صفحات این بخش رو مرور کردم و دیدم قبلا هم اشخاصی این مشکل رو داشتن و هر کدوم به نوعی درو زدنش! مثلا یکی رفته بود از xml استفاده کرده بود.
اگه از دوستان کسی میدونه چرا با dataset این مشکل پیش میاد و با dataTable نمیاد، به ما هم بگه...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.