PDA

View Full Version : مبتدی: کارنکردن رویدادهای فرم



mdelghandy
جمعه 17 آذر 1402, 01:57 صبح
من یه فرم خالی ایجاد کردم میخام با کلیک وسط فرم پیغامی رو نمایش بده . وقتی داخل رویداد دابل کیلیک فرم یا مثلا کلیکش کد می نویسم اون کدها اجرا نمیشه . کلن کد های مربوط به فرم اجرا نمیشه مثلا تو رویداد on error کد نوشتم که پیغام خطا ها رو فارسی کنم ولی وقتی خطا میده فرم کد هایی که نوشتم اجرا نمیشه .

ROSTAM2
جمعه 17 آذر 1402, 02:22 صبح
من یه فرم خالی ایجاد کردم میخام با کلیک وسط فرم پیغامی رو نمایش بده . وقتی داخل رویداد دابل کیلیک فرم یا مثلا کلیکش کد می نویسم اون کدها اجرا نمیشه . کلن کد های مربوط به فرم اجرا نمیشه مثلا تو رویداد on error کد نوشتم که پیغام خطا ها رو فارسی کنم ولی وقتی خطا میده فرم کد هایی که نوشتم اجرا نمیشه .

سلام
فکر کنم توی Options از برنامه باید به ماکرو ها اجازه اجرا بدی....

mdelghandy
جمعه 17 آذر 1402, 09:13 صبح
نشد . کار نمیکنه .

ROSTAM2
جمعه 17 آذر 1402, 11:39 صبح
نشد . کار نمیکنه .

مراحلی که انجام می دی یکی یکی بنویس تا بدونیم مشکل از کجاست
رویداد on error برا چیه؟

mdelghandy
جمعه 17 آذر 1402, 11:50 صبح
من میخام در رویداد های یک فرم خالی کد بنویسم . مثلن در رویداد دابل کلیک یا کلیک یا مثلا در رویداد ارور فرم . اما وقتی فرم رو اجرا میکنم رویداد هاش اجرا نمیشن . مثلن در رویداد دابل کلیکش یک مسج یاکس نوشتم ولی وقتی فرم رو اجرا میکنم و روش دابل کلیک میکنم . فرم به رویداد دابل کلیک که توش کد نوشتم حساس نیست .

ROSTAM2
جمعه 17 آذر 1402, 12:17 عصر
من میخام در رویداد های یک فرم خالی کد بنویسم . مثلن در رویداد دابل کلیک یا کلیک یا مثلا در رویداد ارور فرم . اما وقتی فرم رو اجرا میکنم رویداد هاش اجرا نمیشن . مثلن در رویداد دابل کلیکش یک مسج یاکس نوشتم ولی وقتی فرم رو اجرا میکنم و روش دابل کلیک میکنم . فرم به رویداد دابل کلیک که توش کد نوشتم حساس نیست .
نسحه ای که استفاده می کنی چیه؟

mdelghandy
جمعه 17 آذر 1402, 12:22 عصر
نسخه 2021 . وقتی فرم رو در حالت دیتا شیت ویو باز میکنم کدش اجرا میشه ولی وقتی فرم رو معمولی باز میکنم رویداد های فرم اجرا نمیشه .

mdelghandy
جمعه 17 آذر 1402, 12:25 عصر
میشه یه نمونه کد برام بزاری . در اصل من یه فرم ورود داده داده دارم . میخام وقتی کد خطای مثلن 3022 از طرف دیتا بیس صادر میشه مسج باکس ها رو فارسی کنم . کدهاش رو داخل رویداد on error فرم مینویسم . ولی فرم حساس نیست به رویداد ها و کد داخل رویداد on error اجرا نمیشه

ROSTAM2
جمعه 17 آذر 1402, 12:28 عصر
من میخام در رویداد های یک فرم خالی کد بنویسم . مثلن در رویداد دابل کلیک یا کلیک یا مثلا در رویداد ارور فرم . اما وقتی فرم رو اجرا میکنم رویداد هاش اجرا نمیشن . مثلن در رویداد دابل کلیکش یک مسج یاکس نوشتم ولی وقتی فرم رو اجرا میکنم و روش دابل کلیک میکنم . فرم به رویداد دابل کلیک که توش کد نوشتم حساس نیست .

آره واقعا اجزا نمی کنه
و این فرم ها الکیه...
بهر حال اوم قسمت ی که اصافه شده به فرم رویداد هاش عمل می کنه
در حالت دیزاین می شه رویدادهای فرم رو از قسمت قرمز رنگ انتخاب کرد ولی واقعا جواب نمی ده.

155109

ولی خوب قسمتی که با اشیاء پوشونده شده رویداداشون کار می کنه.

155110

ROSTAM2
جمعه 17 آذر 1402, 12:35 عصر
میشه یه نمونه کد برام بزاری . در اصل من یه فرم ورود داده داده دارم . میخام وقتی کد خطای مثلن 3022 از طرف دیتا بیس صادر میشه مسج باکس ها رو فارسی کنم . کدهاش رو داخل رویداد on error فرم مینویسم . ولی فرم حساس نیست به رویداد ها و کد داخل رویداد on error اجرا نمیشه

Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 1234 Then
MsgBox ("You must select a cost center before continuing.")
Response = 0
End If
End Sub


