السلام عليكم و رحمه الله و بركاتهالاخوة الافاضل لدي مشكلة في الترقيم التلقائي بالانتر بيز فسوف ارفع مثالا و كل ما هو مطلوب كيف عمل ترقيم تلقائي للحقل ID في اي جدول من الجداول
AutoNumber in InterBase
الأخ الكريم
الترقيم التلقائي في قواعد بياناتinterbase او firebird يتم داخل قاعد البيانات من خلال
1 - حقل من نوع integer
2- مولد أرقام
3- تريغر هذا نصه
CREATE TRIGGER %triggername% FOR %tablename%
BEFORE INSERT AS BEGIN
IF (NEW.%columnname% IS NULL) THEN NEW.%columnname% = GEN_ID(%seqname%, 1);
END
الفكرة العامة هي قبل إضافة سجل جديد يقوم التريغر بإضافة 1 لأخر قيمة وصل لها مولد الارقام ويسندها للحقل وبالتالي تكون قد حصلت على ترقيم تسلسلي
هناك طريقة أبسط من ذلك وهي من خلال بناء قواعد بياناتك على أحد البرنامجين ibexpert أو EMS FOR INTEBASE AND FIREBIRD وتقوم بالتعليم على أن الحقل هو من نوع رقم تسلسلي ويقوم البرنامج لوحده بصنع التريكر والمولد بشكل أتوماتيكي وإسناده للحقل
حكمت سراج الدين
اشكرك للمساعدة و لكن لم يفلح الامر
الأخ الكريم
الملف الذي أرفقه لك عبارة عن قاعدة بيانات فيها 3 جداول أثنين منهما يحث فيهما رقيم تلقائي بسبب المولدات والتريغرات
أرجو ان يوضح الصورة ويمشي الحال عندك
على كل حال لاتترد في طلب المساعدة وأنصحك باستعمال الفير بيرد بدل من الانتربيس والذي هو نفس المحرك ولكنه مفتوح المصدر
أنا في طور إعداد درش شامل وسأنتهي منه إن شاء الله بعد اللقاء هواة التقنية في سورية
حكمت سراج الدين
الف شكر علي هذا المجهود
وجد مشكلة عندما اقوم بالاضافة لريكورد جديد يريد مني ان اقوم بادخال الترقيم
فما العمل
تم تعديل هذه المشاركة بواسطة badry2000_2000 في 7 فبراير 2010 في 22:43
الحل بسيط جدا
ضع أي رقم تريد قبل الحفظ وليكن 21321432 وسوف يولد رقم متزايد لأن التريغر في قاعدة البيانات سوف يتجاهل الرقم ويولد رقم من عنده اعتمادا على آخر رقم وصل إليه
ولكن عندما لا تدخل رقم تصبح القيمة خالية وأنت معرف حقل من النمط not null وبالتالي سوف يرفض تسجيل الرقم
إذا بالمختصر ضع أي رقم تريده برمجياً وليكن ثابت طوال البرنامج في هذا الحقل وسوف ترى أن الجدول لن يعيره أي إنتباه وسيعتمد على رقم خاص به ووجود الرقم الذي تضعه شكلي ليس أكثر
أعلمني بالنتيجة
حكمت سراج الدين
الأخ الكريم
دقق التريغرز الموجودة في قاعدة البيانات الخاصة بك
IF (NEW.ID IS NULL) THEN
NEW.ID=GEN_ID(GEN_City_ID,1);
أي أن التريغرز لن يعمل إلا إذا كانت القيمة المعطاة فارغة null
إذا الحل ببساطة
قم بإلغاء السطر الأول بحيث يصبح التريغر
NEW.ID=GEN_ID(GEN_City_ID,1);
وبالتالي سوف يقوم بإضافة الرقم المتسلسل في حال إدخال أي قيمة تريد (لاحظ أن الحقل من نوع not null)
جرب وردلي جواب
حكمت سراج الدين
شكرا علي الرد السريع و تم تنفيز الامر في قاعدة البيلنلت و لكني احتاج ان تعدل في كود الفورم المرسل مع قاعدة البيانات اذا امكن و لك جذيل الشكر
نقدر مجهود العظيم
أحاول أن أنتقل إلى الفيربيرد كما نصحت فهل لك أن تكمل الجميل الكبير وتكتب لنا كيف التحول من باردوكس
إلى الفايربيرد خطوة خطوة وكيف نتعامل معها وكيف نحول ملفات البرادوكس إلى الفيربيرد ولكم جزيل الشكر والعرفان
والله العظيم عبقرى أشكرك