PDA

View Full Version : سوال: حذف اطلاعات در سر رسید تاریخ جاری سیستم



1397mehrdad
دوشنبه 14 مرداد 1392, 20:52 عصر
سلام
من یه برنامه دارم که اطلاعات کارکنان یک اداره است . می خوام اگه بازنشستگی یک نفر رو زدیم و تاریخ بازنشستگی جند روز بعد بود ، اطلاعات فرد در تاریخ بازنشستگی حذف شود . یعنی وقتی تاریخ سیستم به تاریخ بازنشستگی فرد که ما درج کردیم رسید ، اطلاعات فرد بعنوان بازنشسته در سیستم اعمال گردد و در لیست کارکنان حاضر قابل مشاهده نباشد .
چطور میشه این کار رو کرد ؟

Abbas Amiri
سه شنبه 15 مرداد 1392, 14:25 عصر
سلام
من یه برنامه دارم که اطلاعات کارکنان یک اداره است . می خوام اگه بازنشستگی یک نفر رو زدیم و تاریخ بازنشستگی جند روز بعد بود ، اطلاعات فرد در تاریخ بازنشستگی حذف شود . یعنی وقتی تاریخ سیستم به تاریخ بازنشستگی فرد که ما درج کردیم رسید ، اطلاعات فرد بعنوان بازنشسته در سیستم اعمال گردد و در لیست کارکنان حاضر قابل مشاهده نباشد .
چطور میشه این کار رو کرد ؟

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

مثلا میتوان بصورت زیر فرم را بازکرد:(بسته به اینکه از چه نوع تابع تاریخ فارسی استفاده می کنید)


DoCmd.OpenForm "MyForm", , , "bazneshastegiDate < " & Shamsi()

1397mehrdad
سه شنبه 15 مرداد 1392, 14:42 عصر
ممنوع از جوابتون
ولی برنامه من به این شکله که توی یک تیبل تمام اطلاعات کارمندها وجود داره و یک فیلد به نام hazf از نوع yes no وجود داره و اطلاعات فرم اصلی من از یک کویری که گفته شده فیلدهایی که تیک hazf نداره نشون داده بشه استفاده می کنه . یک جدول هم دارم برای افرادی که بازنشسته شدن و اطلاعات بازنشستگی از قبیل نوع و تاریخ بازنشستگی در اون درج میشه . فرم بازنشستگی هم از یک کوئری که شامل اطلاعات کویری فرم اصلی و اطلاعات جدول بازنشستگی میشه استفاده می کنه . یعنی وقتی برای کسی بازنشستگی می زنیم مقدار فیلد hazf در جدول اصلی true می شه در نتیجه در فرم اصلی دیگه اطلاعات اون نفر نمیاد . حالا می خوام کاری کنم که وقتی بازنشستگی یک نفر رو می زنیم اگه تاریخ بازنشستگی از تاریخ جاری سیستم دیرتر بود سیستم فعلا اون نفر رو از آمار کم نکنه و بصورت اتوماتیک با رسیدن تاریخ جاری به تاریخ بازنشستگی مقدار فیلد hazf رو true کنه که اطلاعات از اون تاریخ در فرم اصلی نمایش داده نشه . الان در فرم من با درج نوع و تاریخ بازنسشتگی در فرم بازنشستگی فیلد hazf مقدار true می گیره و اطلاعات نفر غیر قابل نمایش می شه و کاری به تاریخ نداره که تاریخ بازنشستگی رسیده یا نه ! نمی دونم تونستم منظورم رو برسونم یا نه .

