![]() |
|
مشكلة تواجهني في عملية اضافة سجل - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : مشكلة تواجهني في عملية اضافة سجل (/showthread.php?tid=10697) الصفحات:
1
2
|
مشكلة تواجهني في عملية اضافة سجل - medreg - 08-03-2020 السلام عليكم ورحمة الله تعالى وبركاته المشكلة التي تواجهني هي عندما اضغط على زر اضافة وبدلا من ان يضيف الرقم الموالي يكرر نفس الرقم مع العلم انه لا تظهر هذه المشكلة الا بعد وصول عدد السجلات الى رقم 49 سجل الكود المستعمل هو كالاتي كود : var
tan,result : string;
tNum,Err : integer;
tKey : variant;
begin
DM.Table1.IndexName:='';
DM.Table1.Last;
tan := DM.Table2Br.FieldValues['Annee'];
tKey := DM.Table1.fields[0].value;
DM.Table1.Append;
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.FieldValues['No_Brd']:=result;
جزاكم الله عنا كل خيرRE: مشكلة تواجهني في عملية اضافة سجل - لؤي - 09-03-2020 و عليكم السلام جرب : PHP كود : DM.Table1.insert RE: مشكلة تواجهني في عملية اضافة سجل - ghostdz - 09-03-2020 وعليكم السلام ورحمة الله تعالى وبركاته بعد تجريب الكود الذي وضعته فإنه يقوم بإعطاء الرقم الموالي ( الرقم/السنة ) بشكل صحيح عليك بمراجعة event التي تتم قبل الحفظ ، أي أن التغيير يتم بعد إعطاء الرقم الصحيح RE: مشكلة تواجهني في عملية اضافة سجل - medreg - 09-03-2020 شكرا على المرور بالنسبة الأخ لؤي : لقد جربت الأمر Insert قبل وضع الإشكال لكن ليس هو المشكل اما بالنسبة للأخ ghostdz : لم افهم قصدك ممكن التغيير على الكود RE: مشكلة تواجهني في عملية اضافة سجل - ghostdz - 10-03-2020 (09-03-2020, 06:22 PM)medreg كتب : شكرا على المرور الكود الذي وضعته نظريا صحيح لكن عليك مراجعة الأمور التالية : 1- الحقل no_brd يكون Index[size=small] 2- مراجعة BeforePost الخاص بـ Table1 جرب الكود التالي حيث قمت بحذف التعليمة التي تقوم بإلغاء index [/size] كود : var
tan,result : string;
tNum,Err : integer;
tKey : variant;
begin
DM.Table1.Last;
tan := DM.Table2Br.FieldValues['Annee'];
tKey := DM.Table1.fields[0].value;
DM.Table1.Append;
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.FieldValues['No_Brd']:=result;وإذا لم نعمل معك ، إذا أمكن يمكنك وضع البرنامج مع الجدول لمعاينة المشكل (ليس بالضرورة كل المصدر بل الجزء الخاص بالمشكل مع datamodule) RE: مشكلة تواجهني في عملية اضافة سجل - medreg - 10-03-2020 السلام عليكم ورحمة الله تعالى وبركاته بارك الله فيكم اخي هناك مشكل اخر وهو ان بعدما جربت الكود المعدل من طرفكم يعمل جيد الا انه يعمل على نفس السنة اما اذا غيرت السنة يبدأ بالرقم 1 للسنة الجديدة لكن كل اضفت سجل جديد للسنة الجديدة يعيني رقم 1 اي لا يعطي الرقم الموالي وبعدما فيرت نوع الحقل No_Brd كما اشرت في مداخلتك الى Smallint لا يقبل الرقم المضاف اليه السنة مثلا 001/2020 يعطيني رسالة خطأ رسالة الخطأ هي كالتالي : '001/2020' n'est pas une valeur entière correcte pour le champ 'No_Brd' RE: مشكلة تواجهني في عملية اضافة سجل - ghostdz - 11-03-2020 (10-03-2020, 09:57 PM)medreg كتب : السلام عليكم ورحمة الله تعالى وبركاته لا تقم بتغيير نوع الحقل ، إليك الكود التالي يتكون من 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;RE: مشكلة تواجهني في عملية اضافة سجل - medreg - 11-03-2020 السلام عليكم ورحمة الله تعالى وبركاته لقد اعدت نوع الحقل الى String ووضعة هذه الدالة التي اعطيتني اياها كود : function GetNewNumero(Annee: Integer): string;
var
tan: string;
tNum,Err : integer;
tKey : variant;
PriorFilter: string;
PrierFiltered: Boolean;
begin
PriorFilter:= DM.Table1.Filter;
PrierFiltered:= 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:= PrierFiltered;
end;كود : procedure TForm2.Button1Click(Sender: TObject);
var
NewNumero: string;
begin
NewNumero:= GetNewNumero(DM.Table2Br.FieldValues['Annee']);
DM.Table1.Append;
DM.Table1.FieldValues['No_Brd']:= NewNumero;
end;ربما هناك شيء ما في الكود لم افهمه والله اعلم بارك الله فيكم RE: مشكلة تواجهني في عملية اضافة سجل - medreg - 11-03-2020 اليكم المرفق للإطلاع والتعديل [attachment=4183] علما انني استعمل قاعدة البيانات absolute database ونسخة الدلفي xe8 جزاكم الله عنا كل خير RE: مشكلة تواجهني في عملية اضافة سجل - ghostdz - 12-03-2020 (11-03-2020, 10:46 PM)medreg كتب : اليكم المرفق للإطلاع والتعديل في قاعدة البيانات Bords عندك الحقل Annee فارغ لا يحمل السنة لأنه يجب أن يحتوي السنة التي على أساسها تتم الفلترة إليك التعديلات التالية في الكود وإليك رابط لتحميل الملف المعدل https://www.mediafire.com/file/8cy26cwuzw6ja5r/Exemple_Num.rar/file ملاحظة : .dproj يحتوي على configuration المشروع ، أما .dpr فهو الذي يحتوي على مصدر المشروع. كود : function GetNewNumero(Annee: string): string;
var
tan: string;
tNum,Err : integer;
tKey : variant;
PriorFilter: string;
PriorFiltered: Boolean;
begin
PriorFilter:= DM.Table1.Filter;
PriorFiltered:= DM.Table1.Filtered;
DM.Table1.Filter:= 'Annee=' + Annee;
DM.Table1.Filtered:= True;
DM.Table1.Last;
tan:= 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 TForm1.Button1Click(Sender: TObject);
var
NewNumero: string;
begin
NewNumero:= GetNewNumero(DM.Table2.FieldValues['Annee']);
DM.Table1.Append;
DM.Table1.FieldValues['No_Brd']:= NewNumero;
DM.Table1.FieldValues['Annee']:= DM.Table2.FieldValues['Annee'];
DM.Table1.Post;
end; |