با سلام
من یک Table دارم که محتویات یک فیلد آن 0 یا 1 میباشد و 0=دارد و 1=ندارد و سوال من این است که چگونه یک select بنویسم که بجای عدد 0 کلمه 'دارد' را نشان دهد و بجای 1 کلمه 'ندارد' را نشان دهد .
با تشکر ...
با سلام
من یک Table دارم که محتویات یک فیلد آن 0 یا 1 میباشد و 0=دارد و 1=ندارد و سوال من این است که چگونه یک select بنویسم که بجای عدد 0 کلمه 'دارد' را نشان دهد و بجای 1 کلمه 'ندارد' را نشان دهد .
با تشکر ...
چند تا راه داری
1- با کوئری این کار رو بکنی
2- با calcField
3- اگه با DBGrid کار میکنی از خاصیت OnDrawColumnCell استفاده کنی
البته همه شون توضیح داده شده ولی هر کدومشون رو خواستی بگو
You never know what you can do until you try
و همچنین استفاده از رویداد های OnGetText و OnSetText از کلاس TField.
با سلام
دوست عزیز جناب آقای Mzjahromi با تشکر . من میخواهم با Query اینکار را انجام دهم
با تشکر
یه راه خیلی ساده اش اینه
Select Field1,Field2,...,'دارد' as Kind
from...
where KindField=1
union
Select Field1,Field2,...,'ندارد' as Kind
from...
where KindField=0
order by ...
ولی راههای دیگه ای هم وجود داره
آخرین ویرایش به وسیله mzjahromi : دوشنبه 22 خرداد 1385 در 08:52 صبح دلیل: این پست به دلیل تکراری بودن بطور خودکار ادغام شده است.
You never know what you can do until you try
دوست عزیزنوشته شده توسط mzjahromi
به سوال دوستمون یک نگاهی بکن در قبال مقادیری که توی فبلدهاش داره میخواد مقدار "دارد" و "ندارد" بگذارد
نوشته شده توسط سیروس مقصودی
خوب مشکلش کجاستنوشته شده توسط سید مسعود موحد
You never know what you can do until you try
ببینید دوست عزیز سوال شما کلیست!! اگه در دیتابیس فیلدی بنام Type (فیلد توضیح) دارید میتونید در زمان ورود اطلاعات در دیتابیس شرط کنید که اگه مقدار ورودی در DbEdit مربوطه جهت عدد 0 است عبارت ندارد به اون فیلد نسبت بده و اگه 1 است عبارت دارد.اونوقت کار شما خیلی راحت میشه و فقط کوئری رو روی فیلد Type مینویسید و جستجو عبارت مورد نظر شما رو برمیگردونه.اما اگه فیلدی برای نسبت دادن این عبارت ندارید در شرط قید کنید که اگه مقدار صفره عبارت ندارد و اگه 1 عبارت دارد رو به یه Edit نسبت بده و با هر بار پیمایش اونو در یک رکورد بنویسه و Edit رو پاک کنه.
فرض کنیم که حالت اول صحیح است و شما فیلدی بنام Type دارید و فیلد Num هم مربوط به عدد ورودی کاربر است و کاربر مقدار عدد را در DbEdit1 وارد میکند و DbEdit2 هم برای درج عبارت است.کد زیر رو در هنگام ذخیره بنویسید :
Table1.Open
Table1.Edit;
if DbEdit1.Text:='1' Then
Table1Type.AsString:='دارد';
Else Table1Type.AsString:='ندارد';
Table1.Post;
حالا با یه جستجو روی فیلد Num شرط رو قرار میدید و خروجی رو روی فیلد Type میگیرید :
Query1.Active:=FALSE;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * ');
Query1.SQL.Add('FROM Table1');
Query1.SQL.Add('WHERE (num LIKE ''%'+ EDIT1.TEXT+'%'') ');
Query1.ExecSQL;
Query1.Active:=TRUE;
حالا در یک Edit مقدار مورد نظر رو مینویسید .DbGrid مربوطه رو طوری طراحی میکنید که فقط یه فیلد Type رو داشته باشه حالا با زدن عدد 1 در DbGrid تمام رکوردهایی که مقدار آنها 1 است را بصورت دارد و 0 ها رو بصورت ندارد نمایش میدهد
امیدوارم که مطلب رو واضح توضیح داده باشم
موفق باشید
واقعا نیازی به این کارها نیست این مسئله به سادگی در دلفی پیشبینی شده با در نظر گرفتن امکان درج اطلاعات به این شکل....
فیلد رو از نوع ftBoolean تعریف کنید بعد در قسمت DisplayValues بنویسید : دارد;ندارد
البته این دیگه ربطی به Select نداره ولی خب وقتی نوشتی ADOQuery حتما میخوای تو دلفی کار کنی دیگه .
البته این نوع فیلد ربطی به دلفی نداره و فیلد های نوع Boolean مربوط به دیتابیس هاست و در تمام دیتابیس ها تعریف و بیش بینی شده استنوشته شده توسط ghabil
مجید جان دلبندم ، کدوم دیتابیسی برای تایپ فیلدهاش پیشوند ft میزاری؟ اصلا این نوع نامگذاری مخصوص دلفی هستش ، بعدش کدوم دیتابیسی DisplayValues داره روی فیلدهاش ؟
حتما با TField آشنا هستی ، TField یک FieldType داره (همون ft) که اگر از نوع ftBoolean بزاریش بهت DisplayValues رو میده که میتونی دوتا مقدار برای True و False بدی که بعدا همه جا این مقادیر رو کنترل میکنه چه در نمایش چه در ورود اطلاعات ...
حالا برای فیلدی که مقادیرش 0 و 1 هست هم میشه ftInteger استفاده کرد هم میشه ftBoolean استفاده کرد . ...
با این مقدمه یکبار دیگه جواب منو بخون بعد هم تستش کن ، بدک نیست.
راستی گفتی فیلد Boolean در همه دیتابیسها پیشبینی شده ، میشه بگی معادلش تو Oracle چیه ؟