كيف يتم الترقيم التلقائي لعمود جدول في قاعدة المعطيات Absolute
#1
السلام عليكم

كيف يتم الترقيم التلقائي في قاعدة المعطيات Absolute

لنفرض انا لدينا جدول به أسماء الموظفين

نضيف عمود به الرقم التسلسلي للموظفين

كيف يتم الترقيم التسلسلي للموظفين  وتكون اظافة الرقم تلقائيا عند كل اظافة سجل اي موظف جديد

وعند حذف موظف يتم التصحيح تلقائيا وشكرا .
الرد
#2
السلام عليكم الترقيم التلقائي لا يتم تصحيحه ...
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#3
أخي ليس عندي فكرة عن عملية الترقيم التلقائي بقاعدة البيانات
أبحث عن الطريقة لتعلم ذلك

لا اقصد التصحيح
اعني يأخذ الترتيب التلقائي بعد الحذف

قمت بتجريب هذه الدالة في زر الاظافة لكن مازال عندي مشكل
كود :
function code_suiv(x:string):string;
var y,c:string; t,i:integer;
begin
y:=inttostr(strtoint(x)+1);
t:=length(y);
c:='';
for i:= 1 to length(x)-t do
c:=c+'0';
code_suiv:=c+y;
end;

procedure TForm4.BitBtn1Click(Sender: TObject);
var x:string;
begin
ABSTable1.Last;
x:= ABSTable1.FieldValues['N'];
ABSTable1.Insert;
ABSTable1.FieldValues['N']:=code_suiv(x);

end;
الرد
#4
السلام عليكم لا استخدم Absolute Database و الا كنت ساعدتك ربما هذا يفيدك
PHP كود :
http://www.componentace.com/last-auto-inc-delphi.htm 
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 1 user says قال شكرا ل S.FATEH على المشاركة المفيدة
  • فارس المطر
الرد
#5
السلام عليكم و رحمة الله تعالى و بركاته
أخي اذا اردت الترقيم التلقائي موجود نوع من البيانات -type of data- وهو AutoInc يقوم بالترقيم التلقائي
أما إذا أردت اضافة شيء للترقيم مثلا السنة 19/0001 فهنا عليك بإضافة دالة تقوم بذلك
بالتوفيق
[-] كل من 1 user says قال شكرا ل makhlouf على المشاركة المفيدة
  • فارس المطر
الرد
#6
أنا أستعمل هذا الكود
حاول التغيير فيه حسب ماتراه مناسبا لك
Smile
كود :
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:=0;
with adoTable1 do
begin
  First;
  While Not EOF do
  begin
  edit;
  Inc(i);
   adotable1id.Value:=i;
   Next;
  end;

end;

end;
صدقة العلم تعليمه
[-] كل من 1 user says قال شكرا ل Mustapha29 على المشاركة المفيدة
  • فارس المطر
الرد
#7
شكرا أخي على تنويه

وهل ينطبق ذلك على قاعدة بيانات من نوع Absolute

لقد غيرته  في قاعدة بيانات الى AutoInc

لكن لم ينجح الأمر ...  

مثال مرفق على ذلك


الملفات المرفقة
.rar   Num_Auto.rar (الحجم : 53.01 KB / التحميلات : 11)
الرد
#8
وعليكم السلام هذه دالة استخدمتها لترقيم الفواتير حسب السنة
وكملاحظة فقط عند حذف سجل يجب ان يكون السجل الاخير فقط لتعمل الدالة بفعالية لتفادي التكرار

PHP كود :
function Get_Bill_In_NUM(myDateTDateTime): ShortString;
var
 sltbTSQLIteTable;
 YearWord;
begin
 Year 
:= YearOf(myDate);
   // رقم السلع الداخلة
 sltb := SQLiteDatabase.GetTable('select count(*) as _count from bills_in where date like "%' inttostr(Year) + '"');
 try
   if sltb
.Count 0 then
     Result 
:= IntToStr(Year) + '/' + (inttostr(sltb.FieldAsInteger(sltb.FieldIndex['_count']) + 1))
   else
     Result 
:= IntToStr(Year) + '/' + ('1');

 finally
   sltb
.Free;

end;
 end


الصورة المرفقة توضح طريقة عمل الدالة حبث عند تغيير التاريخ يتغير الترقيم


الملفات المرفقة
.jpg   2019-04-15_190713.jpg (الحجم : 283.23 KB / التحميلات : 5)
[-] كل من 1 user says قال شكرا ل onexite على المشاركة المفيدة
  • فارس المطر
الرد
#9
شكرا جزيلا لكم جميعا

تم ترقيم القاعدة بنجاح كما قال الأخ makhlouf

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

ما هو حل مشكلة تعديل الارقام بعد الحذف
الرد
#10
(15-04-2019, 06:26 PM)فارس المطر كتب : شكرا أخي على تنويه

وهل ينطبق ذلك على قاعدة بيانات من نوع Absolute

لقد غيرته  في قاعدة بيانات الى AutoInc

لكن لم ينجح الأمر ...  

مثال مرفق على ذلك

1- لا يمكن تغيير الحقل AutoInc 
2- أضف حقل ترقيم من إنشائك الذي سوف يقع عليه التغيير ( حذف تغيير تبديل .. ) الذي سميته أنا [size=small]id[/size]
[size=small]3- غير adotable بـ  Absolute[/size]
صدقة العلم تعليمه
[-] كل من 1 user says قال شكرا ل Mustapha29 على المشاركة المفيدة
  • فارس المطر
الرد


التنقل السريع :


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف