![]() |
|
كيف تغير التاريخ تلقائيا في قاعدة بيانات - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف تغير التاريخ تلقائيا في قاعدة بيانات (/showthread.php?tid=7644) |
كيف تغير التاريخ تلقائيا في قاعدة بيانات - wadoud - 22-03-2016 السلام عليكم ماهي الطريق الامثل لتغير التاريخ تلقائيا او اوتوماتكيا في حقل في قاعدة البيانات مثلا بع مرور سبعة ايام عندي محاولة كود : if now - (ADOTable1.FieldByName('date').value)=7
then
adotable.append
ADOTable1.FieldByName('date').value:=now;
adotable.post;شكرا RE: تغير التاريخ تلقائيا في قاعدة بيانات - Mr.DOS - 22-03-2016 سلام عليكم اوضح اكثر RE: تغير التاريخ تلقائيا في قاعدة بيانات - wadoud - 23-03-2016 عندي حقل تاريخ بقاعدة بيانات اكسس اذا حل يوم المسجل في الحقل يتم استبداله بتاريخ سبعة ايام القادمة اليا بدون تدخل المستعمل مثال في الحقل مسجل 24/03/2016 عندما يحل موعد نفس التاريخ اي 24/03/2016 يتحول الى 31/03/2016 اليا. RE: تغير التاريخ تلقائيا في قاعدة بيانات - PLANSHARP - 23-03-2016 لو أنك تستخدم SQL Server لكان الأمر بسيط جداً باستخدام SQL Server Agent, حيث أنه سيقوم بتنفيذ تعليمة SQL للتعديل على الجداول التي تريد و الحقول التي تريد حسب ال Schedule الذي تريد. ولكن بما أنك تستخدم أكسس, فعليك بالقيام بهذه العملية بشكل يدوي, إما عن طريق الدلفي بشكل مباشر أو أن تكتب استعلام داخل ملف الأكسس و تقوم بتنفيذه بشكل دوري. 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 ليؤثر على سجلات الجدول حس المطلوب. وفقكم الله. RE: تغير التاريخ تلقائيا في قاعدة بيانات - wadoud - 23-03-2016 السلام عليكم اخي الكريمPLANSHARP أشكرك على جوابك السريع وشرحك المتقن الوافي والكافي لقد كنت جوادا في جوابك وتعلمت اشياءا جديدة .كثر الله امثالك ونفعنا الله بعلمك ,حفظك الله اخي ساجرب ما تفضلت به. السلام عليكم. RE: تغير التاريخ تلقائيا في قاعدة بيانات - wadoud - 23-03-2016 السلام عليكم اخي الكريمPLANSHARP لقد جربت الكود واشتغل على التمام الا انني سألح عليك قليلا فتحملني بارك الله فيك ADOTable1.DisableControls; اريد ان أعرف وظيفتها ثانيا عندي حقل ثان order يحمل القيمتين 'أول' أو 'أخير' اريد ان أربطه مع التاريخ أعلاه اذا تغير التاريخ وكان order 'أول' يتغير بدوره تلقائيا و يصبح 'أخير' والعكس اذا كان 'أخير' يصبح 'أول' . استسمحك وقتك الثمين السلام عليكم RE: تغير التاريخ تلقائيا في قاعدة بيانات - PLANSHARP - 24-03-2016 و عليكم السلام و رحمة الله وبركاته. بالنسبة لـ Disablecontrols: تقوم بإيقاف ال adotable من عرض بيانات السجلات ضمن عناصر ال DB-aware , مثل DBedit, Dbmemo, Dbgrid, وذلك لأن الكود سيقوم بعملية scan لكل السجلات ضمن الجدول و هذا لا داعي لإظهاره على العناصر مما قد يسبب بطء في البرنامج. بالنسبة للتعديل: كود : 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;
if ADOTable1.FieldByName('order').AsString = 'أول' then
ADOTable1.FieldByName('order').AsString := 'أخير'
else
ADOTable1.FieldByName('order').AsString := 'أول';
ADOTable1.post;
end;
ADOTable1.Next;
end;
ADOTable1.EnableControls;RE: تغير التاريخ تلقائيا في قاعدة بيانات - wadoud - 25-03-2016 السلام عليكم اخي الكريم PLANSHARP أشكرك على شرحك وتحملك فزادي قليل ومعارفي مبعثرة. لقد اسعدتني اسعدك الله لقد عمل الكود بالتمام و المراد المنشود , إلا انني وضعت date مكان now حتي لا تدخل الساعة وعمل في الأخير. فجزاك الله عنا كل خير ووفقك الله. RE: كيف تغير التاريخ تلقائيا في قاعدة بيانات - PLANSHARP - 10-04-2016 ملاحظة: عند استخدام الطريقة الثانية و هي استعلام الأكسس و تنفيذه فإن هذه الطريقة سريعة جداً و أسرع بكثير من الطريقة الأولى. وإذا أردت ملاحظة الفرق, جرب على جدول به 50 ألف تسجيلة أو أكثر. RE: كيف تغير التاريخ تلقائيا في قاعدة بيانات - wadoud - 10-04-2016 (10-04-2016, 02:21 PM)PLANSHARP كتب : ملاحظة: عند استخدام الطريقة الثانية و هي استعلام الأكسس و تنفيذه فإن هذه الطريقة سريعة جداً و أسرع بكثير من الطريقة الأولى. |