delphi4arab منتديات دلفي للعرب

نسخة كاملة : ترقيم تلقائي للحقل ID2 مع توفر شرط ID1
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم و رحمة الله و بركاته

اريد الحصول على ترقيم تلقائي للحقل 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; 
وعليكم السلام و رحمة الله و بركاته

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

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

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

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

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

كود :
SELECT Max(ID2 ) + 1
(01-10-2022, 03:35 PM)Delphi4Us كتب : [ -> ]الكود يعمل وانا استخدمه في برنامج لي بنفس الفكرة تقريبا

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

للاسف الكود لا يعمل و لا يلبي الطلب
هذا جدولك بالضبط

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

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

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

النتيجة تكون الرقم 4 مع وضع بالاعتبار ان تقوم بعملية تحويل للحقل ID2 الى رقم بحال كان نص او تغييره الى النوع Integer
(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]
اولا لماذا لاتحوله الى النوع رقمي ...؟

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