View Full Version : مشکل ساخت دو پیغام برای یک دکمه
look20
یک شنبه 24 آبان 1388, 09:58 صبح
با سلام
می خواستم توی فرم خودم دکمه خروج دو تا پیغام بده:
1-اگه اطلاعات فیلدها را رو ذخیره کردم پیغام (آیا می خواهید خارج شوید؟)بدهد که دو گزینه Yesو No
Yes خارج شود
No خارج نشود
2- اگه اطلاعات فیلدها را رو ذخیره نکردم پیغام (آیا می خواهید اطلاعات را ذخیره کنید و خارج شوید؟)بدهد که سه گزینه Yesو No و Cancel بدهد که
Yes اطلاعات را ذخیره کند و خارج شود
No اطلاعات را ذخیره نکند و خارج شود
Cancel اطلاعات ذخیره نشود و فرم هم بسته نشود
البته من می تونم فقط حالت اول را بسازم ولی وقتی می خوام 2 حالت با هم استفاده بشه خطا می ده
اگه ممکنه کد صحییح اون رو برای من بفرستید
با تشکر
مهدی قربانی
یک شنبه 24 آبان 1388, 10:47 صبح
سلام
خوب فايلتون يا كد مربوطه رو مشكل داريد اينجا بذاريد .
nabeel
یک شنبه 24 آبان 1388, 11:55 صبح
سلام
شما بايد از دستور If تو در تو استفاده كنيد به طور مثال :
If MsgBox("Message A", vbYesNo) = vbNo Then
If MsgBox("Message B", vbYesNoCancel) = vbYes Then
' Your Codes Here
End If
End If
البته در صورت نياز بايد ساختار Else و يا ElseIf رو هم به اون اضافه كنيد
موفق باشيد
look20
یک شنبه 24 آبان 1388, 12:37 عصر
حجم فایلم نزدیک 17 مگابایت ولی این کد مربوط به دکمه خروج منه
Private Sub CommandExit_Click()
Dim msg As Integer
If Me.Dirty = False Then
msg = MsgBoxFa("آيا مى خواهيد خارج شويد؟ ", vbQuestion + vbYesNo + vbApplicationModal + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxSetForeground, "ذخيره اطلاعات ")
If msg = vbNo Then
DoCmd.CancelEvent
Else
If msg = vbYes Then
DoCmd.Close
End If
End If
If IsSave = False Then
If Me.Dirty = True Then
msg = MsgBoxFa("آيا مى خواهيد اين پرونده ذخيره شود؟ " & vbCrLf & _
" " & vbCrLf & _
".پس از تائيد ذخيره ، اطلاعات قبلى به هيچ وجه برگردانده نخواهد شد ", vbQuestion + vbYesNoCancel + vbApplicationModal + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxSetForeground, "ذخيره اطلاعات ")
If msg = vbYes Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
IsSave = True
Else
If msg = vbNo Then
DoCmd.RunCommand acCmdUndo
Me.tbProperSave.Value = "No"
End If
End If
End If
End If
End Sub
nabeel
یک شنبه 24 آبان 1388, 13:17 عصر
سلام
If Me.Dirty = False Then فاقد End If هستش بخشي از خطا در كد ارائه شده مربوط به اينه
يه دونه End If اضافه كنيد به انتها ، اين مشكل حل ميشه
با اضافه شدن اين End if ديگه دستور در حالتي كه شما تغييري رو در داخل فرم داده باشيد اجرا نميشه ( If Me.Dirty = False )
يشنهاد ميشه اول تاييديه ذخيره سازي رو بگيريد و بعد خروج
تعداد If ها قابل كم كردنه
If Me.Dirty = True Then
If IsSave = False Then
If Me.Dirty = True Then
msg = MsgBox("ÂíÇ ãì ÎæÇåíÏ Çíä ÑæäÏå ÐÎíÑå ÔæÏ¿ " & vbCrLf & " " & vbCrLf & ".Ó ÇÒ ÊÇÆíÏ ÐÎíÑå ¡ ÇØáÇÚÇÊ ÞÈáì Èå åí æÌå ÈÑÑÏÇäÏå äÎæÇåÏ ÔÏ ", vbQuestion + vbYesNoCancel + vbApplicationModal + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxSetForeground, "ÐÎíÑå ÇØáÇÚÇÊ ")
If msg = vbYes Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
IsSave = True
ElseIf msg = vbNo Then
DoCmd.RunCommand acCmdUndo
'Me.tbProperSave.Value = "No"
End If
End If
End If
End If
msg = MsgBox("ÂíÇ ãì ÎæÇåíÏ ÎÇÑÌ ÔæíÏ¿ ", vbQuestion + vbYesNo + vbApplicationModal + vbDefaultButton1 + vbMsgBoxRight + vbMsgBoxSetForeground, "ÐÎíÑå ÇØáÇÚÇÊ ")
If msg = vbYes Then
DoCmd.Close
End If
توضيح : پيغام اول جهت تاييديه ذخيره سازي و پيغام دوم جهت خروج
اگه نمونه اي عملي موجود بود ، امكان تست كامل وجود داشته ، بررسي باگ احتمالي به عهده خودتون
موفق باشيد
مهدی قربانی
یک شنبه 24 آبان 1388, 13:58 عصر
سلام
دوست عزيز look20 خوبي قرار دادن فايل يا كدها همينه كه اشكال كار سريعتر مشخص ميشه .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.