reza_edu
شنبه 16 بهمن 1389, 01: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
تو رويدار باتن هم
اول تابع رو فراخواني ميكنيم
دوم مسير گزارش رو براش مشخص ميكنيم
سوم قالب گزارش رو لود ميكنيم
چهارم اطلاعات رو از ديتابيس ميخونيم و تو ديتا تيبل ميريزيم
پنجم داده هارو تو گزارش ساخت شده قرار ميديم
و آخر گزارش رو تو نمايش دهنده گزارش فقرار ميديم
قابل توجه دوستاني كه اين مطلب رو ميخونن من به اين روش تونستم اين قابليت رو به برنامم اضافه كنم ممكنه من تو بيان بعضي مطالب اشتباه كرده باشم كه ممنون ميشم دوستان اين اشتباهات بنده رو به من گزارش كنن با تشكر از دوستان و مسئولان سايت كه اين امكانات رو در اختيار ما ميدن تا اطلاعات و تجربيات خودمون رو باهم درميون بزاريم .
اول بگم كه من اين روش رو از يه نمونه كه تو سايت كد پروجكت بود ياد گرفتم حالا چرا تصميم به بيان اون تو اين صايت گرفتم خوب دليل ائل اين بود كه اون پروژه به زبان سيشارپ بود دوم براي اجراي اون ابتدا بايد كد رو درك ميكردي (يا توضيحات انگليسي رو ميخوندي ) تا متوجه ميشدي قضيه از چه قراره و چيكار بايد انجام بدي من اين مطلب رو ميزارم تو سايت تا ديگر دوستاني كه ميخوان اون رو تو پروژه هاشون استفاده كنن به زحمت نيوفتن و يه قدم جلو باشن اميدوارم كه اين كارمن مورد قبول واقع بشه انشالله .
صحبت رو كم ميكنم ميرم سر اصل مطلب البته توجه داشته باشيد كه اين توضيح كلي هست و فقط براي اينكه بفهميد داستان از چه قراره:
مراحل ايجاد :
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
تو رويدار باتن هم
اول تابع رو فراخواني ميكنيم
دوم مسير گزارش رو براش مشخص ميكنيم
سوم قالب گزارش رو لود ميكنيم
چهارم اطلاعات رو از ديتابيس ميخونيم و تو ديتا تيبل ميريزيم
پنجم داده هارو تو گزارش ساخت شده قرار ميديم
و آخر گزارش رو تو نمايش دهنده گزارش فقرار ميديم
قابل توجه دوستاني كه اين مطلب رو ميخونن من به اين روش تونستم اين قابليت رو به برنامم اضافه كنم ممكنه من تو بيان بعضي مطالب اشتباه كرده باشم كه ممنون ميشم دوستان اين اشتباهات بنده رو به من گزارش كنن با تشكر از دوستان و مسئولان سايت كه اين امكانات رو در اختيار ما ميدن تا اطلاعات و تجربيات خودمون رو باهم درميون بزاريم .