PDA

View Full Version : lمشكل در ارسال رنج تاريخ



amirzazadeh
سه شنبه 31 اردیبهشت 1387, 14:35 عصر
دوستان من يك گزارش دارم كه دوتا پارامتر تاريخ از تكست باكس بهش ارسال ميشه ولي فقط يكي از اونها روي گزارس اعمال ميشه لطفا بگين مشكل چيه البته با in ...to هم چك كردم بازم جواب نداد كد رو براتون ميگذارم:

Private Sub Btnrep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnrep.Click

Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\am\Desktop\totia.mdb")
Dim dap As New OleDbDataAdapter("SELECT instype, insser, phcode, dat, prescdat, name, SQ FROM prescribe ", con)
Dim dst As New DataSet
Dim opr As New CrystalReport1
con.Open()
dap.Fill(dst, "prescribe")
con.Close()
opr.SetDataSource(dst)
opr.SetParameterValue("instype", ComboBox1.SelectedValue)
opr.SetParameterValue("prescdat", SlrTextbox1.Text)
opr.SetParameterValue("prescdat", SlrTextbox2.Text)
Form3.CrystalReportViewer1.ReportSource = opr
Form3.Show()
End Sub

amirzazadeh
چهارشنبه 01 خرداد 1387, 10:06 صبح
دوستان سئوالم دوباره اينطور اصلاح ميكنم اگر پارامتري در كريستال ريپورت به جاي ديسكريت از نوع range value انتخاب بشه تا بتونيم محدوده تاريخ گزارش رو وارد كنيم چطور ميتونيم از داخل فرم vb.net مقادير رو مستقيما ارسال كنيم (منظورم اينه كه نگذاريم كريستال ريپورت فرم ديفالت رو براي گرفتن مقادير بازكنه).
ممنون.
اگر نمونه داشته باشين بيشتر به دردم ميخوره.

haste asli
دوشنبه 20 خرداد 1387, 11:42 صبح
فرم دیفالت وقتی باز می شه که یکی یا چندتا از پارامترهای داخل گزارش مقداردهی نشده باشه. کدی که نوشتید برای ارسال پارامتر درست عمل می کنه .بهتره به جای یه پارامتر rangevalue دو پارامتر عادی تعریف کنید تا به راحتی از اونها استفاده کنید. ولی من فکر می کنم بهتره قبل از ارسال دیتا به کریستال تو دستور select این رنج تاریخ اعمال بشه تا هم سربار پروسس کریستال کم بشه هم دیتای کمتری تو شبکه جاری بشه.

amirzazadeh
چهارشنبه 22 خرداد 1387, 12:04 عصر
ممنون به خاطر توجهتون.من از اين كد استفاده كردم ولي همانطور كه شما فرمودين يه خورده لود گزارش كند ميشه.

Private Sub Btnrep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnrep.Click
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)
opr.SetParameterValue("fd", SlrTextbox1.Text)
opr.SetParameterValue("instype", ComboBox1.SelectedValue)

crParameterValues = crParameterFieldDefinition.CurrentValues

'Cast the variable to hold the range value for the parameter
prescdat = New ParameterRangeValue()

'Set the Date range and include the upper and lower bounds. Use the Cdate function as insurance
'to ensure that the value passed is cast to the appropriate data type
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()
End Sub

haste asli
سه شنبه 28 خرداد 1387, 09:05 صبح
با سلام
بهتره تو گزارشتون دو تا پارامتر تاریخ تعرف کنید و از برنامه این دو پارامتر را با تاریخ شروع و پایان پاس بدید به این شکل
rpt.SetParameterValue("start_date",txt_start.text) C
rpt.SetParameterValue("End_date",txt_End.text) C
بعد تو کریستال نتیجه گزارش رو با ایندو تاریخ محدود کنید.(با select expert) نیازی هم به اون همه کد نویسی ندارین