delphi4arab منتديات دلفي للعرب
ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 (/showthread.php?tid=12099)



ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - AbdouProg - 25-09-2022

السلام عليكم و رحمة الله و بركاته

اريد الحصول على ترقيم تلقائي للحقل ID2 و دالك بتوفر الشرط ID كما هو مبين في الشكل أدناه


[صورة: 166413555770391.png]

 استعمل الكود الثالي و لكنه لا يعمل في الصورة العلوية ينقص التارخ بالطبع 
ما الدي يجب تعديله في هدا الكود و اذا كان هناك طريقة اخرى افيدونا و شكرا

مع العلم ان ID2 من نوع string
 
PHP كود :
function Tform1.Autoid_id: String;

var
  n_annee: string;
  a_Num, Err: integer;
  a_Key: variant;

begin
  with Qry1 
do
  begin
    Active 
:= False;
    SQL.Clear;
    SQL.Add('SELECT Max(ID2 ) as ID2  ');
    SQL.Add('FROM teste a             ');
    SQL.Add('WHERE ID1 > ID2          ');
    Active := True;
  end;

  n_annee := formatdatetime('YY', Now);
  a_Key := QryID2.Value;

  if (a_Key = NULL) or (copy(a_Key, length(a_Key) - 1, 2) <> n_annee) then
    a_Num 
:= 0
  
else
  begin   
  
    val
(copy(a_Key, 1, 1), a_Num, Err);
    if Err <> 0 then
      a_Num 
:= 0;
  end;
  result := format('%1.1d/', [a_Num + 1]) + n_annee;
  Qry1.FieldByName('ID2').Text :=  copy(result,length(result) - 5, 3) + '-' + n_annee;
end; 



RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - Delphi4Us - 01-10-2022

وعليكم السلام و رحمة الله و بركاته

كود :
SQL.Add('SELECT Max(ID2 ) as ID2  ');     SQL.Add('FROM teste a            ');     SQL.Add('WHERE ID1 = 1          ');

بمعلومية الترقيم الاول يمكنك عمل ترقيم ثاني متسلسل للرقم الاول


RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - AbdouProg - 01-10-2022

(01-10-2022, 09:42 AM)Delphi4Us كتب : وعليكم السلام و رحمة الله و بركاته

كود :
SQL.Add('SELECT Max(ID2 ) as ID2  ');     SQL.Add('FROM teste a             ');     SQL.Add('WHERE ID1 = 1           ');

بمعلومية الترقيم الاول يمكنك عمل ترقيم ثاني متسلسل للرقم الاول
السلام عليكم

الكود أخي لا يعمل هل من طريقة اخرى


RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - Delphi4Us - 01-10-2022

الكود يعمل وانا استخدمه في برنامج لي بنفس الفكرة تقريبا

كود :
SELECT Max(ID2 ) + 1



RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - AbdouProg - 02-10-2022

(01-10-2022, 03:35 PM)Delphi4Us كتب : الكود يعمل وانا استخدمه في برنامج لي بنفس الفكرة تقريبا

كود :
SELECT Max(ID2 ) + 1
السلام عليكم

للاسف الكود لا يعمل و لا يلبي الطلب


RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - Delphi4Us - 03-10-2022

هذا جدولك بالضبط

[صورة: attachment.php?aid=4685]

سوف اجري استعلام للحصول على الترقيم التالي للحقل ID2 في المجال رقم (1) للحقل ID1

كود :
select     max(test.id2) +1 from test where test.id1=1

النتيجة تكون الرقم 4 مع وضع بالاعتبار ان تقوم بعملية تحويل للحقل ID2 الى رقم بحال كان نص او تغييره الى النوع Integer


RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - AbdouProg - 03-10-2022

(03-10-2022, 11:09 AM)Delphi4Us كتب : هذا جدولك بالضبط

[صورة: attachment.php?aid=4685]

سوف اجري استعلام للحصول على الترقيم التالي للحقل ID2 في المجال رقم (1) للحقل ID1

كود :
select     max(test.id2) +1 from test where test.id1=1

النتيجة تكون الرقم 4 مع وضع بالاعتبار ان تقوم بعملية تحويل للحقل ID2 الى رقم بحال كان نص او تغييره الى النوع Integer

السلام عليكم
لكن مع  [b]ID2  - ID1 من نوع string  لا يعمل[/b]


RE: ترقيم تلقائي للحقل ID2 مع توفر شرط ID1 - Delphi4Us - 04-10-2022

اولا لماذا لاتحوله الى النوع رقمي ...؟

ثانيا يمكنك التحويل باستخدام احدى الدوال
كود :
SELECT CAST(ID2 AS int) + 1