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

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : triggers في Firebird (/showthread.php?tid=7652)

الصفحات: 1 2


triggers في Firebird - bassem_43 - 25-03-2016

السلام عليكم
لدي قاعدة بيانات  Firebird متصلة ببرنامجي باستخدام مكونات Dbexpress ولدي جدول في قاعدة البيانات اسمه CABINET وفيه  مفتاح رئيسيNUM_MED من نوع INTEGER حاولت جعله يزداد تلقائيا عن طريق trigger فيMaestro  Firebird   لكن عند تنفيد البرنامج لا يزداد حقل المفتاح تلقائيا وتظهر رسالة الخطا التالية 
impossible focaliser une fenetre désactivée ou invisible
ولا يمكن ادخال معلومات بعد دلك  الا ان ادخلت رقم الحقل NUM_MED   يدويا 
trigger مكتوب هكدا :
PHP كود :
BEGIN
  IF 
(NEW.NUM_MED IS NULL) THEN
  NEW
.NUM_MED = GEN_ID(GEN_CABINET_ID,1);
END 
فما الحل برايكم ؟؟

هدا هو كود trigger  كاملا :
PHP كود :
--Trigger: CABINET.CABINET_BI

--DROP TRIGGER CABINET_BI;

SET TERM ^ ;

CREATE TRIGGER CABINET_BI FOR CABINET
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF 
(NEW.NUM_MED IS NULL) THEN
  NEW
.NUM_MED = GEN_ID(GEN_CABINET_ID,1);
END^

SET TERM ; ^ 



RE: triggers في Firebird - لؤي - 25-03-2016

السلام عليكم

ألقي نظرة:

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


RE: triggers في Firebird - bassem_43 - 25-03-2016

شكرا مشرفنا لؤي
لاحظت موضوعك لكن انا استعمل firebird maestro كما قلت و الجينيرايثر موجود و معرف هكدا من قبل :
CREATE SEQUENCE GEN_CABINET_ID;
لكن دون جدوى لا ادري ما دا ينقص


RE: triggers في Firebird - محمد عبد العزيز - 26-03-2016

السلام عليكم

اترك الحقل فارغ ولا تدخله يدوبا
في الDataset المستخدم ابحث عن الخاصية Required وغيرها الى false
لا تنسى استدعاء Refresh بعد Post لترى قيمة الحقل



RE: triggers في Firebird - bassem_43 - 26-03-2016

شكرا استاد عبد العزيز على المتابعة
للاسف لم ينجح الامر
تاتي رسالة تخبرك بضرورة ادخال قيمة المفتاح الرئيسي


RE: triggers في Firebird - محمد عبد العزيز - 27-03-2016

جرب ما يلي
اختر مكون الDataSet/Provider اذهب للحقول Fields وقم باضافتها كلها ADD
ثم اختر الحقل  NUM_MED وغير الخاصية Required الى
False


RE: triggers في Firebird - bassem_43 - 27-03-2016

بتغيير القيمة الموجودة في SQLDataSet وعند اختيار الحقل NUM_MED وتغير الخاصية Required الىFalse يمكن ادخال بيانات جديدة لكن المفتاح لا ياخد اي قيمة


RE: triggers في Firebird - محمد عبد العزيز - 28-03-2016

إقتباس :يمكن ادخال بيانات جديدة لكن المفتاح لا ياخد اي قيمة
ياخذ قيمة لكنها لا تظهر، عليك باستدعاء Refresh بعد Post


RE: triggers في Firebird - bassem_43 - 28-03-2016

PHP كود :
اخيرا نجح الامر يا استاد عبد العزيز بعد بعض التعديلات شكرا لك

DataModule1
.dsCabinet.Post;
 DataModule1.dsCabinet.Close;
 
 DataModule1.dsCabinet.Open;
 
 DataModule1.dsCabinet.Refresh; 



RE: triggers في Firebird - Lam.Abdeldjalil - 31-03-2016

السلام عليكم

إذا كنت تستعمل devart توجد خاصية Options->DefaultValues اجعلها True
Firedac فيها خاصية مشابهة