delphi4arab منتديات دلفي للعرب

نسخة كاملة : Firebird boolean type
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

الجميع يعلم بان قواعد بيانات FireBird لا توفر النمط Boolean على الاقل ليس قبل الاصدار الثالث

لكن يمكنك ان تقوم بذلك بكل سهولة و يسر باستخدام domain
PHP كود :
CREATE DOMAIN D_BOOLEAN AS Char
  CHECK 
(VALUE IN ('T', 'F')); 

لكن ليس من المعقول استخدام حرف T او F للدلالة على True او False

لعرض القيم عرض ما نريد يمكن اتسخدام الحدث OnGetText للـ Field سيتم عرض Oui بدل T في مكون DBComboBox مثلا
PHP كود :
procedure TDM.cds_TestGetText(Sender: TField;
  var 
Text: string; DisplayText: Boolean);
begin
  
if Sender.AsString[1] = 'T' then Text := 'Oui';
  if 
Sender.AsString[1] = 'F' then Text := 'Non';
end; 

لحفظ البيانات نسستخدم OnSetText
PHP كود :
procedure TDM.cds_TestSetText(Sender: TField;
  const 
Text: string);
begin
  
if Text = 'Non' then Sender.AsString := 'F';
  if 
Text = 'Oui' then Sender.AsString := 'T';
end; 

دريس لتكسير الملل اليومي Big Grin
و السلام عليكم و رحمة الله
لم أجرب Firebird من قبل ..
لكن من الأفضل استخدام 1 للدلالة على True و 0 للدلالة على False مثل دلفي وأغلب لغات البرمجة تماما :

PHP كود :
B:=Boolean(0);//B=False
B:=Boolean(1);//B=True 
:::::
PHP كود :
if Boolean(Sender.AsInteger[1] ) then Text := 'Oui'; 
وعليكم السلام ورحمة الله
بارك الله فيكما
يوجد صلة بهذا هنا

http://www.delphi4arab.net/forum/showthr...p?tid=4245

http://delphi4arab.net/forum/showthread.php?tid=6226
السلام عليكم

نعم اخي SMP3 يمكنك ذلك في هذه الحالة :
PHP كود :
CREATE DOMAIN BOOLEAN
AS SMALLINT 
CHECK 
(value in (0, 1)); 

+

PHP كود :
if Boolean(Sender.AsInteger[1] ) then Text := 'Oui'; 

الاصح يبدو انك لم تجرب الكود :p يجب ان تجتهد اكثر امزح فقط ....

PHP كود :
if Boolean(Sender.AsInteger) then Text := 'Oui'; 

استخدمت [] للوصول الى الحرف الاول من السلسلة النصية لمقارنتها مع حرف char لانه كما تعلم لا يمكن مقارنة نمط string مع char ...

بارك الله فيك اخ mobile على الروابط