الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كريستال ريبورت و Date Range >> مشكلة !

مغلق
بدأه عبدالسميع في 20 أبريل 2005 · 8 رد · 1,646 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ،،

التقرير المطلوب يقوم بجلب جميع السجلات ( من جدول واحد ) التي يقع تاريخها بين تاريخين ( بداية و نهاية )

وهذين التاريخين يتم تحديدهما بواسطة أداتين من نوع datetimepicker

استخدمت طريقة ال date range عبر ( in ..to )

السيلكشن فورمولا كالتالي :

assrep.DataDefinition.RecordSelectionFormula = "{assingnments.Assigneddate} in #" & Me.DateTimePicker1.Value.ToShortDateString & "# to #" & Me.DateTimePicker2.Value.ToShortDateString & "#"

ال datetimepicker يستخدم short format كالتالي DD/MM/YYYY

وكذلك الحقل المطلوب في الديتابيس ( الاكسس )

ولا مشكلة في هذه العملية ، إلا أنه لا يقوم بجلب النتائج الصحيحة

مثلاً اذا حددت له التاريخ بين 01/01/2005 إلى 01/04/2005

فإنه لا يعيد اية نتيجة رغم وجود سجل بتاريخ 03/03/2005 !

كذلك اذا حددت له التاريخ بين 1/12/2004 إلى 1/4/2005

فإنه يقوم بإحضار سجل بتاريخ 12/02/2004 !

والسؤال الآن ، أين المشكلة أو الخطأ الذي يحتاج إلى تعديل لكي يتم جلب النتائج الصحيحة ؟

بانتظار اقتراحاتكم ،،

#2

اخى العزيز انا لست طليع في البرمجة و لكن في حال ان القيمة المطلوبةبين رقمين محددين نقوم يعمل براميتر RANG VALUE و كتابة الكود التالي في رز امر

Dim myTableLogonInfos = New CrystalDecisions.Shared.TableLogOnInfos

Dim myTableLogonInfo = New CrystalDecisions.Shared.TableLogOnInfo

Dim myConnectionInfo = New CrystalDecisions.Shared.ConnectionInfo

With myConnectionInfo

.ServerName = "localhost"

.DatabaseName = "stor"

.UserID = "sa"

.Password = ""

End With

myTableLogonInfo.ConnectionInfo = myConnectionInfo

myTableLogonInfo.TableName = "inv"

myTableLogonInfos.Add(myTableLogonInfo)

CrystalReportViewer1.LogOnInfo = myTableLogonInfos

Dim rp As New CRitem2

Dim pf As New ParameterField

Dim pfs As New ParameterFields

Dim rf As New ParameterRangeValue

pf.ParameterFieldName = "p_item2"

rf.StartValue = CInt(TextBox1.Text)

rf.EndValue = CInt(TextBox2.Text)

pf.CurrentValues.Add(rf)

pfs.Add(pf)

CrystalReportViewer1.ParameterFieldInfo = pfs

CrystalReportViewer1.ReportSource = rp

CrystalReportViewer1.Refresh()

CrystalReportViewer1.PrintReport()

الكود شغال 100/100 و لكن قيمة رقمية للبراميتر

#3

أرجوا منكم يا اخوانى الاطلاع على هذة الوصلة فبها مشكلة حدثت لى ---> هنا

وعلى فكرة قمت بتجربة هذا الكود لكنة يعطينى نتائج خطأ أيضا تماما مثلما حدث فى قيم التاريخ

#4

السلام عليكم

جرب الكود بهذه الصيغة

assrep.DataDefinition.RecordSelectionFormula = "{assingnments.Assigneddate} >= #" & Me.DateTimePicker1.Value.ToShortDateString & "# and {assingnments.Assigneddate}<= #" & Me.DateTimePicker2.Value.ToShortDateString & "#"

"إن الذين آمنوا وعملوا الصالحات كانت لهم جنات الفردوس نزلا"

#5

شكرا لك يا اخى على هذا الاهتمام لكن ياريت توضح لى ما هو assrep لانة بيدينى خط تحتة ويخبرنى انة عنصر غير معرف. وهل assingnments.Assigneddate هى اسم الجدول يلية اسم الحقل ام انها كلمة محجوزة؟

#6

أخي الكريم انا قصدت ان تضيف مجال يقع بين تاريخين كما هو موضح في المثال أما بالنسبة assingnments.Assigneddate فأنا اشتققتها من الكود اللي انت كاتبه

"إن الذين آمنوا وعملوا الصالحات كانت لهم جنات الفردوس نزلا"

#7

شكرا لك يا أخى الكود يعمل وجزاك الله عنى خير الجزاء

لى سؤال هل سيختلف الامر كثيرا لو قمت بإدخال معامل آخر . بمعنى مثلا اريد تقرير بحركة صنف مخزنى برقم كذا من تاريخ كذا الى تاريخ كذا فهناك كما تلاحظ 3 معطيات سوف اعطيها للتقرير كى يستعلم على اساسها فهل سيختلف الامر كثيرا عن المثال السابق؟

جزاك الله خير

#8

السلام عليكم

لقد استخدمت هذه الطريقة وقد نجحت معي ولكن قاعدة البيانات المستخدمة هى sql

d1 = Format(DateTimePicker1.Value, "yyyy-MM-dd").ToString & " 00:00:00"
d2 = Format(DateTimePicker2.Value, "yyyy-MM-dd").ToString & " 00:00:00"
Dim ad1 As New SqlDataAdapter("SELECT * from stock WHERE TRANSDT>=CONVERT(DATETIME,'" & d1 & "',102) and TRANSDT<=CONVERT(DATETIME,'" & d2 & "',102)", cn)
            ad2.Fill(DS, "stok")
            Dim rpt As New CrystalReport6
               rpt.SetDataSource(DS.Tables("stok"))
            CrystalReportViewer1.ReportSource = rpt
            CrystalReportViewer1.Refresh()
            CrystalReportViewer1.Dock = DockStyle.Fill
            CrystalReportViewer1.Visible = True

"نحن لا نستسلم... ننتصر أو نموت.... وهذه ليست النهاية... بل سيكون عليكم أن تحاربوا الجيل القادم والاجيال التي تليه... اما أنا... فإن عمري سيكون أطول من عمر شانقي."

عمر المختار

اللهم انعم على بلادي بالأمن والأمان

#9

أخي عبد السمعيع

لقد صممت من قبل برنامج بالفيجوال بيسك و احتجت فيه إلى تمرير قيمة تاريخين عن طريق استخدام datepicker و قد استخدمت الكود التالي من أجل الأختيار:

report.recordselctionformula = "( {cdrTable.cdrTimeStamp} >= Date (" & Format(Me.DT1, "yyyy,mm,dd") & ")) AND ( {cdrTable.cdrTimeStamp} <= Date (" & Format(Me.DT2, "yyyy,mm,dd") & "))"

حيث DT1 , DT2 هي datepicker

cdrtable: اسم الجدول

cdrtimestamp: اسم الحقل

تم تعديل هذه المشاركة بواسطة fairnet في 1 يناير 2007 في 22:03

هذا الموضوع مغلق.

مواضيع مشابهة