Unicode trong VB6 và MS Access
Số trang: 5
Loại file: pdf
Dung lượng: 84.49 KB
Lượt xem: 28
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bạn có bao giờ gặp trục trặc với tiếng Việt Unicode trong các ứng dụng Access của mình chưa? Một vấn đề mà nhiều bạn đọc gặp phải trong Access 2000 (chạy trên Win98), khi thực hiện function chuyển số sang chữ (ví dụ: "123" thành "một trăm hai mươi ba")dùng chữ Việt Unicode khi gởi ra form thì không hiển thị được chữ Việt. Trước khi giải quyết vấn đề chúng ta cần làm rõ một số điểm. Thường Office 2000 dùng ngôn ngữ VBA version 6.0 để viết code. Trên Win9x hay WinMe, có hai trở ngại khi...
Nội dung trích xuất từ tài liệu:
Unicode trong VB6 và MS Access Unicode trong VB6 và MS AccessBạn có bao giờ gặp trục trặc với tiếng Việt Unicode trong các ứng dụng Accesscủa mình chưa? Một vấn đề mà nhiều bạn đọc gặp phải trong Access 2000(chạy trên Win98), khi thực hiện function chuyển số sang chữ (ví dụ: 123thành một trăm hai m ươi ba)dùng chữ Việt Unicode khi gởi ra form thìkhông hiển thị được chữ Việt.Trước khi giải quyết vấn đề chúng ta cần l àm rõ một số điểm. Thường Office2000 dùng ngôn ngữ VBA version 6.0 để viết code. Tr ên Win9x hay WinMe,có hai trở ngại khi dùng Unicode trong lập trình hiển thị chuỗi Unicode lên cácphần tử giao diện, đó là:1. Môi trường soạn thảo code VBA không cho phép bạn nhập đúng các chuỗiUnicode.2. Các đối tượng giao diện chuẩn của VBA, version 6.0 không hiển thị đ ượcchuỗi Unicode.Để khắc phục 2 trở ngại trên, bạn nên:1. Nhập chuỗi Unicode trong cửa sổ thiết kế giao diện v à cửa sổ soạn code theođịnh dạng UTF-8 vì định dạng này tương thích với mã ASCII truyền thống. Dĩnhiên, trướckhi sử dụng thật chuỗi UTF-8, bạn cần chuyển nó về định dạng USC -2 thôngqua việc gọi hàm API Windows có tên là MultibyteToWideChar().2. Thay vì dùng các đối tượng giao diện có sẵn của môi tr ường thiết kế VBA,bạn phải dùng các đối tượng Form2 tương ứng. Microsoft Form 2.0 ObjectLibrary là m ột thư viện các đối t ượng giao diện m à Microsoft m ới viết saunày để hỗ trợ đúng mã Unicode.Chúng tôi có viết một form đơn giản, có 1 textbox để nhập giá trị số, 1 textboxđể hiển thị chuỗi chữ t ương ứng (ở dạng đơn giản nhất, cốt yếu để minh họaviệc xử lý chuỗi Unicode), 1 button cho phép chuyển số thành chuỗi. Các đốitượng được dùng đều có trong thư viện Form 2.0. Qui trình xây dựng ứngdụng này gồm các bước cụ thể sau:1. Vì phát biểu Declare của VB không khai báo đúng các h àm API có tham sốlà chuỗi Unicode nên trước tiên bạn phải xây dựng một th ư viện kiểu (typelibrary) chứa hàm MultiByteToWideChar() để dùng trong ứng dụng. Hãy dùngmột trình soạn thảo văn bản soạn nội dung đặc tả thư viện TypeLib chứa hàmMultiByteToWideChar() bằng ngôn ngữ ODL như sau (cất nội dung lên fileuniutil.odl):[ uuid(13C9AF40-856A-101B-B9C2-04021C007002), helpstring(WIDE Windows API Type Library)]library WideWin32API{ [ helpstring(KERNEL API Calls), dllname(KERNEL32) ]module KernelAPI{ [ helpstring(Convert a UTF8 string to a UCS -2 string.), entry(MultiByteToWideChar) ]long _stdcall MultiByteToWideChar( [in] long CodePage, [in] long dwFlags, [in] BSTR lpMultiByteStr, [in] long cchMultiByte, [in] BSTR lpWideCharStr, [in] long cchWideChar);};};2. Dịch file ODL trên thành file thư viện kiểu uniutil.tlb bằng tiện íchmktyplib.exe. Để có tiện ích này, bạn có thể cài bộ Visual Studio 6.0, nếu cài ởchế độ Typical, bộ VS sẽ đ ược cài vào thư mục c:Program FilesMicrosoftVisual Studio. Nếu vậy, để dịch file uniutil.odl ở trên, bạn hãy tạo một cửa sổDOS Prompt, dùng lệnh cd để chuyển về th ư mục chứa file uniutil.odl, rồinhập tuần tự 2 lệnh sau để dịch nó:c:progra~1micros~3vc98invcvars32.batmktyplib /I c:progra~1micros~3vc98include /win32 /tlb uniutil.tlbuniutil.odlGiả sử tên ngắn của thư mục Program Files l à progra~1, c ủa thư mụcMicrosoft Visual Studio là micros~3.3. Chạy VB, tạo 1 project Standard Exe để quản lý ứng dụng.4. Ấn chuột phải vào chỗ trống trong cửa sổ ToolBox, chọn mụcComponents... để hiển thị cửa sổ Components, ấn button Controls, duyệtđến mục Microsoft Forms 2.0 Object Library và chọn nó để thêm các phần tửgiao diện trong thư viện này vào Toolbox của Project VB.5. Chọn menu Project.References... để hiển thị cửa sổ References, ấn buttonBrowse rồi duyệt hệ thống file để chọn file uniutil.tlb vừa tạo ở b ước 1 để thêmnó vào Project.6. Vẽ lần lượt từng phần tử: 1 TextBox có thuộc tính Name=txtSo; 1 Label kếthợp có thuộc tính Caption=Hãy nhập số :; 1 CommandButton có thuộc tínhCaption=Bắt đầu chuyển và thuộc tính Name=cmdChuyenSo; 1 TextBox nữacó thuộc tính Name=txtChuoi; 1 Label kết hợp có thuộc tính Caption=Chuỗitương đương :. Lưu ý rằng bạn phải dùng trình hỗ trợ tiếng Việt có khả năngtạo mã UTF-8 (VietKey 2000, GVSBK 2.2,...) và chọn mã này trong việc nhậpcác chuỗi tiếng Việt trong lúc thiết kế form và viết code. Cũng l ưu ý rằng cácphần tử cần vẽ là các phần tử của thư viện Microsoft Forms 2.0 ObjectLibrary, chứ không phải là các phần tử VB chuẩn (thường chúng nằm phíadưới cùng trong cửa sổ ToolBox). Sau khi thiết kế xong, form sẽ có dạng sau(chú ý các chuỗi UTF-8 rất khó đọc):7. Tạo thủ tục xử lý sự kiện Click chuột c ho button cmdChuyenSo rồi vào cửasổ viết code của form để nhập đoạn ch ương trình sau:Option Explicitdãy chứa chuỗi UTF8 mi êu tả các ký sốmã ký số 0 đến 9 là 48 đến 57Dim dayUTF8(48 To 57) As Stringdãy chứa chuỗi UCS2 miêu tả các ký sốDim dayUCS2(48 To 57) As String Thủ tục khởi động FormPrivate Sub Form_Load()Dim s As StringDim x( ...
Nội dung trích xuất từ tài liệu:
Unicode trong VB6 và MS Access Unicode trong VB6 và MS AccessBạn có bao giờ gặp trục trặc với tiếng Việt Unicode trong các ứng dụng Accesscủa mình chưa? Một vấn đề mà nhiều bạn đọc gặp phải trong Access 2000(chạy trên Win98), khi thực hiện function chuyển số sang chữ (ví dụ: 123thành một trăm hai m ươi ba)dùng chữ Việt Unicode khi gởi ra form thìkhông hiển thị được chữ Việt.Trước khi giải quyết vấn đề chúng ta cần l àm rõ một số điểm. Thường Office2000 dùng ngôn ngữ VBA version 6.0 để viết code. Tr ên Win9x hay WinMe,có hai trở ngại khi dùng Unicode trong lập trình hiển thị chuỗi Unicode lên cácphần tử giao diện, đó là:1. Môi trường soạn thảo code VBA không cho phép bạn nhập đúng các chuỗiUnicode.2. Các đối tượng giao diện chuẩn của VBA, version 6.0 không hiển thị đ ượcchuỗi Unicode.Để khắc phục 2 trở ngại trên, bạn nên:1. Nhập chuỗi Unicode trong cửa sổ thiết kế giao diện v à cửa sổ soạn code theođịnh dạng UTF-8 vì định dạng này tương thích với mã ASCII truyền thống. Dĩnhiên, trướckhi sử dụng thật chuỗi UTF-8, bạn cần chuyển nó về định dạng USC -2 thôngqua việc gọi hàm API Windows có tên là MultibyteToWideChar().2. Thay vì dùng các đối tượng giao diện có sẵn của môi tr ường thiết kế VBA,bạn phải dùng các đối tượng Form2 tương ứng. Microsoft Form 2.0 ObjectLibrary là m ột thư viện các đối t ượng giao diện m à Microsoft m ới viết saunày để hỗ trợ đúng mã Unicode.Chúng tôi có viết một form đơn giản, có 1 textbox để nhập giá trị số, 1 textboxđể hiển thị chuỗi chữ t ương ứng (ở dạng đơn giản nhất, cốt yếu để minh họaviệc xử lý chuỗi Unicode), 1 button cho phép chuyển số thành chuỗi. Các đốitượng được dùng đều có trong thư viện Form 2.0. Qui trình xây dựng ứngdụng này gồm các bước cụ thể sau:1. Vì phát biểu Declare của VB không khai báo đúng các h àm API có tham sốlà chuỗi Unicode nên trước tiên bạn phải xây dựng một th ư viện kiểu (typelibrary) chứa hàm MultiByteToWideChar() để dùng trong ứng dụng. Hãy dùngmột trình soạn thảo văn bản soạn nội dung đặc tả thư viện TypeLib chứa hàmMultiByteToWideChar() bằng ngôn ngữ ODL như sau (cất nội dung lên fileuniutil.odl):[ uuid(13C9AF40-856A-101B-B9C2-04021C007002), helpstring(WIDE Windows API Type Library)]library WideWin32API{ [ helpstring(KERNEL API Calls), dllname(KERNEL32) ]module KernelAPI{ [ helpstring(Convert a UTF8 string to a UCS -2 string.), entry(MultiByteToWideChar) ]long _stdcall MultiByteToWideChar( [in] long CodePage, [in] long dwFlags, [in] BSTR lpMultiByteStr, [in] long cchMultiByte, [in] BSTR lpWideCharStr, [in] long cchWideChar);};};2. Dịch file ODL trên thành file thư viện kiểu uniutil.tlb bằng tiện íchmktyplib.exe. Để có tiện ích này, bạn có thể cài bộ Visual Studio 6.0, nếu cài ởchế độ Typical, bộ VS sẽ đ ược cài vào thư mục c:Program FilesMicrosoftVisual Studio. Nếu vậy, để dịch file uniutil.odl ở trên, bạn hãy tạo một cửa sổDOS Prompt, dùng lệnh cd để chuyển về th ư mục chứa file uniutil.odl, rồinhập tuần tự 2 lệnh sau để dịch nó:c:progra~1micros~3vc98invcvars32.batmktyplib /I c:progra~1micros~3vc98include /win32 /tlb uniutil.tlbuniutil.odlGiả sử tên ngắn của thư mục Program Files l à progra~1, c ủa thư mụcMicrosoft Visual Studio là micros~3.3. Chạy VB, tạo 1 project Standard Exe để quản lý ứng dụng.4. Ấn chuột phải vào chỗ trống trong cửa sổ ToolBox, chọn mụcComponents... để hiển thị cửa sổ Components, ấn button Controls, duyệtđến mục Microsoft Forms 2.0 Object Library và chọn nó để thêm các phần tửgiao diện trong thư viện này vào Toolbox của Project VB.5. Chọn menu Project.References... để hiển thị cửa sổ References, ấn buttonBrowse rồi duyệt hệ thống file để chọn file uniutil.tlb vừa tạo ở b ước 1 để thêmnó vào Project.6. Vẽ lần lượt từng phần tử: 1 TextBox có thuộc tính Name=txtSo; 1 Label kếthợp có thuộc tính Caption=Hãy nhập số :; 1 CommandButton có thuộc tínhCaption=Bắt đầu chuyển và thuộc tính Name=cmdChuyenSo; 1 TextBox nữacó thuộc tính Name=txtChuoi; 1 Label kết hợp có thuộc tính Caption=Chuỗitương đương :. Lưu ý rằng bạn phải dùng trình hỗ trợ tiếng Việt có khả năngtạo mã UTF-8 (VietKey 2000, GVSBK 2.2,...) và chọn mã này trong việc nhậpcác chuỗi tiếng Việt trong lúc thiết kế form và viết code. Cũng l ưu ý rằng cácphần tử cần vẽ là các phần tử của thư viện Microsoft Forms 2.0 ObjectLibrary, chứ không phải là các phần tử VB chuẩn (thường chúng nằm phíadưới cùng trong cửa sổ ToolBox). Sau khi thiết kế xong, form sẽ có dạng sau(chú ý các chuỗi UTF-8 rất khó đọc):7. Tạo thủ tục xử lý sự kiện Click chuột c ho button cmdChuyenSo rồi vào cửasổ viết code của form để nhập đoạn ch ương trình sau:Option Explicitdãy chứa chuỗi UTF8 mi êu tả các ký sốmã ký số 0 đến 9 là 48 đến 57Dim dayUTF8(48 To 57) As Stringdãy chứa chuỗi UCS2 miêu tả các ký sốDim dayUCS2(48 To 57) As String Thủ tục khởi động FormPrivate Sub Form_Load()Dim s As StringDim x( ...
Tìm kiếm theo từ khóa liên quan:
Javascript ASP.NET Tin học đại cương giáo trình Tin học đại cương bài giảng Tin học đại cương tài liệu Tin học đại cương lý thuyết Tin học đại cươngTài liệu có liên quan:
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 310 0 0 -
Tài liệu hướng dẫn thực hành Tin học đại cương - ĐH Bách Khoa Hà Nội
40 trang 263 0 0 -
Giáo trình Tin học đại cương part 7
19 trang 254 0 0 -
Giáo trình Tin học đại cương: Phần 1 - ĐH Kinh tế Quốc Dân
130 trang 185 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 159 0 0 -
Giáo trình Tin học đại cương (Tái bản năm 2020): Phần 1 - PGS.TS. Nguyễn Thị Thu Thủy (Chủ biên)
105 trang 148 0 0 -
Hướng dẫn thực hành lập trình C trên Visual Studio
9 trang 139 0 0 -
Giáo trình Tin học đại cương: Phần 1 - Vi Hồng Thắm
90 trang 136 0 0 -
Quản trị người dùng trong Exchange 2007 bằng Powershell
9 trang 112 0 0 -
GIÁO TRÌNH LẬP TRÌNH WEB_PHẦN 2_BÀI 3
3 trang 110 0 0