السلام عليكم

اقوم ببرمجة برنامج بسيط بواسطة دلفي لعميلة تسجيل مترشحين
السؤال هو كيفية تخزين رقم التسجيل بطريقة اوتوماتيكية بحيث تكون
تركيبة الرقم بهذا الشكل As130000 بحيث الارقام الاربعة على اليسار موجودة دائما
التغيير يكون في اربع ارقام على اليمين فقط
مثلا لما اضغط على زر تسجيل يسجل مترشح واحد رقمهAs130001
ولا يجب تكرار الرقم نفسه ، الرقم الثاني سيكون As130002 وهكذا
أخي الكريم لدي طريقة لك قد تعجبك لكن السؤال اين ستقوم بحفظ الملفات ؟
ثانياً كود :
PHP كود :
Var Fi : String;
Begin
SS:='Ad1300'+ StrToInt(Edit1.text+1);
حيث ان
SS // رقم السجل
Edit1 // اخر رقم وصلنا اليه
اذا كان عملك جدول Listview
او جدول من قاعدة بيانات
فقم بعمل معرفة العدد واختر الحقل المطلوب وضعه مكان Edit وستكون النتيجة واحدة
حلك صحيح لكن هذه الطريقة هنا يجب على المستعمل ان يدخل الرقم وانا لاارغب بذلك
ارغب ان تتم العملية اليا
مثلا اكتب كود في حدث الضغط على الزر بحيث انه يتحقق من حقل الذي يحتوي كود التسجيل فيقارن
ان وجد مثلا في السجل الاول الارقام الاربعة الاولى 0000 سيضيف اليها 1 ويضع القيمة 0001 في
السجل الثاني مع اضافة as13 على اليسار.
M_Mori2010 كتب :ثانياً كود :
PHP كود :
Var Fi : String;
Begin
SS:='Ad1300'+ StrToInt(Edit1.text+1);
أخي إذا كنت تستخدم جدول من قاعدة البيانات يمكن إضافة أمر بسيط جدا
PHP كود :
Var Fi : String;
Begin
edit1.text:=inttostr(table1.recordcount);
SS:='Ad1300'+ StrToInt(Edit1.text+1);
بالتوفيق أخي الكريم
إقتباس :حلك صحيح لكن هذه الطريقة هنا يجب على المستعمل ان يدخل الرقم وانا لاارغب بذلك
طيب اخي الكريم طلبك سهل كثيراً حيث اننا لو عرفنا الاتي
PHP كود :
Var I,n:Integer;
SS,SS1:String;
// على سبيل المثال Listview
Begin
i := listview.items.cont-1;
ss:=Form4.lv1.Items[i].Caption// هكذا نكون اخذنا اخر سجل طيب السؤال كيف نغير
SS1:=copy(ss,3); هكذا نكون تخطينا حرفين AS
n:=StrToInt(SS1)+1;//هكذا قمنا بأضافة رقم الى الرقم الذي ظهر في اخر السجل ومن بعد ما قمنا بحذف AS
الحين في الاضافة نقوم بأضافة
'As'+IntToStr(n) // ضع هذا في الاضافة وان شاء الله سيفي بالغرض
بالتوفيق
M_Mori2010 احسنت اخي فكرة رائعة جدا شكرا لك.
makhlouf شكرا جزيلا اخي العزيز بوركت.
السلام عليكم
أنت تقوم بتغيير القيمة وفق لعدد السجلات
ماذا لو قام المستخدم بحذف احد السجلات؟؟؟
سوف تحدث مشكلة وغالباً سوف يكون هناك تكرار لنفس الرقم !!!
m.rabee كتب :أنت تقوم بتغيير القيمة وفق لعدد السجلات
و عليكم السلام و رحمة الله تعالى و بركاته:
أخي معك حق و لكن يمكن حل الاشكال بطريقتين:
1- إما وضع دالة تقوم بإعادة ترتيب السجلات.
مثال: لدينا 4 سجلات و المستخدم حذف السجل رقم 2 في الحدث الحذف نضع الدالة التي تقوم بإعادة الترتيب أي رقم 3 يصبح 2 و 4 يصبح 3 و يحذف الرقم 4.
2- نقوم بمسح قيم الحقول فقط و نحذف السجل و عند الادراج يقوم بالبحث عن وجود سجل فارغ فيأخذ الرقم الفارغ في هذه الحالة الرقم 2 فارغ فالسجل الجديد يكون بالرقم 2.
و في الاخير أظن انه من غير الطبيعي أن يحذف الرقم 2 و قد سجل الرقم 3 و 4 مثلا برنامج فواتير من المستبعد ان يحذف الفاتورة 2 بعد ان سجل الفاتورتين 3 و 4 و لهذا يجب عدم تمكين المستخدم من حذف سجل سجل بعده سجلات.
مجرد فكرة في انتظار النقد
شكرا
السلام عليكم
إقتباس :مثال: لدينا 4 سجلات و المستخدم حذف السجل رقم 2 في الحدث الحذف نضع الدالة التي تقوم بإعادة الترتيب أي رقم 3 يصبح 2 و 4 يصبح 3 و يحذف الرقم 4.
هذا خطأ والله أعلم
فكيف تقوم بتغيير رقم الفاتورة وهي مرجع اساسي للبائع وللعميل؟؟
إقتباس :و في الاخير أظن انه من غير الطبيعي أن يحذف الرقم 2 و قد سجل الرقم 3 و 4 مثلا برنامج فواتير من المستبعد ان يحذف الفاتورة 2 بعد ان سجل الفاتورتين 3 و 4 و لهذا يجب عدم تمكين المستخدم من حذف سجل سجل بعده سجلات.
بل هو احتمال وارد جداً وامكانية الحذف بعد تسجيل الفاتورة يجب ان تكون موجودة وهي كذلك فعلاً في أشهر البرامج!!
بالطبع يجب ان تكون هناك صلاحيات للمستخدمين فليس من الطبيعي ان كل المستخدمين لديهم صلاحية حذف أي فاتورة
يمكنك استخدام AUTO INCREMENT Field
ولزيادة عدد الاصفار استخدم
كود :
function AddLeadingZeroes(const aNumber, Length : integer) : string;
begin
result := SysUtils.Format('%.*d', [Length, aNumber]) ;
end;
كود :
Usage:
AddLeadingZeroes(2005, 10) ;
كود :
result in a '0000002005' string value.
هل يمكن استعمال دالة تكرار ربيت repeat