الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

AutoNumber in InterBase

بدأه badry2000_2000 في 27 يناير 2010 · 10 رد · 1,709 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ADSL.rar

تم تعديل هذه المشاركة بواسطة badry2000_2000 في 27 يناير 2010 في 13:25

#2

الأخ الكريم

الترقيم التلقائي في قواعد بيانات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 وتقوم بالتعليم على أن الحقل هو من نوع رقم تسلسلي ويقوم البرنامج لوحده بصنع التريكر والمولد بشكل أتوماتيكي وإسناده للحقل

حكمت سراج الدين

triger.txt

#3

اشكرك للمساعدة و لكن لم يفلح الامر

#4

الأخ الكريم

الملف الذي أرفقه لك عبارة عن قاعدة بيانات فيها 3 جداول أثنين منهما يحث فيهما رقيم تلقائي بسبب المولدات والتريغرات

أرجو ان يوضح الصورة ويمشي الحال عندك

على كل حال لاتترد في طلب المساعدة وأنصحك باستعمال الفير بيرد بدل من الانتربيس والذي هو نفس المحرك ولكنه مفتوح المصدر

أنا في طور إعداد درش شامل وسأنتهي منه إن شاء الله بعد اللقاء هواة التقنية في سورية

حكمت سراج الدين

SAL.rar

#5

الف شكر علي هذا المجهود

وجد مشكلة عندما اقوم بالاضافة لريكورد جديد يريد مني ان اقوم بادخال الترقيم

فما العمل

My Pictures.rar

تم تعديل هذه المشاركة بواسطة badry2000_2000 في 7 فبراير 2010 في 22:43

#6

الحل بسيط جدا

ضع أي رقم تريد قبل الحفظ وليكن 21321432 وسوف يولد رقم متزايد لأن التريغر في قاعدة البيانات سوف يتجاهل الرقم ويولد رقم من عنده اعتمادا على آخر رقم وصل إليه

ولكن عندما لا تدخل رقم تصبح القيمة خالية وأنت معرف حقل من النمط not null وبالتالي سوف يرفض تسجيل الرقم

إذا بالمختصر ضع أي رقم تريده برمجياً وليكن ثابت طوال البرنامج في هذا الحقل وسوف ترى أن الجدول لن يعيره أي إنتباه وسيعتمد على رقم خاص به ووجود الرقم الذي تضعه شكلي ليس أكثر

أعلمني بالنتيجة

حكمت سراج الدين

#7

سوف ارفق مثال و ياريت تصصح لي اخطائيشكرا لتعاونك

tset.rar

#8

الأخ الكريم

دقق التريغرز الموجودة في قاعدة البيانات الخاصة بك

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)

جرب وردلي جواب

حكمت سراج الدين

#9

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

#10

نقدر مجهود العظيم

أحاول أن أنتقل إلى الفيربيرد كما نصحت فهل لك أن تكمل الجميل الكبير وتكتب لنا كيف التحول من باردوكس

إلى الفايربيرد خطوة خطوة وكيف نتعامل معها وكيف نحول ملفات البرادوكس إلى الفيربيرد ولكم جزيل الشكر والعرفان

#11

والله العظيم عبقرى أشكرك

مواضيع مشابهة