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

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

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

اذا كان لدي جدولين في الاكسس وبهما الحقول التاليه
جدول1 به
الاسم _ الرقم _ تاريخ الميلاد

جدول2 به
الاسم _ الرقم _ تاريخ الميلاد

اي ان الحقول مكرره في الجدولين

وقمت بادخال سجل في الجدول1
كيف يمكن بضغطه زر واحده ان اقوم بنقل السجل الذي قمت ب إدخاله في جدول1 الي جدول 2
بالدلفي .اي عمل نسخ من الجدول الاول الي الجدول الثاني.

وبارك الله فيكم.
وعليكم السلام ورحمة الله وبركاته
إقتباس :اي ان الحقول مكرره في الجدولين
قبل انطلاق أي مشروع قواعد بيانات ينبغي إعداد نموذج للجداول والعلاقات
وعند تصميم النموذج ينبغي ألا نجد جداول مكررة ولا نضطر فيما بعد لتكرار سجلات
وبالتالي لن نضطر لعمل مثل هذا.
حاول إعادة صياغة الجداول بطريقة أخرى، بحيث مثلا يكون:
الاسم _ الرقم _ تاريخ الميلاد
في جدول منفرد ثم يرتبط الجدولان به من حقل غريب (Foreign key).

هذا الإجراء يقوم بتكرار السجل في نفس الجدول:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
i: Integer;
  
QueryCopy: TQuery;
begin
    QueryCopy 
:= TQuery.Create(Self);
  
with QueryCopy do
    
begin
      DatabaseName 
:= Table1.DatabaseName;
      
SQL.Clear;
      
SQL.Add('SELECT * FROM biolife');
      
Open;
      
Bookmark := Table1.Bookmark;
    
end;
  try
    
With QueryCopy do
    
begin
      Table1
.Append;
      
Table1.Fields.Fields[0].AsInteger := Table1.RecordCount +1;
      for 
i := 1 to  FieldCount -1 do
        
Table1.Fields.Fields[i].assign(Fields.Fields[i]);
      try
        
Table1.Post;
      
Except on Exception do
        
Table1.Cancel;
      
end;
    
end; // with
  
finally
    
QueryCopy.Free;
  
end;
end; 

إجراء آخر،بطريقة أخرى:
PHP كود :
procedure DuplicateCurrentRecord(FirstField: Variant; aDataSet : TDataSet);
var
  
Data : array of variant;
  
aRecord : array of TVarRec;
  
i : integer;
  
max : integer;
begin
  max 
:= aDataSet.fields.count -1;
  
// set the lenghth of the arecord array to be the same as the number of
  // elements in the data array
  
SetLength(aRecord, max+1);
  
SetLength(Data, max+1);

  
// set the variant type pointers to the data array
  
for i := 0 to max do
  
begin
    aRecord
[i].VType := vtVariant;
    
aRecord[i].VVariant := @Data[i];
  
end;

  
// Copy the Record to the Array
  
for i := 1 to max do
    
Data[i] := aDataSet.fields[i].value;
    
Data[0] := FirstField;

  
// finally append the record in one go
  
aDataSet.AppendRecord(aRecord);
end; 
بالتوفيق.
سلام عليكم

لكن اذا كان لدي موظفين وانتهت فتره خدمتهم بالموسسه لكن لا **** مسحهم من الجدول بحيث اذا احتجت الي معلوماتهم اقوم بالرجوع لها لكن في نفس الوقت اود وضعهم في جدول منفصل مثلا يسمي الارشيف لذلك اقوم بنقلهم من الجدول الرئيسي الي جدول الارشيف هل من طريقه اخري غير هذه.
قد يفيدك هذا أيضــا : راجع العنصر الخامس هنــــــــــــــــا
راجع أيضا الصفحة 69 من كتاب لغة البرمجة دلفي لمحمد خالد ناصر آغا .


بالتوفيق أحي العزيز .
إقتباس :ان لدي موظفين وانتهت فتره خدمتهم بالموسسه
ضف للجدول حقل منطقي Boolean
ضع به القيمة True في حالة كان يعمل
ضع القيمة False في حال ترك العمل
وفي تعاملك مع الجدول خذ بعين الاعتبار ذلك الحقل بحيث يظهر فقط المستخدمي ذوي القيمة True
وبالتوفيق
شكرا للجميع وبارك الله فيكم

اذا في هذه الحاله سادخل الحقل المنطقي في جميع عمليات الفلتره التي اقوم بها بحيث يقوم بالفلتره فقط للذين لهم القيمه true اليس كذلك؟

نعم، في اي تعامل مع الجدول، فلترة او استعلام sql
وبالتوفيق