PDA

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 خوبي قرار دادن فايل يا كدها همينه كه اشكال كار سريعتر مشخص ميشه .