PDA

View Full Version : پارامتر و فیلتر کردن



karmand
سه شنبه 14 اسفند 1386, 13:36 عصر
سلام
من چند متغیر در کریستیال تعریف کردم و آنها را به فیلدهایی که می خوام فیلتر بشن نسبت دادم و از توی برنامه (سی شارپ) اونها رو به کریستیال نسبت دادم حالا دو تا مشکل دارم
1) بعضی وقتها لازم هست مثلا کل بانک نشان داده شود یعنی یکی از متغیرهام می خوام جزء فیلتر کننده ها نباشد توی اس کیو ال از % استفاده میشه اینجا باید چی رو به کریستیال پاس بدم

2)می خوام چند مقدار رو به یک متغیر بدم یعنی مثلا 1 یا 2 یا 3 و ... که همه اینها با هم فیلتر بشن برای این مورد اولا متغیرم را از چه نوعی تعریف کنم و ضمنا توی سی شارپ باید از چه نوع داده ای استفاده کنم

متشکرم

komail_sh
یک شنبه 19 اسفند 1386, 12:52 عصر
سلام دوست عزیز
میشه واضح تر توضیح بدی منظورت از فیلتر چیه و چه کاری می خوای انجام بدی؟

Artist
چهارشنبه 22 اسفند 1386, 01:10 صبح
من هم مشکل % رو دارم ، یعنی برای پاس کردن پارامتر بعضی وقتها از داخل برنامه مقدار هست مثل


rpt.SetParameterValue("@presonelid", 100)

یعنی اون رکوردهایی که presonelid شون برابر با 100 هست اما اگر بخوام همه رکوردها رو نشون بده بجای 100 باید چی گذاشت؟
البته من با VB کار می کنم .

saman_itc
دوشنبه 20 خرداد 1387, 14:40 عصر
من چند متغیر در کریستیال تعریف کردم و آنها را به فیلدهایی که می خوام فیلتر بشن نسبت دادم و از توی برنامه (سی شارپ) اونها رو به کریستیال نسبت دادم حالا دو تا مشکل دارم
چه طور میشه در کریستیال متغیر تعریف کرد آنها را به فیلدهایی که می خوام فیلتر بشن نسبت داد؟

amirzazadeh
شنبه 25 خرداد 1387, 12:54 عصر
2)می خوام چند مقدار رو به یک متغیر بدم یعنی مثلا 1 یا 2 یا 3 و ... که همه اینها با هم فیلتر بشن برای این مورد اولا متغیرم را از چه نوعی تعریف کنم و ضمنا توی سی شارپ باید از چه نوع داده ای استفاده کنم

براي قسمت دوم سئوالتون نوع پارامتر رو rang value انتخاب كنين تا گزارشتون در داخل اون محدوده باشه البته در اين حالت بايد رنجتون پيوسته باشه.(مثلا از يك تا ده).
از اين كد هم ميتونين كمك بگيرين:

Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As ParameterValues
Dim prescdat As ParameterRangeValue
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\am\Desktop\totia.mdb")

Dim dst As New DataSet

If RadioButton1.Checked = True Then
con.Open()
Dim dap As New OleDbDataAdapter("SELECT * FROM rep where phtype='p' and type='p'", con)

dap.Fill(dst, "rep")
Else
Dim dap As New OleDbDataAdapter("SELECT * FROM rep where phtype='m' and type='m'", con)

dap.Fill(dst, "rep")
End If



Dim opr As New CrystalReport1
crParameterFieldDefinitions = opr.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item("prescdat")
opr.SetDataSource(dst)

crParameterValues = crParameterFieldDefinition.CurrentValues

prescdat = New ParameterRangeValue()


With prescdat
.EndValue = PersianToolsPack.PersianDate.ToMiladi(SlrTextbox2. Text)
'.LowerBoundType = RangeBoundType.BoundInclusive
.StartValue = PersianToolsPack.PersianDate.ToMiladi(SlrTextbox1. Text)
'.UpperBoundType = RangeBoundType.BoundInclusive
End With

'Apply the Date range to the values to be passed to the Report
crParameterValues.Add(prescdat)

'Pass the parameter values back to the report
crParameterFieldDefinition.ApplyCurrentValues(crPa rameterValues)


Form3.CrystalReportViewer1.ReportSource = opr
con.Close()
Form3.Show()

amirzazadeh
شنبه 25 خرداد 1387, 13:05 عصر
چه طور میشه در کریستیال متغیر تعریف کرد آنها را به فیلدهایی که می خوام فیلتر بشن نسبت داد؟
از تصوير كمك بگير (براي ساخت پارامتر روي پارامتر فيلد راست كليك و new رو انتخاب كن)
براي ارسال پارامتر از دستور زير استفاده كن

opr.SetParameterValue("نام پارامتري كه درست كردي", Textbox1.Text)
opr اسم ريپورت و textbox1 فيلد حاوي پارامتر براي ارسال به كريستال انتخاب شده.
.........................
موفق باشيد.