PDA

View Full Version : گزارش گیری دینامیک



nejat_mohammadhossein
شنبه 23 مرداد 1389, 17:01 عصر
با سلام
می خواستم بدونم نحوه گزارش گیری در vb.net بصورت دینامیک چگونه هست؟
یعنی با استفاده از بانک sql server بتونم query بنوسیم و خروجی query در گزارش نمایش داده بشه.
ممنون


Dim rpt As New CrystalReport1
Dim strsql As String
Dim strcon As String
strcon = "Data Source=NEJAT-5E0EFDF36;Initial Catalog=student;Integrated Security=True"
Dim con As New SqlConnection(strcon)
con.Open()
strsql = "select * from sttable where stno='1'"
Dim da As New SqlDataAdapter(strsql, con)
Dim ds As New DataSet
da.Fill(ds, "sttable")
Dim dv As DataView
dv = New DataView(ds.Tables("sttable"))
'Dim cr As New CrystalReport4
'rpt.DataDefinition.Equals(da)
CrystalReportViewer1.ReportSource = rpt

اینم نوشتم که هیچی نشون نمیده

Shahram_Shobeiri
یک شنبه 24 مرداد 1389, 08:35 صبح
یه روش اینه:
اول خروجی یک کوئری رو که قراره با اعمال شرط روی نتایج اون گزارش های مختلف بسازی رو (مثل همین کوئری که نوشتی) در یک فایل xml ذخیره کن
حالا برو تو محیط ابزار گزارش گیری (مثل کریستال ریپورت) و بر مبنای اون فایل xml گزارش ات رو طراحی کن.
حالا بیا تو فرم گزارش گیریت، شرط های مورد نظرت رو روی کوئری کلی پایه گزارش اعمال کن. بعد از اینکه گزارش رو باز کردی دیتا سورس اون رو با خروجی کوئری ست کن.
گزارش رو نمایش بده!

nejat_mohammadhossein
یک شنبه 24 مرداد 1389, 10:52 صبح
یه روش اینه:
اول خروجی یک کوئری رو که قراره با اعمال شرط روی نتایج اون گزارش های مختلف بسازی رو (مثل همین کوئری که نوشتی) در یک فایل xml ذخیره کن

ممنون که جواب دادی نحوه ی ذخیره تو فایل xml چجوریه؟

حالا برو تو محیط ابزار گزارش گیری (مثل کریستال ریپورت) و بر مبنای اون فایل xml گزارش ات رو طراحی کن.

چجوری بر مبنای فایل xml گزارش طراحی میکنن؟

حالا بیا تو فرم گزارش گیریت، شرط های مورد نظرت رو روی کوئری کلی پایه گزارش اعمال کن. بعد از اینکه گزارش رو باز کردی دیتا سورس اون رو با خروجی کوئری ست کن.
گزارش رو نمایش بده!
منظور از شرطها چیه ؟

Shahram_Shobeiri
یک شنبه 24 مرداد 1389, 11:47 صبح
نحوه ی ذخیره تو فایل xml چجوریه؟datatable.WriteXml("path")

چجوری بر مبنای فایل xml گزارش طراحی میکنن؟موقع ساخت گزارش تو کریستال به جای اینکه سورس گزارش رو از دیتا بیس انتخاب کنی، اون رو از فایل xml بگیر

منظور از شرطها چیه ؟ همون شرط هایی که با اون می خواهی گزارش رو پویا کنی. یعنی مثلاً نتایج رو بین دو تاریخ محدود کنی یا هر شرط دیگه ای. همون شرایطی که تو where می نویسی

nejat_mohammadhossein
یک شنبه 24 مرداد 1389, 20:35 عصر
[quote=Shahram_Shobeiri;1067954][ltr_inline]]
موقع ساخت گزارش تو کریستال به جای اینکه سورس گزارش رو از دیتا بیس انتخاب کنی، اون رو از فایل xml بگیر
/quote]
اینجاشو نفهمیدم، یک مثال برام میاری ؟
ممنون

Shahram_Shobeiri
یک شنبه 24 مرداد 1389, 22:34 عصر
تو کریستال، استیمول یا هر ابزار گزارش گیری باید داده های موجود در گزارش رو از یه جا بخونی و در فرمت گزارشی که طراحی کردی نمایش بدی. معمولا این دیتا رو از دیتا بیس می گیرن. حالا شما اون اول به جای اینکه دیتا سورس رو دیتا بیس قرار بدی اون رو فایل قرار بده. الان کریستال ندارم که دقیقا بگم کجا برو و چکار کن

