PDA

View Full Version : نحوه خالی کردن فیلد



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

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

Tiam121
دوشنبه 21 اسفند 1391, 15:28 عصر
مقدار فیلد رو برابر یه رشته خالی قرار بده
Adotable.FieldByName('Amanat').AsString:=''

SELECT ID,Name,Amanat FROM Info WHERE Amanat <>''

اینو امتحان کن.ممکنه بخاطر نوع ذخیره رشته خالی توی دیتابیس باشه

Tarrah
دوشنبه 21 اسفند 1391, 17:42 عصر
بازهم همون مشکل پیش اومد

samani
سه شنبه 22 اسفند 1391, 08:19 صبح
مشکل اینجاست که وقتی شخص کتاب رو پس می ده با دستور Adotable.FieldByName('Amanat').AsString:=EmptyStr تو دلفی فیلد رو خالی می کنم
شما براي Null كردن فيلد از اين دستور بايد استفاده كنيد

Adotable.FieldByName('Amanat').AsVariant := Null

Mahmood_M
سه شنبه 22 اسفند 1391, 08:50 صبح
برای راحتی کار فیلد رو از نوع عددی قرار بدید و مثلا مقدار 1 رو برای "امانت داده شده" و مقدار 0 رو برای " موجود در کتابخانه " در نظر بگیرید

Tarrah
چهارشنبه 23 اسفند 1391, 16:13 عصر
با این دستور مشکل حل شد. ممنون
SELECT ID,Name,Amanat FROM Info WHERE LEN(Amanat) > 0