key auto increment
#1
السلام عليكم و رحمة الله و بركاته
كيف يمكنني جعل المفتاح الرئيسي مثلا رقم البضاعة يبدو من الشكل التالي :
Ar 0001
و كلما اضفت بضاعة جديدة تاخد الرقم ar 0002
...الخ
شكرا
الرد
#2
السلام عليكم و رحمة الله و بركاته :
أهلا و سهلا بك بمنتدانا الحبيب .

العبار النصية Ar001 يعني 'Ar001' تكافئ : 'Ar'+'001' و بالتالي يمكن الإحتفاظ بالشطر الأول ، و الثاني يتزايد حسب طبيعة برنامجك ، يعني إما يقوم المستخدم بإدخاله و بالتالي تحجز له مثلا Edit أو غير ذلك ، فالأمر يعود إليك . و الأمر واسع و هذه فكرة بسيطة جدا .

و شكرا.
الرد
#3
ربما ينجح هدا
كود :
procedure TForm1.Table1CalcFields(DataSet: TDataSet); begin Table1['Code_Matier']:='ar000'+inttostr(Dataset.RecNo); end;
الرد
#4

hanipino
حلك ينجح فقط مع التسع الاوائل
الرد
#5
إقتباس :حلك ينجح فقط مع التسع الاوائل .
لم انتبه Smile
PHP كود :
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
var
i:Integer;
begin
i
:=(DataSet.RecNo);
if 
i <=10   then
Table1
['Code_Matier']:='Ar000'+inttostr(Dataset.RecNo);
if 
i >=10   then
Table1
['Code_Matier']:='Ar00'+inttostr(Dataset.RecNo);
if 
i >=100  then
Table1
['Code_Matier']:='Ar0'+inttostr(Dataset.RecNo);
if 
i >=1000 then
Table1
['Code_Matier']:='Ar'+inttostr(Dataset.RecNo);
end; 
ربما تفى بالغرض .
الرد
#6

hanipino
هذا احسن من السابق لكن لايزال بحاجة لترتيب
انظر مثل الو كان i يساوي 101 سيدخل في i >=10
الرد
#7
هكذا ربما زاد تحسنا . Smile
PHP كود :
procedure TForm1.table1CalcFields(DataSet: TDataSet);
var
i:Integer;
begin
i
:=(DataSet.RecNo);
if (
i <10) then
Table1
['Code_Matier']:='Ar000'+inttostr(Dataset.RecNo);
if (
i >=10)  and (i<100) then
Table1
['Code_Matier']:='Ar00'+inttostr(Dataset.RecNo);
if (
i >=100) and (i<1000)  then
Table1
['Code_Matier']:='Ar0'+inttostr(Dataset.RecNo);
if (
i >=1000) then
Table1
['Code_Matier']:='Ar'+inttostr(Dataset.RecNo);
end; 
الرد
#8

hanipino
أحسن لكن لاحظ جيدا هناك اوامر مكررة يمكن اختصارها ليصبح الكود اصغر
الرد
#9
اضن انه يوجد الان نوعا ما . اختصار . Smile

PHP كود :
procedure TForm1.table1CalcFields(DataSet: TDataSet);
var
i:Integer;
begin
i
:=(DataSet.RecNo);
case 
i of
 0..9
:Table1['Code_Matier']:='Ar000'+inttostr(i);
 
10..99:Table1['Code_Matier']:='Ar00'+inttostr(i);
 
100..199:Table1['Code_Matier']:='Ar0'+inttostr(i);
end;
 if 
i>=1000 then Table1['Code_Matier']:='Ar'+inttostr(i);
end; 
الرد
#10

جيد، لكن يزال هناك امكانية اختصار
الرد


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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم