23-03-2016, 09:50 AM
لو أنك تستخدم SQL Server لكان الأمر بسيط جداً باستخدام SQL Server Agent, حيث أنه سيقوم بتنفيذ تعليمة SQL للتعديل على الجداول التي تريد و الحقول التي تريد حسب ال Schedule الذي تريد.
ولكن بما أنك تستخدم أكسس, فعليك بالقيام بهذه العملية بشكل يدوي, إما عن طريق الدلفي بشكل مباشر أو أن تكتب استعلام داخل ملف الأكسس و تقوم بتنفيذه بشكل دوري.
1- عن طريق الدلفي:
يمكن وضع الكود الخاص بالتعديل على حقول التاريخ ضمن تايمر إذا كان برنامجك يعمل بإستمرار, أو أن تضع الكود في حدث on show مثلاً للفورم المتعلق بهذه القضية.
سنفترض أنك تريد التعديل على كامل السجلات:
2- استعلام الأكسس و تنفيذه:
عليك بإنشاء query داخل ملف الأكسس و تسميه مثلاُ setnewdate وتضع به الكود التالي:
الآن كل ما عليك هو تشغيله بشكل دوري من داخل الدلفي, و لعمل ذلك يمكنك استخدام ADOCOMMAND و تضع في خاصية Commandtext اسم الquery الذي أنشئته:
وبهذا سيتم تنفيذ الquery ليؤثر على سجلات الجدول حس المطلوب.
وفقكم الله.
ولكن بما أنك تستخدم أكسس, فعليك بالقيام بهذه العملية بشكل يدوي, إما عن طريق الدلفي بشكل مباشر أو أن تكتب استعلام داخل ملف الأكسس و تقوم بتنفيذه بشكل دوري.
1- عن طريق الدلفي:
يمكن وضع الكود الخاص بالتعديل على حقول التاريخ ضمن تايمر إذا كان برنامجك يعمل بإستمرار, أو أن تضع الكود في حدث on show مثلاً للفورم المتعلق بهذه القضية.
سنفترض أنك تريد التعديل على كامل السجلات:
كود :
ADOTable1.DisableControls;
ADOTable1.First;
while not ADOTable1.Eof do
begin
if ADOTable1.FieldByName('your date field name').AsDateTime = now then
begin
ADOTable1.Edit;
ADOTable1.FieldByName('your date field name').AsDateTime :=
ADOTable1.FieldByName('your date field name').AsDateTime + 7;
ADOTable1.post;
end;
ADOTable1.Next;
end;
ADOTable1.EnableControls;عليك بإنشاء query داخل ملف الأكسس و تسميه مثلاُ setnewdate وتضع به الكود التالي:
كود :
UPDATE table1 SET mydate = mydate+7
WHERE mydate=date();كود :
ADOCommand1.CommandText := 'setnewdate';
ADOCommand1.Execute;وبهذا سيتم تنفيذ الquery ليؤثر على سجلات الجدول حس المطلوب.
وفقكم الله.


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)