PDA

View Full Version : سوال: جلوگیری از ذخیره سازی در شرایط خاص



hf.farhadi
سه شنبه 31 خرداد 1390, 00:38 صبح
با سلام خدمت دوستان گرامی


من یه فرمی دارم که مرخصی پرسنل رو در اون وارد میکنم . تو همین فرم یه سابفرم دارم که هنگام کلید بر روی دکمه ذخیره ، اطلاعاتی از قبیل مرخصی استفاده شده ، باقیمانده مرخصی و ...هر شخص رو برام میاره .


حالا میخوام وقتی کلید ذخیره رو کلیک کردم در سابفرمم شرط ایجاد کنم مثلاً اگر مقدار فیلد A بزرگتر از فیلد B شد عملیات ذخیره سازی انجام نشه و یه پیغام برگردونه . تو کدوم رویداد سابفرمم باید این کار رو انجام بدم.

مهدی قربانی
سه شنبه 31 خرداد 1390, 10:49 صبح
سلام
شما در رخداد كليك همون كامند باتون Save بايد بررسي كنيد كه مجموع ساعات مرخصي شخص در حد مجاز هست يا خير ، اگر مجاز بود عمليات انجام و در غير اين صورت عمليات لغو بشه . فكر نمي كنم نيازي به بكارگيري خداد هاي سابفرم باشه .

dadsara
سه شنبه 31 خرداد 1390, 11:38 صبح
سلام
می توانید این عمل را زیر کلید ذخیره انجام دهید که ابتدا عمل مقایسه را انجام دهد سپس در صورت مثبت بودن ذخیره کند و یا اینکه زیر عبور از فیلدهای A یا B این مقایسه را انجام دهید که اگر جواب مثبت بود ذخیره خاموش شود و برعکس

Zero Defect
سه شنبه 31 خرداد 1390, 20:53 عصر
سلام

جواب سئوال شما بدین گونه نمیشه داده بشه و نیاز داره نمونه شما دیده بشه , چرا که شما ممکنه به تواتر نیاز به کنترل در رویدادهای On Exit داشته باشید

فقط چون احساس میکنم یه مقدار در خصوص کاربرد دکمه Save در داخل اکسس دچار اشتباه شدید یه توضیح کوتاه میدم

میدونید که با خروج از داخل یک رکورد و یا انتقال از فرم به ساب فرم و بالعکس عملیات ذخیره سازی انجام میشه و نیازی به دکمه Save نیست پس کار دکمه Saveتوی اکسس چیه !؟ اکسس که عمیات Save کردن رو به صورت خودکار انجام میده ؟

در واقع استفاده از دکمه Save تنها در مواردی هستش که شما میخواید تغییری در اطلاعات بدون خروج از رکورد جاری انجام بشه

جهت نمایش ناکارآمدی روشی که در ذهن دارید من یک سئوال از شما میپرسم , اگر کاربر دکمه Save رو به هر دلیل فشار نده چه اتفاقی باید بیفته ؟

پس رویداد کنترلی شما علاوه بر پشت دکمه شما در نقاط دیگه هم باید اعمال بشه تا جلوی خطای احتمالی گرفته بشه

به هر حال , نمونه نیازه

موفق باشید

hf.farhadi
چهارشنبه 15 تیر 1390, 23:23 عصر
با سلام
در نمونه ضمیمه وقتی که فیلد " مانده مرخصی مجاز " از صفر کمتر باشد رنگ فیلد تغییر میکند . حالا میخوام در این حالت یعنی وقتی شخص مرخصی طلب ندارد رکورد تکمیل شده ذخیره نشه و با نمایش پیغام از ذخیره سازی جلوگیری بشه

hf.farhadi
پنج شنبه 16 تیر 1390, 23:06 عصر
دوستان منتظر لطف شما هستم

Zero Defect
جمعه 17 تیر 1390, 00:52 صبح
سلام

این کد رو در پشت دکمه ذخیره استفاده کنید , مشابه همین کد رو میتونید در پشت دکمه های پیمایشتون هم قرار بدید

Private Sub Command31_Click()
On Error GoTo Err_Command31_Click
If [Query1 subform].Form!jayez > 0 Then
If [Query1 subform].Form!jayez - Daymorkhasi > 0 Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Else
GoTo Positive
End If
Else
Positive:
MsgBox "Positive Value"
Me.Undo
End If

Exit_Command31_Click:
Exit Sub

Err_Command31_Click:
MsgBox Err.Description
Resume Exit_Command31_Click

End Sub

پشت کامبو باکستون هم کد


Private Sub Combo14_AfterUpdate()
[Query1 subform].Requery
End Sub


کدهای بالا رو تست کنید چون بنده فقط یکی دو تا رکورد باهاش تست کردم اگه مشکل داشت اطلاع بدید

خدانگهدار

hf.farhadi
شنبه 18 تیر 1390, 01:05 صبح
با سلام zero Defect عزیز و سپاسگذاری فراوان بابت زحمتی که کشیدی
دو تا مشکل دارم ممنون میشم راهنمایی کنین
اول اینکه در نمونه زیر در بعضی از فیلدها، مانده مرخصی بیشتر از صفر هست ولی بازم موقع کلید کردن بر روی دکمه ذخیره پیام غیر مجاز بودن مرخصی میده (مثلاً فیلد یکی به آخر)

دوم اینکه وقتی کاربر اقدام به پر کردن مرخصی میکنه و قبل از تکمیل روزهای مرخصی ، منصرف میشه و از فرمخارج میشه . رکوردی که اطلاعاتش ناقص هست پاک بشه تو کدوم روال باید کد نویسی بکنم (مثلاً فیلد آخر).

من همچین کدی نوشتم ولی ندونستم کجا استفاده کنم

If Me.Date1.Value And Me.Date2.Value = 0 Then
Me.Form.Undo
End If

Zero Defect
شنبه 18 تیر 1390, 09:36 صبح
سلام


اول اینکه در نمونه زیر در بعضی از فیلدها، مانده مرخصی بیشتر از صفر هست ولی بازم موقع کلید کردن بر روی دکمه ذخیره پیام غیر مجاز بودن مرخصی میده (مثلاً فیلد یکی به آخر)

ای کاش دقیقا به شخص اشاره میکردید , فکر میکنم منظورتون ارسلان بود

تست کردم مشکلی نداشت


من همچین کدی نوشتم ولی ندونستم کجا استفاده کنم

اون کدتون رو با یک تغییر در پشت دکمه خروج قرار بدید

If Me.Date1.Value=0 Or Me.Date2.Value = 0 Then
Me.Form.Undo
End If
DoCmd.Close

باید از Or استفاده کنید چرا که اگر هر یک از دو تاریخ کامل نباشه , اطلاعات مورد نیاز ناقصه

................

توضیح : ببینید در یک برنامه کامپیوتری وقتی که برنامه قادر باشه برای چند رکورد نمونه یک عملی رو به درستی انجام بده قاعدتا روش به درستی پیاده سازی شده
اگر در خصوص بعضی رکوردها این امر محقق نمیشه , اطلاعات وارده تطابق کامل با استاندارد اولیه رو ندارند

پس به دنبال اختلاف اون اطلاعات با همدیگه باشید تا بتونید مشکل رو رفع کنید

ضمن اینکه روش کلی درج شده , قاعدتا باید بتونید به کمک اونها مشکل رو حل کنید

موفق باشید