PDA

View Full Version : مشکل با AdoTable.Filter



Saeid59_m
دوشنبه 15 مرداد 1386, 09:53 صبح
سلام

من این کد رو تو برنامه ام دارم . متغیر CodeMeli از نوع رشته است .



AdoTable1.Filter:='(CodeMeli = '''+CodeMeli+''') AND ((InListNo=3) OR (InListNo=5)) ';

اما ارور می ده ولی وقتی به شکلهای زیر می نویسم مشکلی نداره .




AdoTable1.Filter:='(CodeMeli = '''+CodeMeli+''') ';
AdoTable1.Filter:='((InListNo=3) OR (InListNo=5)) ';

اما این دوتا شرط با هم نمی سازن . مشکل چیه ؟

اینم ارور

zman123456
دوشنبه 15 مرداد 1386, 10:51 صبح
چون روش نوشتنش اشتباه هست عزیز.
این موضوع قبلا مطرح شده.جستجو کنید پیدا میشه.

Saeid59_m
دوشنبه 15 مرداد 1386, 10:56 صبح
چی رو باید جستجو کنم

zman123456
دوشنبه 15 مرداد 1386, 11:13 صبح
filter و همچنین delphi help البته منظورم اینکه توی کمک دلفی هم یک مثال عالی از این بحث زده.هم and داره و هم چند فیلدست

Saeid59_m
دوشنبه 15 مرداد 1386, 11:41 صبح
من هم راهنمای دلفی رو نگاه کردم و هم سایت رو جستجو کردم .
اما چیز بدرد بخوری توش نبود
فیلتر های زیادی درست کردم که با And ‌ترکیب می شوند ولی این یکی مثل اینکه با OR‌ مشکل داره به ارور یه نگاه بیاندازید

zman123456
دوشنبه 15 مرداد 1386, 12:04 عصر
فکر کنم از نوع codemelli باشه.از چه نوعی هست؟تو بانکتون چه نوعی است؟

Saeid59_m
دوشنبه 15 مرداد 1386, 12:24 عصر
فکر نمی کنم چون به اولین پست که نگاه کنید می بینید که وقتی شرط برای کد ملی نوشته شده به تنهایی مشکلی نداشته . همینطور برای قسمت دوم که فیلد InListNo‌ چک می شه . فقط زمانی مشکل بوجود می آید که می خواهیم آنها را با هم ترکیب کنیم .

Saeid59_m
دوشنبه 15 مرداد 1386, 14:50 عصر
با سلام

عزیز دل کد خط دوم کد خط اول را پاک می کند و برای همین Errorنمی دهد.
پس حتماً مشکل از کدی است که در خط اول می نویسی.
فیلد CodeMeli از چه نوعی است؟
موفق باشید

اینو که می دونم من دوتا رو که پشت سر هم نمی نویسم . این برای نمونه بود که نشون بدم با این دو حالت نوشتن ارور نمی ده ولی وقتی این دوتا شرط رو کنار هم با And می گذاریم ارور می ده !!

فیلد کد ملی هم رشته است .

FROZONE
دوشنبه 15 مرداد 1386, 15:23 عصر
ولی این یکی مثل اینکه با OR‌ مشکل داره به ارور یه نگاه بیاندازید
خسته نباشید
من کد داخل فیلتر رو با یک برنامه مشابه امتحان کردم ظاهرا مشکل زمانی ایجاد میشه که ما دو عملگر And و OR رو با هم در عبارت های فیلتر استفاده می کنیم . زمانیکه به جای And از OR و یا از دو OR داخل عبارت فیلتر از And استفاده میشه دیگه پیغام خطایی وجود نداره.

mzjahromi
دوشنبه 15 مرداد 1386, 16:52 عصر
اخطار:

اگر کسی جواب سوال رو بلد نیست لزومی نداره جواب بده
اگر هم کسی جواب سوال رو بلده بهتره محترمانه جواب بده
-----------------------------------------------------------------------
قانون شماره 3
کاربران سایت می بایست به هنگام ارسال پیغام در انجمن ها از عبارات مناسب استفاده نمایند.

قانون شماره 15
لطفاً در هنگام جواب دادن به سوالات، از به کار بردن الفاظ و عباراتی که باعث دلسردی کاربر سوال کننده می گردد خودداری نمایید. به خاطر داشته باشید که این سایت محل یادگیری است.

قانون شماره 16
تبدیل محیط علمی انجمن ها به محل حل اختلافات و بیان اظهار نظرهای شخصی ممنوع است.

Mahyaa
دوشنبه 15 مرداد 1386, 20:11 عصر
علتش اینه :
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q235892

Saeid59_m
سه شنبه 16 مرداد 1386, 07:24 صبح
علتش اینه :
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q235892

دوست عزیز واقعاً ممنونم
کدم رو به این شکل تغییر دادم و جواب گرفتم


AdoTable.Filter:='(InListNo = 3 AND CodeMeli = '+QuotedStr (CodeMeli)+') OR (InListNo = 5 AND CodeMeli = '+QuotedStr (CodeMeli)+')';


اشتباهی که من می کردم این بود که فکر کردم با پرانتز ها هم می شه برای SQL اولویت ایجاد کرد در صورتی که پرانتز در SQL‌ برای اولویت بندی استفاده نمی شود . (شاید هم از دسته گلهای ماکروسافت باشد)