PDA

View Full Version : Có ai biết cách chuyển đổi font trong Access, giúp với...



nhiên
18-02-2005, 17:45
Tôi có 1 file access khoảng vài ngàn record dùng font vni, giờ phải đổi sang font Unicode. Có ai biết cách nào đổi xin chỉ giùm,xin cảm ơn nhiều.

QuanN
19-02-2005, 09:01
Export table ra text (csv) file rồi convert file đó từ VNI sang Unicode (UnicodeConverter (http://unicodeconvert.sf.net)), xong import vô lại Access. Có thể import vô 1 table khác tên để so sánh với table nguyên thủy. Nếu kiểm chứng thấy tốt, delete original table, rồi rename table mới với tên cũ.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/acconAboutSpecsSchemaFiles.asp

paulsteigel
20-02-2005, 23:47
Mình trích từ công cụ chuyển đổi bảng mã của mình ra cái này cho bạn xài nhé.
Option Explicit

Private Function GetVNIMap() As Variant
' Break multichar Vowels to an array, original functions was different, but
' I make this to fulfill your task only
Dim i As Integer, j As Integer
Dim vniArr As Variant
' Declare a variable to keep VNI vowel (two dimensions)
Dim mappedVw(1, 133) As String
On Error GoTo errmsg
' raw string of VNI code table
vniArr = Array("aù 001", "aø 002", "aû 003", "aõ 004", "aï 005", "aê 006", "aé 007", "aè 008", "aú 009", _
"aü 010", "aë 011", "aâ 012", "aá 013", "aà 014", "aå 015", "aã 016", "aä 017", "eù 018", "eø 019", "eû 020", "eõ 021", _
"eï 022", "eâ 023", "eá 024", "eà 025", "eå 026", "eã 027", "eä 028", "í 029", "ì 030", "æ 031", "ó 032", "ò 033", _
"où 034", "oø 035", "oû 036", "oõ 037", "oï 038", "oâ 039", "oá 040", "oà 041", "oå 042", "oã 043", "oä 044", _
"ôù 046", "ôø 047", "ôû 048", "ôõ 049", "ôï 050", "uù 051", "uø 052", "uû 053", "uõ 054", "uï 055", "öù 057", _
"öø 058", "öû 059", "öõ 060", "öï 061", "yù 062", "yø 063", "yû 064", "yõ 065", "î 066", "ñ 067", "AÙ 068", "AØ 069", _
"AÛ 070", "AÕ 071", "AÏ 072", "AÊ 073", "AÉ 074", "AÈ 075", "AÚ 076", "AÜ 077", "AË 078", "AÂ 079", "AÁ 080", "AÀ 081", _
"AÅ 082", "AÃ 083", "AÄ 084", "EÙ 085", "EØ 086", "EÛ 087", "EÕ 088", "EÏ 089", "EÂ 090", "EÁ 091", "EÀ 092", "EÅ 093", _
"EÃ 094", "EÄ 095", "Í 096", "Ì 097", "Æ 098", "Ó 099", "Ò 100", "OÙ 101", "OØ 102", "OÛ 103", "OÕ 104", "OÏ 105", _
"OÂ 106", "OÁ 107", "OÀ 108", "OÅ 109", "OÃ 110", "OÄ 111", "ÔÙ 113", "ÔØ 114", "ÔÛ 115", "ÔÕ 116", "ÔÏ 117", _
"UÙ 118", "UØ 119", "UÛ 120", "UÕ 121", "UÏ 122", "ÖÙ 124", "ÖØ 125", "ÖÛ 126", "ÖÕ 127", "ÖÏ 128", "YÙ 129", _
"YØ 130", "YÛ 131", "YÕ 132", "Î 133", "Ñ 134", "ô 045", "ö 056", "Ô 112", "Ö 123")
'turn this array to a 2-D array for later mapping through
For i = LBound(vniArr) To UBound(vniArr)
j = InStr(vniArr(i), " ")
mappedVw(0, i) = Trim(Mid(vniArr(i), j))
mappedVw(1, i) = Trim(Left(vniArr(i), j - 1))
Next
GetVNIMap = mappedVw

Exit Function
errmsg:
MsgBox Err.Description
End Function

Function ToUnicode(txtString As String) As String
' This function will do the conversion of text string into unicode
Dim repTxt As String, mText As String
Dim i As Long, j As Long
Dim iUnicode As Variant ' array to keep unicode char set
Dim iVni As Variant
Dim procList As Variant
ReDim procList(1, 133)
' Here is the source ansi-like of unicode
iUnicode = Array(225, 224, 7843, 227, 7841, 259, 7855, 7857, 7859, 7861, 7863, 226, 7845, 7847, 7849, _
7851, 7853, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, 7877, 7879, 237, 236, 7881, 297, 7883, _
243, 242, 7887, 245, 7885, 244, 7889, 7891, 7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, 250, _
249, 7911, 361, 7909, 432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 273, 193, 192, _
7842, 195, 7840, 258, 7854, 7856, 7858, 7860, 7862, 194, 7844, 7846, 7848, 7850, 7852, 201, 200, 7866, _
7868, 7864, 202, 7870, 7872, 7874, 7876, 7878, 205, 204, 7880, 296, 7882, 211, 210, 7886, 213, 7884, _
212, 7888, 7890, 7892, 7894, 7896, 416, 7898, 7900, 7902, 7904, 7906, 218, 217, 7910, 360, 7908, 431, _
7912, 7914, 7916, 7918, 7920, 221, 7922, 7926, 7928, 7924, 272)

'parse the parameter into this local variable
mText = txtString

' Retrive the code for VNI
iVni = GetVNIMap
' process the input string by replacing all combined multichar to a [123] form
For i = LBound(iVni, 2) To UBound(iVni, 2)
If InStr(mText, iVni(1, i)) <> 0 Then
' get the unicode approriate ansi number to the chars those will be replace
repTxt = iUnicode(Val(iVni(0, i)) - 1)
' Now replace with unicode ansi char number
mText = Replace(mText, iVni(1, i), "[" & repTxt & "]")
procList(0, j) = repTxt
procList(1, j) = ChrW(repTxt)
j = j + 1
End If
Next
ReDim Preserve procList(1, j - 1)
For i = 0 To UBound(procList, 2)
mText = Replace(mText, "[" & procList(0, i) & "]", procList(1, i))
Next
ToUnicode = mText
End Function

' nếu không chạy được code trên thì gửi cho mình mail vào ngocdd@itprog.gov.vn
Vì có lẽ diễn đàn sẽ bỏ mất một số ký tự trong phần code này

nhiên
24-02-2005, 23:21
Được rồi, hoan hô...Cám ơn mọi người nhiều lắm lắm...