Form.Error event (Access) | Microsoft Learn (https://learn.microsoft.com/en-us/office/vba/api/access.form.error)


Private Sub Form_Error(DataErr As Integer, Response As Integer)
Select Case DataErr
Case 2113
MsgBox "Only numbers are acceptable in this box", vbCritical, "Call 1-800-123-4567"
Response = acDataErrContinue
Case 2237
MsgBox "You can only choose from the dropdown box"
Response = acDataErrContinue
Case 3022
MsgBox "You entered a value that exists already in another record"
Response = acDataErrContinue
SSN.Value = SSN.OldValue
Case 3314
MsgBox "The DOH is required, so you cannot leave this field empty"
Response = acDataErrContinue
Case Else
Response = acDataErrDisplay
End Select
ActiveControl.Undo
End Sub

mdelghandy
جمعه 17 آذر 1402, 16:14 عصر
مشکل دقیقا همینجاست . رویداد اشیا کار میکنه ولی رویداد های خود فرم کار نمیکنه .

ROSTAM2
جمعه 17 آذر 1402, 17:32 عصر
طبق چیزی که توی این تاپبک بهش رسیدن "Access Settings" - "Trust Center Settings" - "Macro Settings
باید Disable نباشه....

Event Procedures not working | Access World Forums (access-programmers.co.uk) (https://www.access-programmers.co.uk/forums/threads/event-procedures-not-working.232853/)

mdelghandy
جمعه 17 آذر 1402, 18:25 عصر
ماکرو هم فعاله . موندم چیکار کنم

eb_1345
جمعه 17 آذر 1402, 20:55 عصر
من یه فرم خالی ایجاد کردم میخام با کلیک وسط فرم پیغامی رو نمایش بده . وقتی داخل رویداد دابل کیلیک فرم یا مثلا کلیکش کد می نویسم اون کدها اجرا نمیشه . کلن کد های مربوط به فرم اجرا نمیشه مثلا تو رویداد on error کد نوشتم که پیغام خطا ها رو فارسی کنم ولی وقتی خطا میده فرم کد هایی که نوشتم اجرا نمیشه .
سلام
خوب طبیعیه که در رویداد دابل کلیک فرم کدی اجرا نمیشه چون دایل کلیک باید مستقیماً بر روی یکی از سه بخش فرم ( FormHeader ، FormFooter و Detail ) یا شی ای از فرم که قابلیت دابل کلیک رو داشته باشه صورت بگیره . فرم های اکسس دارای سه بخش FormHeader ، FormFooter و Detail میباشد . در بین این سه بخش قسمت Detail همیشه فعاله و فعال شدن دو بخش دیگه اختیاریه . بر روی هریک از این سه بخش کنترل هائی بنا به نیاز برنامه نویس درج میشه. بنابراین وقتی شما یک فرم رو اجرا می کنی این بخش ها و کنترل های درج شده بر روی اون رو مشاهده می کنی ، به عبارتی وقتی با موس دابل کلیک می کنی رو یکی از این سه بخش و اشیائی که بر روی این سه بخش درج شده کلیک یا دابل کلیک می کنی. . در رویداد های دیگر هم مثل MouseMove ، MouseDown ، MouseUp
همین حالت وجود داره
برای خود من هم همیشه این سوال و ابهام وجود داشت که چرا در محیطی همانند ویژوال بیسیک وقتی بر روی فرم کلیک یا دابل کلیک می کنی کد درج شده در این رویدادها اجرا میشه ولی در فرم های محیط اکسس اینطور نیست که متوجه شدم شاید عمده ترین دلیلش این باشه که در محیط ویژوال بیسیک فرم ها حالت یکپارچه دارند به عبارتی فرم کلاً از یک قسمت تشکیل شده ولی در اکسس برای فرم سه بخش وجود داره و باید مشخص شود که کلیک یا دابل کلیک قراره بر روی کدام قسمت صورت بگیره.
البته این نتیجه گیری شخصی بنده است و ممکن است دلیل خاص دیگری داشته باشد که من تا این لحظه از آن بیخبرم
و اما اینکه فرمودین کلاً کدهای مربوط به فرم اجرا نمیشه کاملاً اشتباهه .آیا شما وقتی در رویداد هایی همانند Form_Load ، Form_Current ، Form_Resize و دیگر خصوصیات فرم به استثناء بعضی خصوصیات ( که عکس العمل نشون ندادن اونها به دستورات وارده دلیل خاص خودش رو داره )دستوری وارد می کنی اجرا نمیشه ؟
علی ایحال برای اینکه زودتر به نتیجه برسین یک فایل نمونه رو تهیه و ضمیمه کنین تا دوستان با توجه به نمونه فایل خودتون بهتون کمک کنن
یا علی

mazoolagh
شنبه 18 آذر 1402, 10:29 صبح
فرم های اکسس دارای سه بخش FormHeader ، FormFooter و Detail میباشد

نکته اصلی همین هست که به درستی اشاره و مفصل هم شرح داده شد که برای هر بخش باید رخداد همون رو استفاده کرد.
رخداد form.doubleclick برای record selector هست.