11-03-2020, 11:51 AM
(10-03-2020, 09:57 PM)medreg كتب : السلام عليكم ورحمة الله تعالى وبركاته
بارك الله فيكم اخي
هناك مشكل اخر وهو ان بعدما جربت الكود المعدل من طرفكم يعمل جيد الا انه يعمل على نفس السنة اما اذا غيرت السنة يبدأ بالرقم 1 للسنة الجديدة
لكن كل اضفت سجل جديد للسنة الجديدة يعيني رقم 1 اي لا يعطي الرقم الموالي
وبعدما فيرت نوع الحقل No_Brd كما اشرت في مداخلتك الى Smallint لا يقبل الرقم المضاف اليه السنة مثلا 001/2020 يعطيني رسالة خطأ
رسالة الخطأ هي كالتالي :
'001/2020' n'est pas une valeur entière correcte pour le champ 'No_Brd'
لا تقم بتغيير نوع الحقل ، إليك الكود التالي يتكون من function تعطيك الرقم الجديد ، و procedure للإضافة
كود :
function TForm2.GetNewNumero(Annee: Integer): string;
var
tan: string;
tNum,Err : integer;
tKey : variant;
PriorFilter: string;
PrierFiltered: Boolean;
begin
PriorFilter:= DM.Table1.Filter;
PriorFiltered:= DM.Table1.Filtered;
DM.Table1.Filter:= 'Annee=' + IntToStr(Annee);
DM.Table1.Filtered:= True;
DM.Table1.Last;
tan:= DM.Table2Br.FieldValues['Annee'];
tKey:= DM.Table1.fields[0].value;
if (tKey = NULL) or (copy(tKey, length(tKey)-3, 4)<>tan)then
tNum := 0
else
begin
val(copy(tKey, 1, 4), tNum, Err);
if Err<>0 then
tNum:= 0;
end;
Result:= Format('%4.3d/', [tNum+1]) + tan ;
DM.Table1.Filter:= PriorFilter;
DM.Table1.Filtered:= PriorFiltered;
end;
procedure TForm2.AddRecord;
var
NewNumero: string;
begin
NewNumero:= GetNewNumero(DM.Table2Br.FieldValues['Annee']);
DM.Table1.Append;
DM.Table1.FieldValues['No_Brd']:= NewNemoro;
end;
