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

نسخة كاملة : كيف يمكنني تحويل قيمة من سجل الى اخر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله تعالى وبركاته
لدي جدول به 3 حقول
والمطلوب هو كيف يمكنني تحويل قيمة الحقل 
Nbre_Tot الموجودة بالسجل رقم 1
الى الحقل Nbre_Ant الموجودة بالسجل الثاني وهكذا بباقي السجلات 
حسب ما هو موضح بالصورة المرفقة
[attachment=3660]
وعليكم السلام
فقط اعمل هدا في حلقة تكرارية
table1.fieldbyname('Nbre_Ant').value := table1.fieldbyname('Nbre_Tot').value
(02-01-2018, 12:15 AM)AX302 كتب : [ -> ]وعليكم السلام
فقط اعمل هدا في حلقة تكرارية
table1.fieldbyname('Nbre_Ant').value := table1.fieldbyname('Nbre_Tot').value
السلام عليكم بارك الله فيك على المرور
لاكن بعد ما عملت الحلقة التكرارية
تعمل فقط على نفس السحل ولا تحول القيمة من السجل الاول الى السجل الثاني
ربما هناك خطأ في الكود من طرفي
اليك الكود المستعمل
كود :
procedure TFrm1.Button1Click(Sender: TObject); Var i,n:integer; begin  with DM do  begin  n:=Table1.RecordCount;    for i := 1 to n do    begin      if Table1.FieldValues['Cde']=i then      begin      Table1.Edit;      Table1.fieldbyname('Nbre_Ant').value := Table1.fieldbyname('Nbre_Tot').value;      Table1.Post;      end;    end;  end; end; علما ان الحقل Cde  هو مفتاح الجدول
السلام عليكم 
جرب هكدا 
 Table1.Edit;
 while not table1.Eof do
  begin
   Table1.fieldbyname('Nbre_Ant').value := Table1.fieldbyname('Nbre_Tot').value;
  end;
 table1.post;
(03-01-2018, 12:39 AM)AX302 كتب : [ -> ]السلام عليكم 
جرب هكدا 
 Table1.Edit;
 while not table1.Eof do
  begin
   Table1.fieldbyname('Nbre_Ant').value := Table1.fieldbyname('Nbre_Tot').value;
  end;
 table1.post;

الكود يخمد لا يستجيب
جرب هكدا
كود :
while not Table1.EOF do begin  Table1.Edit;  Table1.fieldbyname('Name').value := Table1.fieldbyname('Name').value;  Table1.Post;  Table1.Next; end;
(03-01-2018, 01:11 AM)AX302 كتب : [ -> ]جرب هكدا
كود :
while not Table1.EOF do begin  Table1.Edit;  Table1.fieldbyname('Name').value := Table1.fieldbyname('Name').value;  Table1.Post;  Table1.Next; end;

شكرا على المحاولات 
لكن ربما المقصود فير مفهوم
كل ما في الامر هو جلب المجموع اي Nbre_Totمن السجل رقم 1
ووضعه في العدد السابق Nbre_Ant بالسجل رقم 2
وكل ما اضيف سجل جديد يأتي بالمجموع من السجل الذي يسبقه ويضعه في العدد السابق للسجل الحالي
وهذا مرقث كمثال
[attachment=3663]
السلام عليكم، جرب هذا
كود :
Var St: String; begin Table1.First; while not Table1.EOF do begin if Table1.RecNo=1 then St:='0'; Table1.Edit; Table1.fieldbyname('Nbre_Ant').value :=St; Table1.Post; St:=Table1.fieldbyname('Nbre_Tot').AsString; Table1.Next; end; end;
(03-01-2018, 01:30 PM)B.M.AbdelAziZ كتب : [ -> ]السلام عليكم، جرب هذا
كود :
Var St: String; begin Table1.First; while not Table1.EOF do begin if Table1.RecNo=1 then St:='0'; Table1.Edit; Table1.fieldbyname('Nbre_Ant').value :=St; Table1.Post; St:=Table1.fieldbyname('Nbre_Tot').AsString; Table1.Next; end; end; بارك الله فيك اخي عبدالعزيز  الا انه هناك ملاحظة بالنسبة للسجل الأول يجب ان تبقى القيمة المتعلقة بـ Nbre_Ant كما هي لا تتغير على سبيل المثال إذا كانت القيمة 0 تبقى كما هي بدون تغيير واذا كانت القيمة اكبر من 0 اي 10 او 1 الخ تبقى بدون تغيير وما يجري الان انها تأخذ القيمة 0 حتى ولو كانت تحتوي على اكبر من 0 والمفروض تبقى كما كانت وجزاكم الله عنا كل خير
جرب هكدا 
كود :
Var St: String; FirstRecord : integer; begin Table1.First; FirstRecord :=  Table1.FieldByName('Nbre_Tot').AsInteger;   while not Table1.EOF do     begin       if (Table1.RecNo=1) and (FirstRecord = 0) then St:='0';         Table1.Edit;         Table1.fieldbyname('Nbre_Ant').value :=St;         Table1.Post;         St:=Table1.fieldbyname('Nbre_Tot').AsString;         Table1.Next;     end;   end; end;
الصفحات : 1 2