delphi4arab منتديات دلفي للعرب
Firebird boolean type - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : دروس دلفي للمبتدئين (https://delphi4arab.net/forum/forumdisplay.php?fid=13)
+--- الموضوع : Firebird boolean type (/showthread.php?tid=5488)



Firebird boolean type - S.FATEH - 26-08-2013

السلام عليكم

الجميع يعلم بان قواعد بيانات 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 boolean type - SMP3 - 26-08-2013

لم أجرب 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'; 



Firebird boolean type - mobile - 26-08-2013

وعليكم السلام ورحمة الله
بارك الله فيكما
يوجد صلة بهذا هنا

http://www.delphi4arab.net/forum/showthread.php?tid=4245

http://delphi4arab.net/forum/showthread.php?tid=6226


Firebird boolean type - S.FATEH - 26-08-2013

السلام عليكم

نعم اخي 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 على الروابط