PDA

View Full Version : دستور sql مناسب؟



Tarrah
دوشنبه 21 اسفند 1391, 14:58 عصر
سلام
یه جدولی دارم که اطلاعات کتابها رو ثبت می کنه. یه فیلد Amanat داره که موقع ثبت اطلاعات کتاب جدید هیچ مقداری بهش نسبت داده نمیشه.
بعد اگه کسی کتاب رو امانت برد، اسمش تو فیلد Amanat ثبت میشه
تو این مرحله وقتی می خوام کتاب هایی رو که امانت بردن رو ببینم از کد زیر استفاده می کنم و درست کار می کنه.
SELECT ID,Name,Amanat FROM Info WHERE Amanat is not null

مشکل اینجاست که وقتی شخص کتاب رو پس می ده با دستور Adotable.FieldByName('Amanat').AsString:=EmptyStr تو دلفی فیلد رو خالی می کنم. وقتی دوباره می خوام کتاب هایی رو که امانت بردن رو ببینم از کد sql بالا استفاده می کنم ولی درست کار نمی کنه و همه کتاب هایی رو که یکبار امانت برده شدن بازهم نشون میده. با اینکه وقتی جدول رو نگاه می کنم فیلد Amanat خالیه. چطور می تونم مشکل رو حل کنم؟

veniz2008
چهارشنبه 23 اسفند 1391, 10:04 صبح
سلام
یه جدولی دارم که اطلاعات کتابها رو ثبت می کنه. یه فیلد Amanat داره که موقع ثبت اطلاعات کتاب جدید هیچ مقداری بهش نسبت داده نمیشه.
بعد اگه کسی کتاب رو امانت برد، اسمش تو فیلد Amanat ثبت میشه
تو این مرحله وقتی می خوام کتاب هایی رو که امانت بردن رو ببینم از کد زیر استفاده می کنم و درست کار می کنه.
SELECT ID,Name,Amanat FROM Info WHERE Amanat is not null

مشکل اینجاست که وقتی شخص کتاب رو پس می ده با دستور Adotable.FieldByName('Amanat').AsString:=EmptyStr تو دلفی فیلد رو خالی می کنم. وقتی دوباره می خوام کتاب هایی رو که امانت بردن رو ببینم از کد sql بالا استفاده می کنم ولی درست کار نمی کنه و همه کتاب هایی رو که یکبار امانت برده شدن بازهم نشون میده. با اینکه وقتی جدول رو نگاه می کنم فیلد Amanat خالیه. چطور می تونم مشکل رو حل کنم؟
سلام. دوست عزیز Null با رشته خالی تفاوت داره.
کد زیر مشکل شما رو حل میکنه (از تابع LEN استفاده کردم و فیلدهایی که طولشون بزرگتر از 0 هست رو برگشت دادم).

SELECT ID,Name,Amanat FROM Info WHERE LEN(Amanat) > 0
موفق باشید.

Tarrah
چهارشنبه 23 اسفند 1391, 16:12 عصر
بسیار ممنون
مشکلم حل شد