key auto increment
#11
زاد الاختصار نوعا ما . Smile سؤواصل ... .
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; 
الرد
#12
لاتزال inttostr مكررة، يمكن استخدامها مرة فقط
الرد
#13
... ضهرت مرة واحدة فقط .Smile
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; 
الرد
#14
نيابة على الأخ . بارك الله فيك يا أستاذ .
الرد
#15
hanipino
لايزال هناك تكرار "Ar"
الرد
#16
السلام عليكم .
تخلصنا منها (Ar) .Smile

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; 
الرد
#17
السلام عليكم ورحمة الله
هنالك حل آخر باستعمال 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;
بالتوفيق إن شاء الله
الرد
#18
السلام عليكم هذا الإجراء شغال ومجرب 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;
بالتوفيق
الرد
#19
hinalyna كتب :هذا الإجراء شغال ومجرب 100%
Big Grin عندما اشاهد تلك العبارة اكون متاكد من العكس، لا شيئ مجرب 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]
الرد


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


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