alirezabahrami
سه شنبه 15 مرداد 1392, 17:39 عصر
ممنوع از جوابتون
ولی برنامه من به این شکله که توی یک تیبل تمام اطلاعات کارمندها وجود داره و یک فیلد به نام hazf از نوع yes no وجود داره و اطلاعات فرم اصلی من از یک کویری که گفته شده فیلدهایی که تیک hazf نداره نشون داده بشه استفاده می کنه . یک جدول هم دارم برای افرادی که بازنشسته شدن و اطلاعات بازنشستگی از قبیل نوع و تاریخ بازنشستگی در اون درج میشه . فرم بازنشستگی هم از یک کوئری که شامل اطلاعات کویری فرم اصلی و اطلاعات جدول بازنشستگی میشه استفاده می کنه . یعنی وقتی برای کسی بازنشستگی می زنیم مقدار فیلد hazf در جدول اصلی true می شه در نتیجه در فرم اصلی دیگه اطلاعات اون نفر نمیاد . حالا می خوام کاری کنم که وقتی بازنشستگی یک نفر رو می زنیم اگه تاریخ بازنشستگی از تاریخ جاری سیستم دیرتر بود سیستم فعلا اون نفر رو از آمار کم نکنه و بصورت اتوماتیک با رسیدن تاریخ جاری به تاریخ بازنشستگی مقدار فیلد hazf رو true کنه که اطلاعات از اون تاریخ در فرم اصلی نمایش داده نشه . الان در فرم من با درج نوع و تاریخ بازنسشتگی در فرم بازنشستگی فیلد hazf مقدار true می گیره و اطلاعات نفر غیر قابل نمایش می شه و کاری به تاریخ نداره که تاریخ بازنشستگی رسیده یا نه ! نمی دونم تونستم منظورم رو برسونم یا نه .
سلام
با اجازه جناب امیری عزیز
درواقع شما به صورت دستی اقدام به تیک نمودن فیلد hazf نباید بکنی وخود برنامه با توجه به مساوی بودن تاریخ بازنشستگی و تاریخ جاری سیستم فیلد hazf را در حالت true قرار میدهد .در نتیجه قبل از باز شدن فرم اصلی باید جدولی که فیلد فوق در آن درج شده یکبار آپدیت شود و بعد فرم اصلی با فیلتر نمودن رکوردها بازنمود(مطابق کدی که جناب امیری اشاره نمودند) .آپدیت نمودن جدول را میتوان در هنگام اجرای فرم استارت آپ اولیه برنامه یا در هنگام باز شدن فرم اصلی و قبل از اجرای دستور فیلتر شدن رکورد ها انجام داد.
با استفاده از کد زیر نیز میتوانید جدول مربوطه را جهت تیک نمودن فیلد hazf کلیه رکوردهائی که تاریخ بازنشستگی آنها با تاریخ جاری(شمسی) برابر است آپدیت نمائید.


DoCmd.RunSQL "UPDATE TableName SET TableName.hazf = True WHERE (([bazneshastegiDate]=shamsi()));"



موفق باشید

1397mehrdad
سه شنبه 15 مرداد 1392, 17:43 عصر
سلام
با اجازه جناب امیری عزیز
درواقع شما به صورت دستی اقدام به تیک نمودن فیلد hazf نباید بکنی وخود برنامه با توجه به مساوی بودن تاریخ بازنشستگی و تاریخ جاری سیستم فیلد hazf را در حالت true قرار میدهد .در نتیجه قبل از باز شدن فرم اصلی باید جدولی که فیلد فوق در آن درج شده یکبار آپدیت شود و بعد فرم اصلی با فیلتر نمودن رکوردها بازنمود(مطابق کدی که جناب امیری اشاره نمودند) .آپدیت نمودن جدول را میتوان در هنگام اجرای فرم استارت آپ اولیه برنامه یا در هنگام باز شدن فرم اصلی و قبل از اجرای دستور فیلتر شدن رکورد ها انجام داد.
با استفاده از کد زیر نیز میتوانید جدول مربوطه را جهت تیک نمودن فیلد hazf کلیه رکوردهائی که تاریخ بازنشستگی آنها با تاریخ جاری(شمسی) برابر است آپدیت نمائید.


DoCmd.RunSQL "UPDATE TableName SET TableName.hazf = True WHERE (([bazneshastegiDate]=shamsi()));"



موفق باشید

از کمکنون ممنون . ی سوال دارم :
کد رو همین طور که شما گفتید بنویسم یا قسمت shamsi رو باید براش تعریف کنم ؟ اگه مانند شما shamsi بنویسم برنامه اجرا می شه یا نه ؟

alirezabahrami
سه شنبه 15 مرداد 1392, 18:00 عصر
از کمکنون ممنون . ی سوال دارم :
کد رو همین طور که شما گفتید بنویسم یا قسمت shamsi رو باید براش تعریف کنم ؟ اگه مانند شما shamsi بنویسم برنامه اجرا می شه یا نه ؟
از ماژول تاریخ شمسی جناب آزادی استفاده کن!
اگر ندارید بگو تا ماژول فوق را برایت قرار بدهم
موفق باشید

1397mehrdad
سه شنبه 15 مرداد 1392, 21:41 عصر
اگخ ماژول رو قرار بدید ممنون می شم .

alirezabahrami
سه شنبه 15 مرداد 1392, 22:31 عصر
اگخ ماژول رو قرار بدید ممنون می شم .
سلام
بفرما!

درنمونه ضمیمه ماژول فوق وجود دارد.
ضمناًکدآپدیت جدول هم دراین نمونه وجوددارد(در رویداد کلیک کمندباتن)
موفق باشید