السلام عليكم
كيف يتم الترقيم التلقائي في قاعدة المعطيات Absolute
لنفرض انا لدينا جدول به أسماء الموظفين
نضيف عمود به الرقم التسلسلي للموظفين
كيف يتم الترقيم التسلسلي للموظفين وتكون اظافة الرقم تلقائيا عند كل اظافة سجل اي موظف جديد
وعند حذف موظف يتم التصحيح تلقائيا وشكرا .
السلام عليكم الترقيم التلقائي لا يتم تصحيحه ...
أخي ليس عندي فكرة عن عملية الترقيم التلقائي بقاعدة البيانات
أبحث عن الطريقة لتعلم ذلك
لا اقصد التصحيح
اعني يأخذ الترتيب التلقائي بعد الحذف
قمت بتجريب هذه الدالة في زر الاظافة لكن مازال عندي مشكل
كود :
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;
السلام عليكم لا استخدم Absolute Database و الا كنت ساعدتك ربما هذا يفيدك
PHP كود :
http://www.componentace.com/last-auto-inc-delphi.htm
السلام عليكم و رحمة الله تعالى و بركاته
أخي اذا اردت الترقيم التلقائي موجود نوع من البيانات -type of data- وهو AutoInc يقوم بالترقيم التلقائي
أما إذا أردت اضافة شيء للترقيم مثلا السنة 19/0001 فهنا عليك بإضافة دالة تقوم بذلك
بالتوفيق
أنا أستعمل هذا الكود
حاول التغيير فيه حسب ماتراه مناسبا لك
كود :
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;
شكرا أخي على تنويه
وهل ينطبق ذلك على قاعدة بيانات من نوع Absolute
لقد غيرته في قاعدة بيانات الى AutoInc
لكن لم ينجح الأمر ...
مثال مرفق على ذلك
وعليكم السلام هذه دالة استخدمتها لترقيم الفواتير حسب السنة
وكملاحظة فقط عند حذف سجل يجب ان يكون السجل الاخير فقط لتعمل الدالة بفعالية لتفادي التكرار
PHP كود :
function Get_Bill_In_NUM(myDate: TDateTime): ShortString;
var
sltb: TSQLIteTable;
Year: Word;
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;
الصورة المرفقة توضح طريقة عمل الدالة حبث عند تغيير التاريخ يتغير الترقيم
شكرا جزيلا لكم جميعا
تم ترقيم القاعدة بنجاح كما قال الأخ makhlouf
لكن بقيت المشكلة عند حذف سجل الجدول لا يواصل الترتيب التلقائي بل يتخطى الرقم المحذوف
ما هو حل مشكلة تعديل الارقام بعد الحذف
(15-04-2019, 06:26 PM)فارس المطر كتب : [ -> ]شكرا أخي على تنويه
وهل ينطبق ذلك على قاعدة بيانات من نوع Absolute
لقد غيرته في قاعدة بيانات الى AutoInc
لكن لم ينجح الأمر ...
مثال مرفق على ذلك
1- لا يمكن تغيير الحقل AutoInc
2- أضف حقل ترقيم من إنشائك الذي سوف يقع عليه التغيير ( حذف تغيير تبديل .. ) الذي سميته أنا
[size=small]id[/size]
[size=small]3- غير adotable بـ Absolute[/size]