View Full Version : فرم جاری بسته نمی شود
saeed1234n
پنج شنبه 28 دی 1391, 20:39 عصر
با سلام خدمت شما دوستان عزیز
لطفا راهنمایی بفرمایید
اگر در فیلد کد کالا کدی وارد نکنیم و به فیلد بعدی برویم پیغامی به نمایش در خواهد آمد مبنی بر اینکه فیلد کد کالا خالی است اگر از کاربر سوال شود که ادامه می دهد و کاربر صرفنظر کند فرم جاری باید بسته شود اما پیغامی مبنی بر اینکه نمی توانید فرم جاری را ببندید ظاهر می شود می خواهم بدانم که علت چیست؟
با تشکر فراوان
Abbas Amiri
جمعه 29 دی 1391, 00:23 صبح
سلام
در این موارد دلیل ، Primary Key بودن ویا Yesبودن خصوصیت Required فیلد است .
saeed1234n
جمعه 29 دی 1391, 00:49 صبح
با سلام
جناب استاد چه کار باید کرد ؟
راه حل چیست ؟
Abbas Amiri
جمعه 29 دی 1391, 01:20 صبح
سلام
خطای که گفته بودید رو تازه دیدم، دلیل آن آینست که در رویداد LostFocus ,GetFocus,Exit,Enter نمیشه فرم رو بست . واصلا احتیاجی به این کار در آنجاها نیست میتونید در رویداد Form_BeforeUpdate چک کنید که اطلاعات کامل هست یا نه و درآنجا تصمیمات مقتضی بگیرید
saeed1234n
جمعه 29 دی 1391, 01:39 صبح
جناب استاد
این دستور در رویداد Form_BeforeUpdate عمل نمی کند
If IsNull(Me.txt_code_kala) Then
response = MsgBox("لطفا کد کالا را وارد کنيد" & Chr(10) + Chr(13) + Chr(13) & "آيا ادامه مي دهيد", vbOKCancel + vbCritical + vbDefaultButton1, "اخطار")
If response = 1 Then
txt_code_kala.SetFocus
Else
Me.Undo
End If
End If
Abbas Amiri
جمعه 29 دی 1391, 10:49 صبح
سلام
اولا کد مورد نظر در رویداد Form_BeforeUpdate درج نشده بود (در txt_code_kala_BeforeUpdate بود)
ثانیا قسمت مورد نظر را مثل زیر تغییردهید
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim response As VbMsgBoxResult
If IsNull(Me.txt_code_kala) Then
response = MsgBox("لطفا کد کالا را وارد کنيد" & Chr(10) + Chr(13) + Chr(13) & "آيا ادامه مي دهيد", vbOKCancel + vbCritical + vbDefaultButton1, "اخطار")
If response = vbCancel Then
Cancel = True
txt_code_kala.SetFocus
Else
Me.Undo
DoCmd.Close acForm, "frm_kalaha", acSaveYes
End If
Exit Sub
End If
saeed1234n
جمعه 29 دی 1391, 13:04 عصر
با سلام
جناب استاد در رویداد Form_BeforeUpdate هیچ اتفاقی نمی افتد رویداد عمل نمی کند
Abbas Amiri
جمعه 29 دی 1391, 13:07 عصر
سلام
رویداد Form_BeforeUpdate زمانی فعال میشود که از یک رکوردخارج میشوید
saeed1234n
جمعه 29 دی 1391, 13:41 عصر
جناب استاد
اگر محبت کنید راهنمایی بفرمایید و دستوری بنویسید که در صورتی که کاربر کد کالا را وارد نکند و با پرسش برنامه که آیا ادامه می دهید
با انصراف کاربر ،فرم بسته شود.
Abbas Amiri
جمعه 29 دی 1391, 13:58 عصر
تغییرات اعمال شد
saeed1234n
جمعه 29 دی 1391, 14:24 عصر
با تشکر فراوان از جنابعالی و حوصله ای که بخرج میدهید
جناب امیری
مثل اینکه من منظورم را بد بیان کردم
هنگامی که بدون وارد کردن کد کالا به فیلد نام کالا می رویم برنامه به کاربر اخطار میدهد که برای فیلد کد کالا مقداری وارد نکرده اید و تا کاربر مقداری در فیلد کد کالا وارد نکند
نمی تواند در فیلد نام کالا مقداری وارد کند
و اما سوال ابتدایی بنده :
هنگامی که کاربر فیلد کد کالا را پر نمی کند برنامه به او اخطار می دهد
و هنگامی که کاربر از ادامه کار صرفنظر می کند و قصد خروج از فرم را دارد
فرم اجازه خروج را نمی دهد .
مشکل بنده در اینجا است که : فرم اجازه خروج را نمی دهد
با کمال تشکر از اینکه با حوصله پاسخ ما تازه کارها را می دهید.
Abbas Amiri
جمعه 29 دی 1391, 15:03 عصر
سلام
با روشی که درپست قبلی ارائه شد چه مشکلی دارید؟ بهرحال شما نمیتوانید قبل از اینکه تکلیف فیلد کد را مشخص کنید از رکوردجاری خارج شوید ودرمثال قبلی این موضوع لحاظ شده . همانطور که قبلا گفتم در رویدادهای ذکر شده نمیتوانید فرم راببندید. پس ناگزیر جایی اقدام کنید که امکان آن هست.
saeed1234n
جمعه 29 دی 1391, 15:48 عصر
جناب امیری
ایراد روش فوق الذکر توسط شما در این است که :
زمانیکه کد کالا را خالی می گذاریم و به فیلد بعدی می رویم
برنامه نسبت به خالی بودن فیلد کد کالا هیچ گونه اعتراضی نمی کند !
و اما قصد ما این است که با خالی گذاشتن فیلد کد کالا به کاربر اخطاری مبنی بر خالی بودن فیلد کد کالا بدهد .
Abbas Amiri
جمعه 29 دی 1391, 16:56 عصر
این یک روش معمول جهت اعتبارسنجی فیلدهای یک فرم هست . شاید دوستان دیگه ، راهکار داشته باشند ولی بنده چیزدیگه ای به ذهنم نمیرسه
saeed1234n
جمعه 29 دی 1391, 23:16 عصر
با سلام
جناب امیری شکسته نفسی می فرمایید
اگر بنده جسارتی کردم به حساب نابلدی بنده بگذارید
ممنون می شوم اگر منظورتان را در database3 نشان دهید.
Abbas Amiri
جمعه 29 دی 1391, 23:33 عصر
کدهایی رو که در قسمت GotFocus ویا LostFocud کد و یا نام کالا نوشتید رو پاک کنید و بجایش فقط کد زیر رو جایگزین کنید . اگر کد رو خالی گذاشتید و نام کالارا نوشتید ، قبلا ترک رکورد جاری کدکالاچک شده و درصورت خالی بودن پیغام و ...
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim response As VbMsgBoxResult
If IsNull(Me.txt_code_kala) Then
response = MsgBox("لطفا کد کالا را وارد کنيد" & Chr(10) + Chr(13) + Chr(13) & "آيا ادامه مي دهيد", vbOKCancel + vbCritical + vbDefaultButton1, "اخطار")
If response = vbOK Then
Cancel = True
txt_code_kala.SetFocus
Else
Me.Undo
DoCmd.Close acForm, Me.Name
End If
Exit Sub
End If
End Sub
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.