PDA

View Full Version : سوال: درج اجباري اطلاعات در فيلد يك فرم



Profesorjd
دوشنبه 06 آبان 1387, 22:07 عصر
با سلام
1- اگر نخواهيم خاصيت Required يك فيلد را Yes‌ كنيم چگونه ميشود در "" فرم "" كاري كرد كه كاربر حتماً در فيلد مربوطه اطلاعات وارد كند ؟
2- اگر فرض اطلاعات از جدول ديگري خوانده شود ( LookUP ) چگونه ميشود كاري كرد كه همانها وارد شوند ؟
3- اگر خاصيت Required يك فيلد yes‌ باشد چگونه ميشود پيغام فارسي در فرم مبني بر ورود اجباري اطلاعات داد ؟

e601
دوشنبه 06 آبان 1387, 23:23 عصر
1. برای سوال اول میتونید کد زیر رو در رویداد BeforeUpdate کنترل مورد نظرتون (TextBox یا ComboBox) و یا رویداد Unload فرم خودتون وارد کنید و بجای Text0 نام کنترل مورد نظر را وارد کنید:


If IsNull(Me.Text0) Or Me.Text0 = "" Then
MsgBox "توجه: اطلاعات این فیلد حتما باید مشخص شود"
Cancel = True
End If

2. برای سوال دوم اگه از یک Combo استفاده میکنی کد زیر رو در رویداد NotInList وارد کن. در ضمن قبلش خاصیت LimitToList را برابر Yes قرار دهید



Response = acDataErrContinue
msgbox "شما بايد يکي از گزينه هاي موجود در ليست را انتخاب کنيد"

3. در جواب سوال سوم باید بگم با توجه به راهکارهایی که در بالا بهشون اشاره کردم فکر نمیکنم احتیاجی باشه که از خاصیت Required استفاده کنی. من که دلیلی واسه این کار نمیبینم چون پیغام ها هم که فارسی نیست

موفق باشید...

Profesorjd
پنج شنبه 09 آبان 1387, 19:30 عصر
با سلام و تشكر
1- در يك فرم كه Navigator دارد رويداد Unload آن كارايي ندارد .
2- اگر بدون وارد شدن به كنترل مد نظر از آن رد شويم نوشتن كد فوق در رويدادهاي BeforUpdate يا AfterUpdate يا Exit و ... نيز قابل استفاده نيست .
3- در يك فرم كه چندين كنترل دارد ميخواهم در هر شرايطي يك ( يا بيشتر) فيلد حتماً‌در آن اطلاعات وارد شود . اين كنترل Pk‌ نيست ، تكرار دارد ، Default گذاشتن براي آن امكانپذير نيست و .. ولي لزوماً بايد اطلاعات از ليست در آن وارد شود چراكه در جايي ديگر با استفاده از اين كنترل گزارشها و اقداماتي صورت مي گيرد .

Profesorjd
یک شنبه 12 آبان 1387, 20:46 عصر
با سلام
هنوز منتظر هستم . جوابي براي رفع اين مشكل وجود ندارد ؟!

amirzazadeh
دوشنبه 13 آبان 1387, 10:01 صبح
با سلام
3- اگر خاصيت Required يك فيلد yes‌ باشد چگونه ميشود پيغام فارسي در فرم مبني بر ورود اجباري اطلاعات داد ؟
دوست من ميتونين از اين كد استفاده كنين:

Private Sub Form_Error(DataErr As Integer, Response As Integer)

'If an error occurs because of missing data in a required field
'display our own custom error message

Const conErrRequiredData = 3314

If DataErr = conErrRequiredData Then
MsgBox ("درج اطلاعات در اين فيلد اجباري است")
Response = acDataErrContinue
Else
'Display a standard error message
Response = acDataErrDisplay
End If
End Sub
يك نمونه /اموزشي تو شماره 90 اين لينك موجود هست.
http://barnamenevis.org/forum/showthread.php?t=87658&page=9
موفق باشيد.

e601
دوشنبه 13 آبان 1387, 21:23 عصر
1- در يك فرم كه Navigator دارد رويداد Unload آن كارايي ندارد .
چرا کارایی نداره؟ فرقی نمیکنه که...
در ضمن میتونی از راهنمایی خوب جناب amirzazadeh هم استفاده کنی


3- در يك فرم كه چندين كنترل دارد ميخواهم در هر شرايطي يك ( يا بيشتر) فيلد حتماً‌در آن اطلاعات وارد شود . اين كنترل Pk‌ نيست ، تكرار دارد ، Default گذاشتن براي آن امكانپذير نيست و .. ولي لزوماً بايد اطلاعات از ليست در آن وارد شود چراكه در جايي ديگر با استفاده از اين كنترل گزارشها و اقداماتي صورت مي گيرد .

دوست خوبم گفتم خدمتتون که اگه از Combo میخوای استفاده کنی گزینه RowSource رو تنظیم کن و برای اطمینان از صحت اطلاعات از رویداد NotInList استفاده کن. البته از ListBox هم میتونی استفاده کنی

موفق باشید...

Profesorjd
سه شنبه 14 آبان 1387, 21:05 عصر
ّبا سلام و تشكر
دوستان گرامي من يك فرم دارم با چندين كنترل . چندتا از كنترلها كه اتفاقاً كامبو هستند نياز دارند كه داراي اطلاعات باشند چراكه در بخشهايي ديگر گزارشات و ورود اطلاعات بعدي وابسته به اين كامبوهاست و در صورت عدم درج اطلاعات ، قابل گزارش گيري و ورودي‌هاي بعدي نيست . با راهنمايي دوست گرامي مسعودي ! در رويدادهايي كه ذكر كردم كد مربوطه را وارد كردم( براي يافتن راه بهتر كه در رويداد AfterUpdate يا BeforUpdate‌ يا unload فرم) كه 1- اگر وارد كنترل نشويم 2- با استفاده از Navigator روي فرم ، به ركورد بعدي برويم ؛ عمل نمي كند (‌ كارايي ندارد ) .
سئوال اين است كه راهي باشد كه اگر 1- عليرغم اينكه وارد كنترل نشده باشيم 2- رفتن به ركورد بعدي با Navigator يا هر چيزي كه چندين بار اطلاعات وارد شود بدون بستن فرم ؛ در يك ركورد حتماً كاربر مجبور به ثبت اطلاعات كند كه اتفاقاً كامبويي هستند كه از ليست اطلاعاتشان را ميخوانند .
ضمناً با راهنمايي گذشته دوستان از رويداد Notinlist استفاده كرده ام و از اين بابت مشكلي نيست .

مهدی قربانی
چهارشنبه 15 آبان 1387, 12:11 عصر
سلام
نوع فرم شما چيه ؟ Single‌ ، Continuous Forms ، ....

Profesorjd
چهارشنبه 15 آبان 1387, 21:40 عصر
سلام
نوع فرم single است . توضيح اينكه با استفاده از تاپيك 90 نمونه هاي كاربردي در صورت اينكه خاصيت Required فيلد مد نظر بله باشد مناسب است اما از آنجاكه كامبوهاي من وابسته به هم هستند طبيعتاً ممكن است در وهله اول Null باشند كه كد مزبور گير خواهد كرد .
كامبوي اول واحد اصلي ، دومي واحد فرعي و سومي محل كار است . مثلاً‌ اگر واحد اصلي شركت 1 باشد واحد فرعي اداري مالي يا پشتيباني يا ترابري يا ... و اگر مثلاً اداري مالي انتخاب شود مي بايد محل كارها كارگزيني يا حقوقي يا ... شود . براي كنترل تنظيم مجدد در رويداد AfterUpdate هر كامبويي ،‌ نوشته‌ام كه كامبوي بعدي را null‌ كن و Requery تا در صورت برگشت و انتخاب از كامبوي اول سلسله مراتب رعايت شود .
به فايل پيوست توجه بفرماييد :

Profesorjd
سه شنبه 21 آبان 1387, 22:18 عصر
با سلام.
عليرغم انتظار يك هفته اي جوابي از دوستان و اساتيد دريافت نشد ولي راهي را كه رفتم را پيشنهاد ميكنم و آن استفاده از يك دكمه براي ذخيره است كه هم مشكل قبليم را حل كرد ( Null شدن يكي از فيلدها ) و مشكل استفاده از Navigator و هم مشكل خروج از فرم . كدهاي مربوطه ( هر دو كد ) در رويداد onclick دكمه ذخيره قرار دادم كه به هنگام ذخيره ركورد كنترل ميكند كه اطلاعات وارد شده است يا خير .
در هر صورت انتظار بيان شدن راههاي ديگر وجود دارد .