nejat_mohammadhossein
پنج شنبه 28 مرداد 1389, 17:32 عصر
ولی می خوام از crystall report خود دات نت استفاده کنم.

sh2007
پنج شنبه 28 مرداد 1389, 20:00 عصر
نتايج كويري روتوي جدولهاي ديتاست بريز كه قبلابه كريستال اتصال داده شده بود

nejat_mohammadhossein
پنج شنبه 04 شهریور 1389, 00:06 صبح
سلام
خودم جوابم رو پیدا کردم
نیازی به data set نیست به xml هم نیازی نیست (نمی دونم چرا وقتی اسم xml می یاد فکر می کنم مطلب خیلی سنگینه .
اما براحتی پیدا کردم.

nasim bahari
پنج شنبه 04 شهریور 1389, 00:11 صبح
سلام
خودم جوابم رو پیدا کردم
نیازی به data set نیست به xml هم نیازی نیست (نمی دونم چرا وقتی اسم xml می یاد فکر می کنم مطلب خیلی سنگینه .
اما براحتی پیدا کردم.

خب جواب چی بود ؟ منظورم راه حلتون هستش ؟

nejat_mohammadhossein
چهارشنبه 10 شهریور 1389, 17:00 عصر
خب جواب چی بود ؟ منظورم راه حلتون هستش ؟
مثلا گفتم که اونی رو نشون بده که شماره دانشجویی (stno دو باشد.


Dim repdoc As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent
Dim reppath As String
reppath = Application.StartupPath + "\\CrystalReport1.rpt"
repdoc.Load("CrystalReport1.rpt")
'or repdoc.Load("F:\tadris\mabahes\tamrin\WindowsApplication7\Windo wsApplication7\\CrystalReport1.rpt")
'or repdoc.Load("reppath)
Dim sf As String
sf = "{sttable.stno}=2"
repdoc.DataDefinition.RecordSelectionFormula = sf
CrystalReportViewer1.ReportSource = repdoc

--------------------

مثلا گفتم که اونی رو نشون بده که شماره دانشجویی (stno دو باشد.


Dim repdoc As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent
Dim reppath As String
reppath = Application.StartupPath + "\\CrystalReport1.rpt"
repdoc.Load("CrystalReport1.rpt")
'or repdoc.Load("F:\tadris\mabahes\tamrin\WindowsApplication7\Windo wsApplication7\\CrystalReport1.rpt")
'or repdoc.Load("reppath)
Dim sf As String
sf = "{sttable.stno}=2"
repdoc.DataDefinition.RecordSelectionFormula = sf
CrystalReportViewer1.ReportSource = repdoc

از کتاب مهندس رمضان عباس نژاد کمک گرفتم(برنامه نویسی بانک اطلاعاتی با C#

yasser_beiraghi
پنج شنبه 11 شهریور 1389, 17:37 عصر
با سلام خدمت همه دوستان
من يه برنامه تو بانک ديدم (نگين - کيش وير) گزارش گيريش با crystal report بود. جالب اينجا بود وقتي روي فرمي که CrystalReportViewer بود اگه right click ميکردي مي تونستي فيلدهايي که مي خواين تو گزارش نمايش داده بشه رو کاربر انتخاب مي کرد. تازه اگه تعداد فيلدها کم و زياد مي شد خودکار جاشون تنظيم ميشد. به نظرتون چطوري پياده سازيش کردن ؟

Shahram_Shobeiri
جمعه 12 شهریور 1389, 02:18 صبح
مثلا گفتم که اونی رو نشون بده که شماره دانشجویی (stno دو باشد.


Dim repdoc As New CrystalDecisions.CrystalReports.Engine.ReportDocum ent
Dim reppath As String
reppath = Application.StartupPath + "\\CrystalReport1.rpt"
repdoc.Load("CrystalReport1.rpt")
'or repdoc.Load("F:\tadris\mabahes\tamrin\WindowsApplication7\Windo wsApplication7\\CrystalReport1.rpt")
'or repdoc.Load("reppath)
Dim sf As String
sf = "{sttable.stno}=2"
repdoc.DataDefinition.RecordSelectionFormula = sf
CrystalReportViewer1.ReportSource = repdoc
--------------------

از کتاب مهندس رمضان عباس نژاد کمک گرفتم(برنامه نویسی بانک اطلاعاتی با C#‎

این روش یه اشکال داره اونم اینه که اول کل گزارش رو بدون فیلتر لود می کنه و بعد که شما فرمول رو اعمال کردید یه بخش خاصی از گزارش رو نمایش میده. این روش در مورد گزارش های با حجم داده زیاد خیلی کند عمل میکنه!