Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Access 2000
 
 автор: Leon   (22.06.2010 в 15:53)   личное сообщение
 
 

Уважаемые знатоки! Подскажите как создать полный аналог функции MsgBox.
это вызвано тем, что я работаю в немецкой версии, а диалог в MsgBox мне нужен русский (все пользователи моей базы владеют только русским языком).

  Ответить  
 
 автор: Силblч   (22.06.2010 в 18:52)   личное сообщение
 
 

ну так сделайте модальную форму и вперёд :)

  Ответить  
 
 автор: kot_k_k   (22.06.2010 в 21:29)   личное сообщение
 
 

если тяжело запомнить/понять - 7 немецких слов напрашивается вопрос - на кой им вообще комп и этот софт

OK, Cancel, Abort, Retry, Ignore, Yes, No - все слова в диалоге MsgBox - тут даже полиглотом не нужно быть

  Ответить  
 
 автор: Lukas   (22.06.2010 в 22:19)   личное сообщение
 
 

Я думаю вопрос не в подписях кнопок, а в системных сообщениях,
которые выводятся на языке локализации.
В этом случае стоит перехватывать системные сообщения и подменять их своими.

  Ответить  
 
 автор: Leon   (23.06.2010 в 12:31)   личное сообщение
 
 

Уважаемый Lukas! Вы правы: вопрос действительно в системных сообщениях.
Подскажите как в VBA перехватить?

  Ответить  
 
 автор: Lukas   (23.06.2010 в 12:49)   личное сообщение
 
 

У класса форма есть событие Error, там и подменяем текст сообщения.
Пример от Гетца & Co:

' From Access 2002 Desktop Developer's Handbook
' by Litwin, Getz, and Gunderloy (Sybex)
' Copyright 2001.  All rights reserved.

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

    Const adhcErrDataValidation = 3317
    Const adhcErrDataType = 2113
    Const adhcErrDuplicateKey = 3022
    Const adhcErrNullKey = 3058

    Dim strMsg As String
    Select Case DataErr
        Case adhcErrDataValidation, adhcErrDataType
            strMsg = "The data you entered does not " & _
             "fit the requirements for this field."
            strMsg = strMsg & vbCrLf & "Please try again, " & _
             "or press Escape to undo your entry."
            MsgBox strMsg, vbExclamation
            Response = acDataErrContinue
        
        Case adhcErrDuplicateKey
            strMsg = "You've attempted to add a record " & _
             "that duplicates an existing key value."
            strMsg = strMsg & vbCrLf & "Please try again, " & _
             "or press Escape to undo your entry."
            MsgBox strMsg, vbExclamation
            Response = acDataErrContinue
        
        Case adhcErrNullKey
            strMsg = "You've attempted to add a new " & _
             "record with an empty key value."
            strMsg = strMsg & vbCrLf & "Please supply " & _
             "a key value, or press Escape to undo your entry."
            MsgBox strMsg, vbExclamation
            Response = acDataErrContinue
            ' You can even place them on the right field!
            txtLastName.SetFocus
        
        Case Else
            ' It's an unexpected error.  Let Access handle it.
            Response = acDataErrDisplay
    End Select
End Sub

  Ответить  
 
 автор: Leon   (23.06.2010 в 15:35)   личное сообщение
 
 

Уважаемый Lukas! Приношу свои извинения: я имел ввиду не замену системных сообщений, а вывод самого техта сообщения. При задании текста на русском языке выводится "????????". Как я понимаю мне необходимо как-то подменить кодовую страницу.
Но думаю это не возможно. Настройки языка (Unicod="русский") приводят к аварийной работе базы (OLE не комуницируется).
Другой путь - создать полный аналог функции MsgBox, но все поиски такого решения оказались безуспешными. М.б. Вы встречали? Буду весьма признателен за помощь!

  Ответить  
 
 автор: Lukas   (23.06.2010 в 15:48)   личное сообщение
 
 

Тут есть: http://hiprog.com/index.php?option=com_content&task=view&id=527
Но, сомневаюсь, что это вам поможет.

  Ответить  
 
 автор: kot_k_k   (23.06.2010 в 15:52)   личное сообщение
 
 

попробу собирать нужный русский текст как собирает его Акс когда задаешь мастером открыть отчет с русским названием

DocName = ChrW(1056) & ChrW(1077) & ChrW(1076) & ChrW(1072) & ChrW(1082) & ChrW(1090) & ChrW(1080) & ChrW(1088) & ChrW(1086) & ChrW(1074) & ChrW(1072) & ChrW(1085) & ChrW(1080) & ChrW(1077) & ChrW(32) & ChrW(1087) & ChrW(1088) & ChrW(1080) & ChrW(1093) & ChrW(1086) & ChrW(1076) & ChrW(1085) & ChrW(1086) & ChrW(1081) & ChrW(32) & ChrW(1085) & ChrW(1072) & ChrW(1082) & ChrW(1083) & ChrW(1072) & ChrW(1076) & ChrW(1085) & ChrW(1086) & ChrW(1081)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList