delphi4arab منتديات دلفي للعرب

نسخة كاملة : key auto increment
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2

فاتيهاري

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

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

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

hanipino
حلك ينجح فقط مع التسع الاوائل
إقتباس :حلك ينجح فقط مع التسع الاوائل .
لم انتبه 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; 
ربما تفى بالغرض .

hanipino
هذا احسن من السابق لكن لايزال بحاجة لترتيب
انظر مثل الو كان i يساوي 101 سيدخل في i >=10
هكذا ربما زاد تحسنا . 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; 

hanipino
أحسن لكن لاحظ جيدا هناك اوامر مكررة يمكن اختصارها ليصبح الكود اصغر
اضن انه يوجد الان نوعا ما . اختصار . 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; 

جيد، لكن يزال هناك امكانية اختصار
الصفحات : 1 2