PDA

View Full Version : آموزش: گزارش گيري با كريستال ريپورت با ستونهاي انتخابي يا(Dynamic Crystal Reports)



reza_edu
شنبه 16 بهمن 1389, 00:19 صبح
سلام به همه دوستان خوبم
اول بگم كه من اين روش رو از يه نمونه كه تو سايت كد پروجكت بود ياد گرفتم حالا چرا تصميم به بيان اون تو اين صايت گرفتم خوب دليل ائل اين بود كه اون پروژه به زبان سيشارپ بود دوم براي اجراي اون ابتدا بايد كد رو درك ميكردي (يا توضيحات انگليسي رو ميخوندي ) تا متوجه ميشدي قضيه از چه قراره و چيكار بايد انجام بدي من اين مطلب رو ميزارم تو سايت تا ديگر دوستاني كه ميخوان اون رو تو پروژه هاشون استفاده كنن به زحمت نيوفتن و يه قدم جلو باشن اميدوارم كه اين كارمن مورد قبول واقع بشه انشالله .
صحبت رو كم ميكنم ميرم سر اصل مطلب البته توجه داشته باشيد كه اين توضيح كلي هست و فقط براي اينكه بفهميد داستان از چه قراره:
مراحل ايجاد :

1.يه ديتابيس هم تعداد فيلد هاي ديتابيس اصلي كه قرار داده ها ازش خونده بشه ايجاد كنيد و اسم ستون هارو به ترتيب Column1 تا Column5
از نوع داده هاي ورچر قرار بديد
2.حالا ديتابيس ساخته شده رو از پنجره ديتا سورس به برنامه اضافه كنيد تا يه ديتاست ازش تو برنامه ساخته بشه.
3.خوب حالا به پروژه يه كريستال ريپورت اضافه كنيد و داده هاش رو داده هاي جدول ساخته شده قرار بديد.
4. پنج پارامتر به گزارش اضافه كنيد و اسم اون هارو با توجه به نمونه ايكه گذاشتم انتخاب كنيد(نمونه گزارش رو ببيند متوجه ميشيدقسمت پارامتر فيلد ها)
5. يه بار برنامه رو اجرا كنيد يعني ديباگ كنيد.
6.حالا ديتا ست رو حذف كنيد ديگه نياز نداريمش.
7.تو مسيره پروژه فايل كريستال ريپورت رو كپي كنيد تو يه پوشه ديگه هر جا خاصتيد
8.حالا اون فايل كريستال ريپورت رو از برنامه حذف كنيد و برنامه رو اجراكنيد
9.اون فايل كريستالي كه تو پوشه ديگه كپي كرده بوديد تو پوشه ديباگ كناره فايل اگزه كپي كنيد
----------------------حالا كد هاي برنامه
10.تو برنامه يه تابع هست كه وضيفهش اينكه يه مقدار از نوع استرينگ رو برميگردونه كه ازون براي خوندن اطلاعات از ديتابيس استفاده ميشه و وضيفه ديگش اينكه اطلاعات رو به ستون هاي گزارش تو كريستال ريپورت انتساب ميكنه همون ستون هائي كه اسمشون رو ستون 1 تا 5 نام گذاري كرده بوديم و كار ديگش اينكه سر تيتر هر ستون رو با توجه به اطلاعات او ستون قرار ميده و باقي ستون هارو سر تيتر و مقدارشون رو خالي نمايش ميده تا انگار خالي به نظر بيان
تابع :
Function CreateSelectQueryAndParameters() As String

خوب يك سري شرط ها هست كه بر اساس اون معلوم ميشه كه چه فيلد هاي بايد به گزارش اضافه بشن مثل شرط زير نكته ايكه هست اينكه
IFieldObject
ها بر اساس اين شرط ها داده هائي كه توشون قرار مي گيره تعيين ميشه و سرتيتر ستون هاش
If chbFirstName.Checked Then
اين شمارنده تعداد ستون ها هست columnNo += 1
اين شرط براي دستوري هست كه ميخواد به سمت اسكيوال پاس بشه If query.Contains("Column") Then
query = query.Insert(query.Length, ", ")
End If
اين دستور باعث ميشه تا رشته ارسالي تشكيل بشه
query = query.Insert(query.Length, "FirstName as Column" + columnNo.ToString())
paramField = New ParameterField()
به پارامتر هاي سرتيترباتوجه با تعداد انتخاب مقدار ميده
paramField.Name = "col" + columnNo.ToString()
معلوم ميكنه چه داده هائي بايد قرار بگيره
paramDiscreteValue = New ParameterDiscreteValue()
paramDiscreteValue.Value = "First Name"
paramField.CurrentValues.Add(paramDiscreteValue)
'Add the paramField to paramFields
paramFields.Add(paramField)
End Ifيه حلقه فور هم هست كه بوسيله اون باقي ستون هارو مقدار نال قرار ميديم اينجوري خالي به نظر ميان
For i As Integer = columnNo To 4
columnNo += 1
paramField = New ParameterField()
paramField.Name = "col" + columnNo.ToString()
paramDiscreteValue = New ParameterDiscreteValue()
paramDiscreteValue.Value = ""
paramField.CurrentValues.Add(paramDiscreteValue)
'Add the paramField to paramFields
paramFields.Add(paramField)
Next
تو رويدار باتن هم
اول تابع رو فراخواني ميكنيم
دوم مسير گزارش رو براش مشخص ميكنيم
سوم قالب گزارش رو لود ميكنيم
چهارم اطلاعات رو از ديتابيس ميخونيم و تو ديتا تيبل ميريزيم
پنجم داده هارو تو گزارش ساخت شده قرار ميديم
و آخر گزارش رو تو نمايش دهنده گزارش فقرار ميديم

قابل توجه دوستاني كه اين مطلب رو ميخونن من به اين روش تونستم اين قابليت رو به برنامم اضافه كنم ممكنه من تو بيان بعضي مطالب اشتباه كرده باشم كه ممنون ميشم دوستان اين اشتباهات بنده رو به من گزارش كنن با تشكر از دوستان و مسئولان سايت كه اين امكانات رو در اختيار ما ميدن تا اطلاعات و تجربيات خودمون رو باهم درميون بزاريم .

Saeidsaghar
شنبه 16 بهمن 1389, 00:43 صبح
ميشه لطفا نحوه استفاده از فايلت رو هم توضيح بدي ممنون

reza_edu
شنبه 16 بهمن 1389, 10:04 صبح
سلام خوب یه توضیح کلیه دیگه میدم اما دوست عزیز اگه دقیق تر میخواید بگید کدوم قسمت تا بتونم بهتر توضیح بدم .
این برنامه کجا بدرد میخوره؟ خوب یه زمانی پیش میاد که ما نتیجه جستجو مون از ستون های اطلاعاتی زیادی تشکیل میشه و میخوایم انتخاب اون ستون هارو به کاربر بدیم تا باتوجه به نیاز خودش تصمیم بگیره چه اطلاعاتی میخواد تو گزارشش وجود داشته باشه یا اینکه تعداد این ستون ها از برگه ای که قرار اطلاعات روش چاپ بشه بزرگتر هست و میتونیم با این روش اون اطلاعات رو خورد خورد چاپ کنیم خوب این موارد استفاده از این روش بود اما یه نکته قابل توجه هست که این برنامه زمانی به درد میخوره که ما میخواهیم حاصل جستجو یکدفعه وارد صفحه گزارش بشه حالا منظورم چیه(تو این مورد با تغییر کوچیک میشه استفاده کرد->) یعنی شما ممکنه اول مثل کاری که من کردم نتیجه جستجو رو تو یه دیتا گرید بریزی بعد اگه کاربر دید که این نتیجه جستجو به دردش میخوره چاپکنه این جا باید تو کود برنامه تغییری ایجاد کنی تا بشه استفاده کرد.
دوست عزیر Saeidsaghar من منظور شما رو درست نگرفتم اگه امکان داره با پیام خوصوصی دقیق بگو چیو میخوای بدونی تا من بتونم بهتر توضیح بدم با تشکر.