المشاركات : 378
المواضيع 44
:
: 6
الإنتساب : Feb 2008
زاد الاختصار نوعا ما .

سؤواصل ... .
PHP كود :
procedure TForm1.table1CalcFields(DataSet: TDataSet);
var
i:Integer;
Str:String;
begin
i:=(DataSet.RecNo);
case i of
0..9:Str:='Ar000'+inttostr(i);
10..99:Str:='Ar00'+inttostr(i);
100..199:Str:='Ar0'+inttostr(i);
end;
if i>=1000 then Str:='Ar'+inttostr(i);
Table1['Code_Matier']:=Str;
end;
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
لاتزال inttostr مكررة، يمكن استخدامها مرة فقط
المشاركات : 378
المواضيع 44
:
: 6
الإنتساب : Feb 2008
... ضهرت مرة واحدة فقط .
PHP كود :
procedure TForm1.table1CalcFields(DataSet: TDataSet);
var
i:Integer;
Str,Y:String;
begin
i:=(DataSet.RecNo);
Y:=inttostr(i);
case i of
0..9:Str:='Ar000'+Y;
10..99:Str:='Ar00'+Y;
100..199:Str:='Ar0'+Y;
end;
if i>=1000 then Str:='Ar'+Y;
Table1['rec']:=Str;
end;
المشاركات : 429
المواضيع 28
:
: 0
الإنتساب : May 2008
نيابة على الأخ . بارك الله فيك يا أستاذ .
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
hanipino
لايزال هناك تكرار "Ar"
المشاركات : 378
المواضيع 44
:
: 6
الإنتساب : Feb 2008
السلام عليكم .
تخلصنا منها (Ar) .
PHP كود :
procedure TForm1.table1CalcFields(DataSet: TDataSet);
Const L = 'Ar';
var
i:Integer;
Str,Y:String;
begin
i:=(DataSet.RecNo);
Y:=inttostr(i);
case i of
0..9:Str:=L+'000'+Y;
10..99:Str:=L+'00'+Y;
100..199:Str:=L+'0'+Y;
end;
if i>=1000 then Str:=L+Y;
Table1['Code_Matier']:=Str;
end;
المشاركات : 316
المواضيع 64
:
: 1
الإنتساب : Apr 2009
السلام عليكم ورحمة الله
هنالك حل آخر باستعمال Query
كود :
select count(code_cli)+1 as Code_Client
from client
كود :
var
S:string;
begin
ABSQuery1.Open;
S:=ABSQuery1.FieldValues['Code_Client'];
ABSQuery1.Close;
DBEdit1.Text:='CLI'+S;
end;
بالتوفيق إن شاء الله
المشاركات : 24
المواضيع 10
:
: 0
الإنتساب : Oct 2014
السلام عليكم هذا الإجراء شغال ومجرب 100%
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if Table1.RecordCount=0 Then
Maskedit1.Text:='Ar-001'
ELSE
begin
if (Table1.RecordCount+1<10) then
Maskedit1.Text:='Ar-00'+inttostr(Table1.RecordCount+1) else
Maskedit1.Text:='Ar-0'+inttostr(Table1.RecordCount+1);
if (Table1.RecordCount+1>=100) then
Maskedit1.Text:='Ar-'+inttostr(Table1.RecordCount+1);
end;
بالتوفيق
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
hinalyna كتب :هذا الإجراء شغال ومجرب 100%
عندما اشاهد تلك العبارة اكون متاكد من العكس، لا شيئ مجرب 100%، هناك دائما... احزر!
لا ينبغي الاعتماد على RecordCount
تخيل لدينا اربع سجلات/أسطر بقاعدة البيانات
Ar-001
Ar-002
Ar-003
Ar-004
حذفنا الثاني فاصبح لدينا
[COLOR="black"]Ar-001
Ar-003
Ar-004
الان عند اضافة واحد جديد وفق للكود الذي كتبته
Table1.RecordCount+1 تساوي
1+3 أي
4 ومنه
Ar-004 وهذا خطأ
[/COLOR]