PDA

View Full Version : سوال: اجرای Update Query فقط یکبار در سال



ghoghnuse
شنبه 19 مرداد 1387, 10:45 صبح
سلام به همه دوستان

در بانک اطلاعاتی من ، لیست از قیمت قطعات وجود داره که این قیمتها باید یکبار در سال اپدیت بشه .

همونطوری که همه اساتید می دونند ، Query آپدیت با هر بار اجرا ، تغییرات رو مجددا اعمال می کنه که این موضوع بعضا خطرناکه .

حالا من می خوام که این Query فقط یکبار در سال اجرا بشه و در صورت اجرای مجدد ، پیغامی دلخواه مثل " در سال جدید اجرا شده است " مشاهده بشه .

پیشاپیش از کمک و همکاری همه دوستان تشکر می کنم .

amirzazadeh
شنبه 19 مرداد 1387, 11:37 صبح
سلام به همه دوستان

در بانک اطلاعاتی من ، لیست از قیمت قطعات وجود داره که این قیمتها باید یکبار در سال اپدیت بشه .

همونطوری که همه اساتید می دونند ، Query آپدیت با هر بار اجرا ، تغییرات رو مجددا اعمال می کنه که این موضوع بعضا خطرناکه .

حالا من می خوام که این Query فقط یکبار در سال اجرا بشه و در صورت اجرای مجدد ، پیغامی دلخواه مثل " در سال جدید اجرا شده است " مشاهده بشه .

پیشاپیش از کمک و همکاری همه دوستان تشکر می کنم .
دوست عزيز شما ميتونين از يك فيلد yes/no ويا يك كانتر استفاده كنين كه بعد از اجراي كوئري برابر yes ويا عدد يك در حالت دوم باشه .حالابا گذاشتن يك شرط از اجراي آن در صورت مثبت بودن شرط جلوگيري ميشه.
..........................
موفق باشيد

s.mostafa.rahmani
شنبه 19 مرداد 1387, 11:57 صبح
مي‌توني يه فيلد خاصي تو يه جدولي بگيري كه دستور Update اون رو هم ست كنه.
قبل از Update بايد چك كني كه اون فيلد ست شده يا نه اگه نشده بود بقيه دستور Update اجرا بشه.

ghoghnuse
یک شنبه 20 مرداد 1387, 11:14 صبح
دوست عزيز شما ميتونين از يك فيلد yes/no ويا يك كانتر استفاده كنين كه بعد از اجراي كوئري برابر yes ويا عدد يك در حالت دوم باشه .حالابا گذاشتن يك شرط از اجراي آن در صورت مثبت بودن شرط جلوگيري ميشه.
..........................
موفق باشيد
با تشکر از کمک شما دوست عزیز ، ولی مشکل در جای دیگریست !

مشکل من این نیست که بعد از یکبار اجرا ، دیگه Query اجرا نشه . من می خوام در یک بازه زمانی مشخص این تقاضا اجرا نشه . مثلا اگر در بازه زمانی سی روز قبل اجرا نشده ، اجازه اجرای مجدد تقاضا رو به کاربر بده .

فکر می کنم باید تاریخ اخرین اجرای تقاضا در جدول دیگه ای ذخیره بشه و در هنگام اجرای مجدد ، تاریخ سیستم با اون تاریخ مقایسه بشه و در صورت ناردست بودن شرط ( مثلا فاصله زمانی کمتر از یکماه یا یکسال ) اجازه اجرای تقاضا رو به کاربر نده ولی روش این کارو نمی دونم .

مباحث مربوط به Recordset ها رو هم در همین انجمن مطالعه کردم ولی نتونستم بدرستی ازشون استفاده کنم .

باز هم ممنونم از کمک همه دوستان .

مهدی قربانی
یک شنبه 20 مرداد 1387, 11:39 صبح
سلام
همونطور كه اشاره كرديد شما مي تونيد بواسطه اندازه گيري بازه زماني بين آخرين تاريخ اقدام شده و تاريخ جاري اين شرط رو (اجازه اجراي كوئري ) قائل بشيد براي اين منظور نياز به يك جدول با فيلدهاي id از نوع Auto Number و تاريخ از نوع Text يا Number داريد كه وظيفه اون نگهداري تاريخهاي اجراي كوئري خواهد بود تاريخ رو هم مي تونيد با كمك گرفتن از ماجول تاريخ شمسي آقاي آزادي ( موجود در تاپيك مشكلات فارسي و سورسهاي مربوطه ) ثبت كنيد و اما در مرحله بعدي زمانيكه بخوايد در اجراهاي بعدي كوئري ، اختلاف زمان رو بررسي كنيد با استفاده از ركوردست ابتدا آخرين ركورد ثبت شده در جدول تاريخها رو فيلتر كنيد و بعد با استفاده از تابع Diff ( موجود در همون ماجول آقاي آزادي ) اختلاف تاريخ رو محاسبه و بواسطه شرط مورد نظرتون ( تعيين مدت زمان لازم ) بقيه مراحل رو تكميل كنيد .