Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Nhờ các bạn hỗ trợ lỗi msgbox tiếng Việt
#1
Mình sử dụng function msgBoxUni để xử lý tiếng Việt cho mgsbox trước đây mọi việc vẫn bình thường:

[Hình: T2HYdUC.png]

Nhưng vừa rồi cài lại win 10 và office 2016 thì các msgbox tiếng Việt lại hiện tiếng Trung như thế này đây:

[Hình: TVHMfp7.png]

Kiểm tra các thiết đặt win và office vẫn thấy bình thường. chuyển qua máy khác thì vẫn lên tiếng Việt. Không biết mình đã xử lý sai chỗ nào? Có bạn nào đã gặp trường hợp này và đã xử lý được, hỗ trợ dùm mình.
Thành thật cám ơn.
*Mình chỉ cài lại win và asscess chứ chưa làm gì trên CSLD cả.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
Lâu quá không ghé TTAC...
cái vụ hiển thị toàn tiếng Trung khi dùng các hàm API có hỗ trợ Unicode như MessageBoxW , SendMessageW,... thì MTNQ  từng ngâm cứu qua khi viết class hiển thị thông báo TV cho icon ở khay hệ thống. Nó liên quan đến địa chỉ bộ nhớ
Bác đưa code lên đi  015
Chữ ký của MTNQ Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#3
Thank MTNQ 007 , đây là code:
Mã:
Option Compare Database


Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Public Function msgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult

'BStrMsg,BStrTitle : La chuoi Unicode
   Dim BStrMsg, BStrTitle
   'Hàm StrConv Chuyen chuoi ve ma Unicode
   BStrMsg = StrConv(PromptUni, vbUnicode)
   BStrTitle = StrConv(TitleUni, vbUnicode)
   
   msgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function
Mấy hôm nay phải chỉnh sửa dùng hàm Msgbox căn bản rồi dùng Vietnamese Keyboard để xử lý mà nhiều quá nên làm không xong  021
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Bác thử sửa lại như sau:

Mã:
Option Compare Database

#If VBA7 Then
   Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
   Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As LongPtr
#Else
   Private Declare Function GetActiveWindow Lib "user32" () As Long
   Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
#End If

Public Function msgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
  msgBoxUni = MessageBoxW(GetActiveWindow, StrPtr(PromptUni), StrPtr(TitleUni), Buttons)
End Function
Chữ ký của MTNQ Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn tranthanhan1962
#5
MTNQ ơi! Bị lỗi!

[Hình: YGpisrP.png]
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
MTNQ cũng đang dùng Acc 2016 và win 10 32Bit. Nếu Office 2016 thì phiên bản là VBA 7.1
bác đang dùng phiên bản nào hệ thống báo lỗi 2 dòng trên vậy ?
Chữ ký của MTNQ Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#7
Nếu Code bác đưa lên đang chạy tốt, chỉ vướng chỗ hiển thị tiếng Trung thì sửa lại như sau:

Mã:
Option Compare Database
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long

Public Function msgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
  msgBoxUni = MessageBoxW(GetActiveWindow, StrPtr(PromptUni), StrPtr(TitleUni), Buttons)
End Function

 Các sửa  đổi:

-hàm MessageBoxW :
Thay tất cà các tham số truyền vào kiểu string thành kiểu Long (ByVal lpText As Long, ByVal lpCaption As Long)

-Hàm msgBoxUni:
Do kiểu tham số thay đổi từ string sang Long nên ta phải mượn đến hàm StrPtr:
Mã:
msgBoxUni = MessageBoxW(GetActiveWindow, StrPtr(PromptUni), StrPtr(TitleUni), Buttons)
Chữ ký của MTNQ Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#8
Chào bạn MTNQ, nếu được bạn có thể mình ở topic này chuyển module loaddata, savedata và module ghi nhật kí thành class được không. Hiện tại mình đã chuyển ứng dụng của mình lên sqlserver và dùng ADO kết nối.
http://thuthuataccess.com/forum/post-392...l#pid39206
Chữ ký của mrsiro Xin chào, mình là mrsiro, Tham gia http://thuthuataccess.com/forum từ ngày 05-12 -14.
Reply
Những người đã cảm ơn
#9
(27-01-19, 07:04 AM)tranthanhan1962 Đã viết: MTNQ ơi! Bị lỗi!

Ẹc...
Nhìn thấy 2 dòng code bị tô đỏ cứ tưởng lỗi ở đó, bây giờ nhìn kỹ lại thông báo lỗi mới "ngộ ra" là lỗi kiểu dữ liệu của 2 dòng phía trên (của VBA7):
do hàm GetActiveWindow MTNQ khai báo kiểu LongPtr trong khi tham số hwnd của hàm MessageBoxW lại khai báo kiểu Long

Đôi lúc cũng "lú lẫn" bác nhỉ  014

MTNQ đã sửa lại, bác test thử xem nhé:

Mã:
Option Compare Database
#If VBA7 Then
'  Code is running in the new VBA7 editor
    #If Win64 Then
    '  Code is running in 64-bit version of Microsoft Office
       Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
       Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, ByVal wType As Long) As Long
    #Else
    '  Code is running in 32-bit version of Microsoft Office
       Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long
       Private Declare PtrSafe Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
    #End If
#Else
' Code is running in VBA version 6 or earlier
   Private Declare Function GetActiveWindow Lib "user32" () As Long
   Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, ByVal wType As Long) As Long
#End If


Public Function msgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
 msgBoxUni = MessageBoxW(GetActiveWindow, StrPtr(PromptUni), StrPtr(TitleUni), Buttons)
End Function

Sub testMSBox()
   msgBoxUni ChrW(272) & "ây là MsgBox Ti" & ChrW(7871) & "ng Vi" & ChrW(7879) & "t!", vbInformation, "MsgBox Ti" & ChrW(7871) & "ng Vi" & ChrW(7879) & "t!"
End Sub
Chữ ký của MTNQ Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn tranthanhan1962
#10
Giờ thì đã hết lỗi code như lại bị lỗi font.  021  Như cũng hơi lạ là chừ â thì lỗi mà chữ ê thì được. Không lẽ do windows 10
[Hình: Q4QF9e5.png]
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Cải thiện tốc độ chạy của ứng dụng ERP viết bằng MS access trong mạng lan. Tiennv84 8 1,118 22-04-18, 11:46 PM
Bài mới nhất: mrsiro
  Nhờ viết chương trình quản lý sim-thẻ cào ... tieuchichi 12 5,601 22-09-15, 01:02 PM
Bài mới nhất: kieu manh
  [Hỏi] Cách viết chương trình quản lí thu chi quỹ cho lớp học và quản lí đoàn viên của lớp Trần Minh Đức 8 2,847 14-07-15, 09:59 PM
Bài mới nhất: Trần Minh Đức
  Kinh nghiệm viết phần mềm cơ sở dữ liệu của mình. tranthanhan1962 2 1,308 07-04-15, 09:56 PM
Bài mới nhất: maidinhdan
  [Help] Viết phần mềm bằng access dùng chung trong mạng lan mtkien30 3 1,973 06-04-15, 11:14 PM
Bài mới nhất: tranthanhan1962

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line| Phần mềm quản lý bán hàng, công nợ- tồn kho- nhà phân phối