PDA

View Full Version : فیلتر کردن یک جدول ADO



داوود
سه شنبه 26 مهر 1384, 14:03 عصر
یک ADOTable رو با استفاده از یک ADOQuery فیلتر کردم که در اون تاریخ به تفکیک روز ماه و سال مشخص شده . نوع هر سه فیلد از نوع Nvarchar هستند . بعد از انجام فیلتر با پیغام زیر مواجه می شم.

hr110
سه شنبه 26 مهر 1384, 15:04 عصر
ببخشید میشه بیشتر بدهید که چطور این کار رو انجام داده اید؟

ضمناً من فکر میکنم جایی که از مقدار فیلد برای فیلتر کردن استفاده کرده اید ، از تابع QuotedStr() استفاده نکرده اید

داوود
چهارشنبه 27 مهر 1384, 07:01 صبح
با تشکر
فیلتر رو با دستور Format انجام داده ام . و از Quotedstr هم استفاده کرده ام .

m-khorsandi
چهارشنبه 27 مهر 1384, 07:50 صبح
درود
شما اگه دستورتون رو اینجا بگذارید، سریعتر به نتیجه میرسیم.

داوود
چهارشنبه 27 مهر 1384, 08:35 صبح
با تشکر
دستور رو براتون نوشتم

form11.ADOTable1.Filter:=format('(sday >= %s)and(sday <= %s) and (smonth >= %s) and (smonth <= %s) and (syear >= %s) and (syear <= %s)',[(Quotedstr(form12.Edit3.Text)),(Quotedstr(form12.E dit6.Text)),(Quotedstr(edit2.Text)),(Quotedstr(edi t5.Text)),(Quotedstr(edit1.Text)),(Quotedstr(edit4 .Text))]);.

Naficy
چهارشنبه 27 مهر 1384, 10:26 صبح
این کد شما که ربطی به ADOQuery نداره؟!!!!!!
ضمنا فیلدهای sday و... رو از نوع int تعریف کنید و QuotedStr رو بردارین. در غیر این صورت حداقل از نوع varchar یا char تعریف کنین. آخه چرا یونیکد؟؟!
توجه داشته باشین که در صورت استفاده از varchar و مشابه آن، برای اینکه نتیجه درست از مقایسه بگیرین حتما اعداد باید صفرچین شده باشند. مثلا عدد 1 رو بصورت 01 ذخیره کنین. وگرنه این مقایسه تون جواب نمی ده. برای همین می گم از int استفاده کنین که منطقی تره.

داوود
چهارشنبه 27 مهر 1384, 13:42 عصر
این کد شما که ربطی به ADOQuery نداره؟!!!!!!
ضمنا فیلدهای sday و... رو از نوع int تعریف کنید و QuotedStr رو بردارین. در غیر این صورت حداقل از نوع varchar یا char تعریف کنین. آخه چرا یونیکد؟؟!
توجه داشته باشین که در صورت استفاده از varchar و مشابه آن، برای اینکه نتیجه درست از مقایسه بگیرین حتما اعداد باید صفرچین شده باشند. مثلا عدد 1 رو بصورت 01 ذخیره کنین. وگرنه این مقایسه تون جواب نمی ده. برای همین می گم از int استفاده کنین که منطقی تره.

با عرض معذرت از اینکه به جای ADOTable گفتم ADOQuery
من ADOTable رو با استفاده از دستورات بالا فیلتر کردم .
نوع فیلدها رو هم تغییر دادم و از nvarchar به int تغییرشان دادم مقادیر s% رو به d% تغییر و دستور Quotedstr رو هم برداشتم ولی باز هم همان پیغام رو میده

داوود
چهارشنبه 27 مهر 1384, 19:31 عصر
میشه یکی جواب بده لطفا.......

Naficy
جمعه 29 مهر 1384, 06:23 صبح
یه احتمال اینه که مقدار داخل editbox ها عدد نباشد. (و باید بدونید یک رشته خالی یا همون ('') عدد محسوب نمی شه)

پی نوشت: کلا می گم. کاش پیغام خطا رو به جای تصویر گذاشته بودین. چون این آخر وقتیه(!!) هر چی روش زدم تصویر رو نیاورد که یه بار دیگه ببینمش!! :لبخند:

Naficy
شنبه 30 مهر 1384, 06:13 صبح
اینبار موفق شدم پیغام رو ببینم! بی خیال صحبت قبلی من شوید.
شما از SqlServer استفاده می کنید نه؟ بد نیست یه مقدار ساده ی رشته ای درون عبارت filter بذارین و امتحان کنین جواب می ده یا نه. (منظورم اینه که از توابع format و ... استفاده نکنین و یه رشته ساده بنویسین)