سؤال

أنا أخدش رأسي على شيء غبي إلى حد ما ولكن يبدو أنه صعب.

DataView dvFormula = dsFormula.Tables[0].DefaultView;
dvFormula.RowFilter = "'" + startDate.ToString("yyyyMMdd") + "' < EndDate OR EndDate = '19000101'";
dvFormula.Sort = "FromDate ASC";

النتيجة هي:

لا يمكن إجراء "<" التشغيل على النظام.

من فضلك قل لي ما هي أفضل طريقة لحل هذه المشكلة.

مقدر جدا!

هل كانت مفيدة؟

المحلول

تحتاج إلى لفرة التواريخ الخاصة بك مع #، وليس من العلامات الفاصلة.

dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#"; 

نصائح أخرى

هذا هو الحل. جرب هذا:

filter = " (Date >= #" +
         Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
         "# And Date <= #" +
         Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
         "# ) ";

اعتمادًا على مزود البيانات الخاص بك ، قد تحتاج إلى الهروب من التواريخ مع # الشخصية بدلا من ' حرف. بالإضافة إلى ذلك ، أود تنسيق تواريخك بالتنسيق YYYY-MM-DD للتأكد من أنه يمكن الاعتراف به كتاريخ بشكل صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top