السلام عليكم و رحمة الله و بركاته
كيف يمكنني جعل المفتاح الرئيسي مثلا رقم البضاعة يبدو من الشكل التالي :
Ar 0001
و كلما اضفت بضاعة جديدة تاخد الرقم ar 0002
...الخ
شكرا
السلام عليكم و رحمة الله و بركاته :
أهلا و سهلا بك بمنتدانا الحبيب .
العبار النصية Ar001 يعني 'Ar001' تكافئ : 'Ar'+'001' و بالتالي يمكن الإحتفاظ بالشطر الأول ، و الثاني يتزايد حسب طبيعة برنامجك ، يعني إما يقوم المستخدم بإدخاله و بالتالي تحجز له مثلا Edit أو غير ذلك ، فالأمر يعود إليك . و الأمر واسع و هذه فكرة بسيطة جدا .
و شكرا.
ربما ينجح هدا
كود :
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
Table1['Code_Matier']:='ar000'+inttostr(Dataset.RecNo);
end;
hanipino
حلك ينجح فقط مع التسع الاوائل
إقتباس :حلك ينجح فقط مع التسع الاوائل .
لم انتبه
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
هكذا ربما زاد تحسنا .
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
أحسن لكن لاحظ جيدا هناك اوامر مكررة يمكن اختصارها ليصبح الكود اصغر
اضن انه يوجد الان نوعا ما .
اختصار .
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;
جيد، لكن يزال هناك امكانية اختصار