Đọc dữ liệu từ Foxpro for DOS và Convert sang Vni-Times hoặc Font TCVN3 bằng Visual Basic 6
Sunday, August 26, 2007 10:44:08 AM
[/img]Đọc dữ liệu từ Foxpro for DOS và Convert sang Vni-Times hoặc Font TCVN3 bằng Visual Basic 6Thời này mà còn nói, còn bàn đến FoxPro for Dos thì đúng là dở hơi thật
. Hệch hệch... Thây kệ, em đây rãnh rỗi dở hơi nên cứ viết mà Post thui. Lỡ công ty của anh em nào còn dùng cái Phóc bờ rồ for Dos mà lấn cấn trong việc chuyển đổi Font từ Fox thì cứ làm theo em thì được hà. (Nếu không được thì ráng chịu ha ^_^). Dạo ấy (nói là dạo ấy chứ thực chất là tính đến thời điểm đang ngồi gõ luôn
). Dạo ấy cái Bank của bên em nó vẫn còn hàng nghìn chi nhánh trong cả nước xài cái Fox cổ lỗ xĩ. Ngó sang bên Bank bạn thấy nó chạy chương trình trên nền quin dau nè, dữ liệu tập trung nè, giao dịch thì cứ cờ lic chuột 1 cái là DONE. Phẻ lắm. Còn bên em thì phải nói là thôi rồi, trần ai khoai củ với cái Fox lun. hồi bốn năm trước em chỉ học C, C#, VB6, VB.NET, ASP, ASP.NET, HTML, Javascript, PHP, Pascal, DelPhi, rồi cả cấp thấp như chú ASM (Assembler) cũng chơi tuốt, ôi nhiều quá...
(Anh em thông cảm gõ nhiều để có tác dụng cho Gút gồ nó tìm ra đó mà ^_^). Vì thế nên khi đụng đến thèn Foxpro em cáu lắm. Dùng mấy chiêu ODBC hay gì gì gì gì ....để kết nối đến Database của Foxpro thì được nhưng mà hix hix mấy cái Font chữ thì thằng VB 6 hông hiểu, bữa trước em có tìm hiểu kỹ vì sao lại như thế lắm
. Nhưng hôm nay quên rùi, cứ nói dạng thô trước đi ha. Rồi khi nào em nhớ thì em nói thêm về Font phiếc nữa
. à ờ ...nói chung là không được vì Dos nó encode kiểu khác (OEM hay sao á) còn win thì ANSI (Trong Windows cũng có cách chỉnh trong Registry cho nó hiểu khác vẫn được, nhưng ở đây em không nói về cách chỉnh đó, vì nói về nó chỉ có 2 dòng làm ngắn bài post của em nên em xin thôi ^_^). Cũng có mấy đợt 1 số chi nhánh cái bank của em chuyển đổi số liệu từ Fox lên để dùng cho các ứng dụng trên Windows, nhưng mà hỏi mấy lão ở trển lão nào cũng lắc đầu không chỉ (Hay là không biết cũng nên) nên đành tự mày mò vậy
.Vào chủ đề chính ha :
Đầu tiên để đọc được mấy cái file chấm DBF thì phải biết cấu trúc của nó rồi ...tá lả um la xùm hết. Em đây cũng choáng váng khi tìm hiểu về nó
. He he. Nhưng hổng sao, cà cày cà cọc trên Net cũng lòi ra được 1 cái Module đọc file DBF do anh nào tốt bụng share tùa lua trên VBForum (http://www.vbforums.com) nên em dùng luôn. (Lúc đầu em có tập viết cái đọc rùi, nhưng đọc ra toàn tầm bậy cộng tầm bạ không à
)Code của nó đây . Do ngứa tay chưn nên Em có chỉnh lổ chỗ mấy chỗ, mong tác giả đừng báng bổ
thì em lại khổ ^_^ :Chép vào trong 1 Module
Option Explicit
Private Type dBHeader
Version As String * 1 'dBaseIII file header
Lastupdate As String * 3 ' 32 bytes
NumRecs As Long
NumBytesHeader As Integer
NumBytesRec As Integer
Trash As String * 20
End Type
Private Type FieldDescriptor 'Field Descriptions
FName As String * 11 ' 32 bytes * Number of Fields
FType As String * 1 ' Up to 128
DataAddress As String * 4
Length As String * 1
DecimalCount As String * 1
Trash As String * 14
End Type
Private Header As dBHeader, FieldDes As FieldDescriptor 'Creating variables for user-defined types
Private Function FileExistsWithDir(ByVal filename As String)
Dim file_name As String
file_name = Dir$(filename)
FileExistsWithDir = (file_name <> "")
End Function
Public Sub readDBF(dBaseName As String, ByRef myTable() As Variant, ByRef myFieldNames() As String)
Dim fID As Integer
Dim inYear As Integer, inMonth As Integer, inDay As Integer
Dim NumFields As Integer
Dim i As Long, j, k As Integer
Dim DELETED As Boolean
Dim FieldDes() As FieldDescriptor
Dim s As String
Dim Length As Long
Dim curRecord As String, curField As String
Dim dValue As Double, bValue As Boolean, lValue As Long
Dim dateValue As Date
fID = FreeFile
If dBaseName$ = "" Then Exit Sub
If FileExistsWithDir(dBaseName$) = False Then
MsgBox "File :" & dBaseName$ & "Khong ton ta.i"
End If
Open dBaseName For Binary As #fID
Get #1, , Header
Select Case Header.Version
Case Chr$(&H3)
Case Chr$(&H83)
Case Chr$(&HF5) 'Ca'i na`y ca'c file FOXPro 2.6 cu~ Header version la` H85
Case Else
MsgBox "This is not Database dBASE III file & " & Header.Version
Close #1
Exit Sub
End Select
inYear = 1900 + Asc(Mid$(Header.Lastupdate, 1, 1))
inMonth = Asc(Mid$(Header.Lastupdate, 2, 1))
inDay = Asc(Mid$(Header.Lastupdate, 3, 1))
'Calculate the number of fields
NumFields = Header.NumBytesHeader \ 32 - 1
ReDim FieldDes(1 To NumFields) As FieldDescriptor
ReDim myFieldNames(1 To NumFields)
'Looping through NumFields by reading in 32 byte records
For i = 1 To (NumFields)
Get #1, (32 * i) + 1, FieldDes(i)
myFieldNames(i) = FieldDes(i).FName
Next i
' Initialise the table
If Header.NumRecs = 0 Then
MsgBox "File: " & dBaseName & " chua co' so lie.u"
ReDim myTable(0 To Header.NumRecs, 1 To NumFields)
k = 0
Else
ReDim myTable(1 To Header.NumRecs, 1 To NumFields)
k = 1
End If
'The field names, lengths, and types are read. Now read in the data
Seek #1, Header.NumBytesHeader + 1 'Advance the file pointer to the beginning of the data section
For i = k To Header.NumRecs 'Now loop through the number of records
curRecord = String$(Header.NumBytesRec, " ") 'Create MangDuLieu variable string length of length= record length
Get #1, , curRecord 'Read in the number of bytes in one record
Length = 2
For j = 1 To NumFields
' test if record is to be treatend as deleted
If Left$(curRecord, 1) = "*" Then Exit For
curField = Mid$(curRecord, Length, Asc(FieldDes(j).Length))
Select Case FieldDes(j).FType
Case "D"
myTable(i, j) = curField
Case "C"
myTable(i, j) = curField
Case "N"
'Turn numeric fields into DOUBLE types
If FieldDes(j).DecimalCount <> " " Then
dValue = Val(curField) / 10 ^ Val(FieldDes(j).DecimalCount)
Else
dValue = Val(curField)
End If
myTable(i, j) = dValue
Case "L"
'assign an integer to logical types
myTable(i, j) = False
If curField = "T" Or curField = "Y" Then myTable(i, j) = True
Case "M"
' Memo field (ignore!)
End Select
Length = Length + Asc(FieldDes(j).Length)
Next j
Next i
' now close the File
Close #fID
End Sub
Đọc vào code nếu anh em nào khó hiểu chỗ nào thì cứ nói em, em sẽ giải thích cho ha.
Cái thủ tục của nó là readDBF với 3 tham số, anh em đã đến mức tìm hỉu về cái việc này chỉ chắc khỏi cần giải thích nữa ha. tham số thứ nhất là đường dẫn đến file DBF, tham số thứ hai là các Record của file DBF đó, và tham số thứ ba là tên của các trường
ví dụ file DBF của ta có đường dẫn là d:\hehe.DBF, có 2 trường là STT và HoTen, trong đó có số liệu của 1000 sinh viên. Thì để đọc thì ta dùng cú pháp sau : ReadDBF "d:\hehe.DBF", DanhSachSinhVien, TenTruong
Với khai báo biến DanhSachSinhVien là kiểu mảng Variant và TenTruong là kiểu mảng chuỗi String nhé.
Sau khi đọc xong thì mọi việc đã trở nên đơn giản hơn rùi. Bây giờ thì tới lúc cần đến sự cần cù bù thông minh đây. Hix ! phải mò từng kí tự tương ứng để chuyển đổi cho phù hợp mà
. Em xin giới thiệu 1 số hàm nhé :- Function vniDosToVni(vnidos As Byte) As String : Nhìn vào tên hàm thật dễ hiểu
, hàm này có tác dụng chuyển đổi 1 mã ký tự Character Code (Kiểu Byte) từ Vni DOS sang Vni for Windows. Xin giải thích thêm là : ví dụ trên Windows có nhiều chương trình hỗ trợ việc nhập liệu tiếng Việt Như VietKey, Unikey, Vietware,...thì khi xa xưa ở trên nền Dos cũng có nhiều chương trình hỗ trợ việc nhập liệu và thể hiện tiếng việt, Vni Dos em dùng trong câu văn là những dữ liệu được nhập liệu bởi VietRes (1 chương trình hỗ trợ nhập liệu và thể hiện Tiếng Việt trong DOS) hoặc các chương trình tương tự như Vni-EZ,...- Function vniDosToAbc(vnidos As Byte) As Byte Tương tự như cái hàm trên kia chỉ khác là nó chuyển sang TCVN3 thôi. Còn thêm 1 cái khác nữa là dũ liệu trả về lại là kiểu Byte, vì sao ở trên thì trả về String còn ở dưới lại là Byte hả ta ?? À tại vì chú Font chữ Vni là 2 byte còn chú TCVN3 là font chữ chỉ 1 Byte thui.
- Function Convert_ChuoiDosToABC(ByVal str As String) As String : à ờ cái hàm này dùng chuyển 1 chuỗi Vni Dos sang ABC thui.
- Function Convert_ChuoiDosToVNI(ByVal str As String) As String : .........y chang như trên ................VNI.......^_^
- Còn 2 cái Function TCVN3toVNI và VNItoTCVN3 thì em lụm đâu đó trên In tờ lét nhét vô lun cho nó nhiều hàm đó mà ^_^ (2 hàm này có tác dụng chuyển đổi 1 chuỗi từ VNI sang TCVN3 và ngược lại thui)
Còn sau đây là code của các chú nó đây: (AE cho nó vào cái Module cho dễ quản nhé)
Option Explicit
Public Function vniDosToVni(vnidos As Byte) As String
Select Case vnidos
Case 161: vniDosToVni = "í"
Case 140, 141: vniDosToVni = "ì"
Case 169: vniDosToVni = "æ"
Case 170: vniDosToVni = "ó"
Case 171: vniDosToVni = "ò"
Case 238: vniDosToVni = "yù"
Case 239: vniDosToVni = "yø"
Case 240: vniDosToVni = "yû"
Case 241: vniDosToVni = "yõ"
Case 242: vniDosToVni = "î"
Case 173: vniDosToVni = "ñ"
Case 174: vniDosToVni = "Ñ"
Case 252: vniDosToVni = "AÊ"
Case 232: vniDosToVni = "aê"
Case 253: vniDosToVni = "AÂ"
Case 131: vniDosToVni = "aâ"
Case 254: vniDosToVni = "EÂ"
Case 136: vniDosToVni = "eâ"
Case 249: vniDosToVni = "OÂ"
Case 147: vniDosToVni = "oâ"
Case 250: vniDosToVni = "Ô"
Case 243: vniDosToVni = "ô"
Case 251: vniDosToVni = "Ö"
Case 159: vniDosToVni = "ö"
Case 96, 133: vniDosToVni = "aø"
Case 124, 224: vniDosToVni = "aû"
Case 125, 225: vniDosToVni = "aõ"
Case 94, 160: vniDosToVni = "aù"
Case 126, 226: vniDosToVni = "aï"
Case 234: vniDosToVni = "aè"
Case 235: vniDosToVni = "aú"
Case 236: vniDosToVni = "aü"
Case 233: vniDosToVni = "aé"
Case 237: vniDosToVni = "aë"
Case 135, 228: vniDosToVni = "aà"
Case 229: vniDosToVni = "aå"
'Ta bo di 140 vi` GDTT xem 140 la` ki tu i`
'Nguyen Mau la nhu the nay: case 140, 229: vniDosToVNI = 200 ' ?,?
Case 144, 230: vniDosToVni = "aã"
Case 128, 227: vniDosToVni = "aá"
Case 175, 231: vniDosToVni = "aä"
Case 5, 138: vniDosToVni = "eø"
Case 6, 129: vniDosToVni = "eû"
Case 7, 132: vniDosToVni = "eõ"
Case 4, 130: vniDosToVni = "eù"
Case 8, 134: vniDosToVni = "eï"
Case 10, 139: vniDosToVni = "eà"
Case 11, 142: vniDosToVni = "eå"
Case 12, 143: vniDosToVni = "eã"
Case 9, 137: vniDosToVni = "eá"
Case 190, 172: vniDosToVni = "eä"
Case 20, 149: vniDosToVni = "oø"
Case 21, 145: vniDosToVni = "oû"
Case 22, 146: vniDosToVni = "oõ"
Case 19, 162: vniDosToVni = "où"
Case 23, 148: vniDosToVni = "oï"
Case 25, 152: vniDosToVni = "oà"
Case 206, 153: vniDosToVni = "oå"
Case 27, 154: vniDosToVni = "oã"
Case 24, 150: vniDosToVni = "oá"
Case 28, 155: vniDosToVni = "oä"
Case 30, 245: vniDosToVni = "ôø"
Case 31, 246: vniDosToVni = "ôû"
Case 208, 247: vniDosToVni = "ôõ"
Case 29, 244: vniDosToVni = "ôù"
Case 209, 248: vniDosToVni = "ôï"
Case 211, 151: vniDosToVni = "uø"
Case 212, 156: vniDosToVni = "uû"
Case 213, 157: vniDosToVni = "uõ"
Case 210, 163: vniDosToVni = "uù"
Case 214, 158: vniDosToVni = "uï"
Case 216, 165: vniDosToVni = "öø"
Case 217, 166: vniDosToVni = "öû"
Case 218, 167: vniDosToVni = "öõ"
Case 215, 164: vniDosToVni = "öù"
Case 219, 168: vniDosToVni = "öï"
Case Else: vniDosToVni = Chr(vnidos) 'Khong doi
End Select
End Function
Public Function vniDosToAbc(vnidos As Byte) As Byte
Select Case vnidos ' Gi?i thích
Case 161: vniDosToAbc = 221 'i'
Case 140, 141: vniDosToAbc = 215 'i`
Case 169: vniDosToAbc = 216 'i?
Case 170: vniDosToAbc = 220 'i~
Case 171: vniDosToAbc = 222 'i.
Case 238: vniDosToAbc = 253 'y'
Case 239: vniDosToAbc = 250 'y`
Case 240: vniDosToAbc = 251 'y?
Case 241: vniDosToAbc = 252 'y~
Case 242: vniDosToAbc = 254 'y.
Case 173: vniDosToAbc = 174 'd+
Case 174: vniDosToAbc = 167 'D+
Case 173: vniDosToAbc = 174
Case 174: vniDosToAbc = 167
Case 252: vniDosToAbc = 161
Case 232: vniDosToAbc = 168
Case 253: vniDosToAbc = 162
Case 131: vniDosToAbc = 169
Case 254: vniDosToAbc = 163
Case 136: vniDosToAbc = 170
Case 249: vniDosToAbc = 164
Case 147: vniDosToAbc = 171
Case 250: vniDosToAbc = 165
Case 243: vniDosToAbc = 172
Case 251: vniDosToAbc = 166
Case 159: vniDosToAbc = 173
Case 96, 133: vniDosToAbc = 181 ' À,à
Case 124, 224: vniDosToAbc = 182 ' ?,?
Case 125, 225: vniDosToAbc = 183 ' Ã,ã
Case 94, 160: vniDosToAbc = 184 ' Á,á
Case 126, 226: vniDosToAbc = 185 ' ?,?
Case 234: vniDosToAbc = 187 ' ?
Case 235: vniDosToAbc = 188 ' ?
Case 236: vniDosToAbc = 189 ' ?
Case 233: vniDosToAbc = 190 ' ?
Case 237: vniDosToAbc = 198 ' ?
Case 135, 228: vniDosToAbc = 199 ' ?,?
Case 229: vniDosToAbc = 200 ' ?,?
'Ta bo di 140 vi` GDTT xem 140 la` ki tu i`
'Nguyen Mau la nhu the nay: Case 140, 229: vniDosToAbc = 200 ' ?,?
Case 144, 230: vniDosToAbc = 201 ' ?,?
Case 128, 227: vniDosToAbc = 202 ' ?,?
Case 175, 231: vniDosToAbc = 203 ' ?,?
Case 5, 138: vniDosToAbc = 204 ' È,è
Case 6, 129: vniDosToAbc = 206 ' ?,?
Case 7, 132: vniDosToAbc = 207 ' ?,?
Case 4, 130: vniDosToAbc = 208 ' É,é
Case 8, 134: vniDosToAbc = 209 ' ?,?
Case 10, 139: vniDosToAbc = 210 ' ?,?
Case 11, 142: vniDosToAbc = 211 ' ?,?
Case 12, 143: vniDosToAbc = 212 ' ?,?
Case 9, 137: vniDosToAbc = 213 ' ?,?
Case 190, 172: vniDosToAbc = 214 ' ?,?
Case 20, 149: vniDosToAbc = 223 ' Ò,ò
Case 21, 145: vniDosToAbc = 225 ' ?,?
Case 22, 146: vniDosToAbc = 226 ' Õ,õ
Case 19, 162: vniDosToAbc = 227 ' Ó,ó
Case 23, 148: vniDosToAbc = 228 ' ?,?
Case 25, 152: vniDosToAbc = 229 ' ?,?
Case 206, 153: vniDosToAbc = 230 ' ?,?
Case 27, 154: vniDosToAbc = 231 ' ?,?
Case 24, 150: vniDosToAbc = 232 ' ?,?
Case 28, 155: vniDosToAbc = 233 ' ?,?
Case 30, 245: vniDosToAbc = 234 ' ?,?
Case 31, 246: vniDosToAbc = 235 ' ?,?
Case 208, 247: vniDosToAbc = 236 ' ?,?
Case 29, 244: vniDosToAbc = 237 ' ?,?
Case 209, 248: vniDosToAbc = 238 ' ?,?
Case 211, 151: vniDosToAbc = 239 ' Ù,ù
Case 212, 156: vniDosToAbc = 241 ' ?,?
Case 213, 157: vniDosToAbc = 242 ' ?,?
Case 210, 163: vniDosToAbc = 243 ' Ú,ú
Case 214, 158: vniDosToAbc = 244 ' ?,?
Case 216, 165: vniDosToAbc = 245 ' ?,?
Case 217, 166: vniDosToAbc = 246 ' ?,?
Case 218, 167: vniDosToAbc = 247 ' ?,?
Case 215, 164: vniDosToAbc = 248 ' ?,?
Case 219, 168: vniDosToAbc = 249 ' ?,?
Case Else: vniDosToAbc = vnidos ' Không ??i
End Select
End Function
Public Function VNItoTCVN3(vnstr As String)
Dim c As String, i As Integer
Dim db As Boolean
For i = 1 To Len(vnstr)
db = False
If i < Len(vnstr) Then
c = Mid(vnstr, i + 1, 1)
If c = "ù" Or c = "ø" Or c = "û" Or c = "õ" Or c = "ï" Or _
c = "ê" Or c = "é" Or c = "è" Or c = "ú" Or c = "ü" Or c = "ë" Or _
c = "â" Or c = "á" Or c = "à" Or c = "å" Or c = "ã" Or c = "ä" Or _
c = "Ù" Or c = "Ø" Or c = "Û" Or c = "Õ" Or c = "Ï" Or _
c = "Ê" Or c = "É" Or c = "È" Or c = "Ú" Or c = "Ü" Or c = "Ë" Or _
c = "Â" Or c = "Á" Or c = "À" Or c = "Å" Or c = "Ã" Or c = "Ä" Then db = True
End If
If db Then
c = Mid(vnstr, i, 2)
Select Case c
Case "aù": c = "¸"
Case "aø": c = "µ"
Case "aû": c = "¶"
Case "aõ": c = "·"
Case "aï": c = "¹"
Case "aê": c = "¨"
Case "aé": c = "¾"
Case "aè": c = "»"
Case "aú": c = "¼"
Case "aü": c = "½"
Case "aë": c = "Æ"
Case "aâ": c = "©"
Case "aá": c = "Ê"
Case "aà": c = "Ç"
Case "aå": c = "È"
Case "aã": c = "É"
Case "aä": c = "Ë"
Case "eù": c = "Ð"
Case "eø": c = "Ì"
Case "eû": c = "Î"
Case "eõ": c = "Ï"
Case "eï": c = "Ñ"
Case "eâ": c = "ª"
Case "eá": c = "Õ"
Case "eà": c = "Ò"
Case "eå": c = "Ó"
Case "eã": c = "Ô"
Case "eä": c = "Ö"
Case "où": c = "ã"
Case "oø": c = "ß"
Case "oû": c = "á"
Case "oõ": c = "â"
Case "oï": c = "ä"
Case "oâ": c = "«"
Case "oá": c = "è"
Case "oà": c = "å"
Case "oå": c = "æ"
Case "oã": c = "ç"
Case "oä": c = "é"
Case "ôù": c = "í"
Case "ôø": c = "ê"
Case "ôû": c = "ë"
Case "ôõ": c = "ì"
Case "ôï": c = "î"
Case "uù": c = "ó"
Case "uø": c = "ï"
Case "uû": c = "ñ"
Case "uõ": c = "ò"
Case "uï": c = "ô"
Case "öù": c = "ø"
Case "öø": c = "õ"
Case "öû": c = "ö"
Case "öõ": c = "÷"
Case "öï": c = "ù"
Case "yù": c = "ý"
Case "yø": c = "ú"
Case "yû": c = "û"
Case "yõ": c = "ü"
Case "AÙ": c = "¸"
Case "AØ": c = "µ"
Case "AÛ": c = "¶"
Case "AÕ": c = "·"
Case "AÏ": c = "¹"
Case "AÉ": c = "¾"
Case "AÈ": c = "»"
Case "AÚ": c = "¼"
Case "AÜ": c = "½"
Case "AË": c = "Æ"
Case "AÁ": c = "Ê"
Case "AÀ": c = "Ç"
Case "AÅ": c = "È"
Case "AÃ": c = "É"
Case "AÄ": c = "Ë"
Case "EÙ": c = "Ð"
Case "EØ": c = "Ì"
Case "EÛ": c = "Î"
Case "EÕ": c = "Ï"
Case "EÏ": c = "Ñ"
Case "EÁ": c = "Õ"
Case "EÀ": c = "Ò"
Case "EÅ": c = "Ó"
Case "EÃ": c = "Ô"
Case "EÄ": c = "Ö"
Case "OÙ": c = "ã"
Case "OØ": c = "ß"
Case "OÛ": c = "á"
Case "OÕ": c = "â"
Case "OÏ": c = "ä"
Case "OÁ": c = "è"
Case "OÀ": c = "å"
Case "OÅ": c = "æ"
Case "OÃ": c = "ç"
Case "OÄ": c = "é"
Case "ÔÙ": c = "í"
Case "ÔØ": c = "ê"
Case "ÔÛ": c = "ë"
Case "ÔÕ": c = "ì"
Case "ÔÏ": c = "î"
Case "UÙ": c = "ó"
Case "UØ": c = "ï"
Case "UÛ": c = "ñ"
Case "UÕ": c = "ò"
Case "UÏ": c = "ô"
Case "ÖÙ": c = "ø"
Case "ÖØ": c = "õ"
Case "ÖÛ": c = "ö"
Case "ÖÕ": c = "÷"
Case "ÖÏ": c = "ù"
Case "YÙ": c = "ý"
Case "YØ": c = "ú"
Case "YÛ": c = "û"
Case "YÕ": c = "ü"
Case "AÊ": c = "¡"
Case "AÂ": c = "¢"
Case "EÂ": c = "£"
Case "OÂ": c = "¤"
End Select
Else
c = Mid(vnstr, i, 1)
Select Case c
Case "ô": c = "¬"
Case "i": c = "i"
Case "í": c = "Ý"
Case "ì": c = "×"
Case "æ": c = "Ø"
Case "ó": c = "Ü"
Case "ò": c = "Þ"
Case "ö": c = ""
Case "î": c = "þ"
Case "ñ": c = "®"
Case "A": c = "A"
Case "Ô": c = "¥"
Case "I": c = "I"
Case "Í": c = "Æ"
Case "Ý": c = "Ø"
Case "U": c = "U"
Case "Ö": c = "¦"
Case "Y": c = "Y"
Case "Ñ": c = "§"
End Select
End If
VNItoTCVN3 = VNItoTCVN3 + c
If db Then i = i + 1
Next i
End Function
Public Function Convert_ChuoiDosToABC(ByVal str As String) As String
Dim ii As Integer
Dim s1 As String
s1 = ""
For ii = 1 To Len(str)
s1 = s1 & Chr(vniDosToAbc(Asc(Mid(str, ii, 1))))
Next ii
Convert_ChuoiDosToABC = s1
End Function
Public Function Convert_ChuoiDosToVNI(ByVal str As String) As String
Dim ii As Integer
Dim s1 As String
s1 = ""
For ii = 1 To Len(str)
s1 = s1 & vniDosToVni(Asc(Mid(str, ii, 1)))
Next ii
Convert_ChuoiDosToVNI = s1
End Function
Public Function TCVN3toVNI(ByVal vnstr As String)
Dim c As String, i As Integer
Dim db As Boolean
For i = 1 To Len(vnstr)
db = False
c = Mid(vnstr, i, 1)
If c = "¸" Or c = "µ" Or c = "¶" Or c = "·" Or c = "¹" Or c = "¨" Or c = "¾" Or c = "»" Or c = "¼" Or c = "½" Or _
c = "Æ" Or c = "©" Or c = "Ê" Or c = "Ç" Or c = "È" Or c = "É" Or c = "Ë" Or c = "Ð" Or c = "Ì" Or c = "Î" Or c = "Ï" Or c = "Ñ" Or c = "ª" Or c = "Õ" Or c = "Ò" Or c = "Ó" Or c = "Ô" Or c = "Ö" Or c = "ã" Or c = "ß" Or c = "á" Or c = "â" Or c = "ä" Or c = "«" Or c = "è" Or c = "å" Or c = "æ" Or c = "ç" Or c = "é" Or c = "í" Or c = "ê" Or c = "ë" Or c = "ì" Or c = "î" Or c = "ó" Or c = "ï" Or c = "ñ" Or c = "ò" Or c = "ô" Or c = "ø" Or c = "õ" Or c = "ö" Or c = "÷" Or c = "ù" Or c = "ý" Or c = "ú" Or c = "û" Or c = "ü" Or c = "¸" Or _
c = "µ" Or c = "" Or c = "•" Or c = "¹" Or c = "¾" Or c = "»" Or c = "¼" Or c = "½" Or c = "Æ" Or c = "Ê" Or c = "Ç" Or c = "È" Or c = "É" Or c = "Ë" Or c = "Ð" Or c = "Ì" Or c = "Î" Or c = "Ï" Or c = "Ñ" Or _
c = "Õ" Or c = "Ò" Or c = "Ó" Or c = "Ô" Or c = "Ö" Or c = "ã" Or c = "ß" Or c = "á" Or c = "â" Or c = "ä" Or c = "è" Or c = "å" Or c = "æ" Or c = "ç" Or c = "é" Or c = "í" Or c = "ê" Or c = "ë" Or c = "ì" Or c = "î" Or c = "ó" Or c = "ï" Or c = "ñ" Or c = "ò" Or c = "ô" Or c = "ø" Or _
c = "õ" Or c = "ö" Or c = "÷" Or c = "ù" Or c = "ý" Or c = "ú" Or c = "û" Or c = "ü" Or c = "¡" Or c = "¢" Or c = "£" Or c = "¤" Or c = "¬" Or c = "i" Or _
c = "Ý" Or c = "×" Or c = "Ø" Or c = "Ü" Or c = "Þ" Or c = "" Or c = "þ" Or c = "®" Or c = "A" Or c = "¥" Or c = "I" Or c = "Æ" Or c = "Ø" Or c = "U" Or c = "¦" Or c = "Y" Or c = "§" Then db = True
If db Then
Select Case c
Case "¸": c = "aù"
Case "µ": c = "aø"
Case "¶": c = "aû"
Case "·": c = "aõ"
Case "¹": c = "aï"
Case "¨": c = "aê"
Case "¾": c = "aé"
Case "»": c = "aè"
Case "¼": c = "aú"
Case "½": c = "aü"
Case "Æ": c = "aë"
Case "©": c = "aâ"
Case "Ê": c = "aá"
Case "Ç": c = "aà"
Case "È": c = "aå"
Case "É": c = "aã"
Case "Ë": c = "aä"
Case "Ð": c = "eù"
Case "Ì": c = "eø"
Case "Î": c = "eû"
Case "Ï": c = "eõ"
Case "Ñ": c = "eï"
Case "ª": c = "eâ"
Case "Õ": c = "eá"
Case "Ò": c = "eà"
Case "Ó": c = "eå"
Case "Ô": c = "eã"
Case "Ö": c = "eä"
Case "ã": c = "où"
Case "ß": c = "oø"
Case "á": c = "oû"
Case "â": c = "oõ"
Case "ä": c = "oï"
Case "«": c = "oâ"
Case "è": c = "oá"
Case "å": c = "oà"
Case "æ": c = "oå"
Case "ç": c = "oã"
Case "é": c = "oä"
Case "í": c = "ôù"
Case "ê": c = "ôø"
Case "ë": c = "ôû"
Case "ì": c = "ôõ"
Case "î": c = "ôï"
Case "ó": c = "uù"
Case "ï": c = "uø"
Case "ñ": c = "uû"
Case "ò": c = "uõ"
Case "ô": c = "uï"
Case "ø": c = "öù"
Case "õ": c = "öø"
Case "ö": c = "öû"
Case "÷": c = "öõ"
Case "ù": c = "öï"
Case "ý": c = "yù"
Case "ú": c = "yø"
Case "û": c = "yû"
Case "ü": c = "yõ"
Case "¸": c = "AÙ"
Case "µ": c = "AØ"
Case "": c = "AÛ"
Case "•": c = "AÕ"
Case "¹": c = "AÏ"
Case "¾": c = "AÉ"
Case "»": c = "AÈ"
Case "¼": c = "AÚ"
Case "½": c = "AÜ"
Case "Æ": c = "AË"
Case "Ê": c = "AÁ"
Case "Ç": c = "AÀ"
Case "È": c = "AÅ"
Case "É": c = "AÃ"
Case "Ë": c = "AÄ"
Case "Ð": c = "EÙ"
Case "Ì": c = "EØ"
Case "Î": c = "EÛ"
Case "Ï": c = "EÕ"
Case "Ñ": c = "EÏ"
Case "Õ": c = "EÁ"
Case "Ò": c = "EÀ"
Case "Ó": c = "EÅ"
Case "Ô": c = "EÃ"
Case "Ö": c = "EÄ"
Case "ã": c = "OÙ"
Case "ß": c = "OØ"
Case "á": c = "OÛ"
Case "â": c = "OÕ"
Case "ä": c = "OÏ"
Case "è": c = "OÁ"
Case "å": c = "OÀ"
Case "æ": c = "OÅ"
Case "ç": c = "OÃ"
Case "é": c = "OÄ"
Case "í": c = "ÔÙ"
Case "ê": c = "ÔØ"
Case "ë": c = "ÔÛ"
Case "ì": c = "ÔÕ"
Case "î": c = "ÔÏ"
Case "ó": c = "UÙ"
Case "ï": c = "UØ"
Case "ñ": c = "UÛ"
Case "ò": c = "UÕ"
Case "ô": c = "UÏ"
Case "ø": c = "ÖÙ"
Case "õ": c = "ÖØ"
Case "ö": c = "ÖÛ"
Case "÷": c = "ÖÕ"
Case "ù": c = "ÖÏ"
Case "ý": c = "YÙ"
Case "ú": c = "YØ"
Case "û": c = "YÛ"
Case "ü": c = "YÕ"
Case "¡": c = "AÊ"
Case "¢": c = "AÂ"
Case "£": c = "EÂ"
Case "¤": c = "OÂ"
Case "¬": c = "ô"
Case "i": c = "i"
Case "Ý": c = "í"
Case "×": c = "ì"
Case "Ø": c = "æ"
Case "Ü": c = "ó"
Case "Þ": c = "ò"
Case "": c = "ö"
Case "þ": c = "î"
Case "®": c = "ñ"
Case "A": c = "A"
Case "¥": c = "Ô"
Case "I": c = "I"
Case "Æ": c = "Í"
Case "Ø": c = "Ý"
Case "U": c = "U"
Case "¦": c = "Ö"
Case "Y": c = "Y"
Case "§": c = "Ñ"
End Select
End If
TCVN3toVNI = TCVN3toVNI + c
Next i
End Function
Ồ làm sao mà anh ấy lại biết các kí tự tương ứng của các bảng mã hay thế
, đơn giản vậy mà cũng hỏi, tìm từng cái chứ bằng cách gì nữa . Hix lâu dã man lun
.Roài ! Thế là xong rùi đó. Cách Use của nó thì anh em cũng đã hiểu rùi chứ hẻ ! nếu có théc méc thì cứ péc lên cho em téc
.Mọi chuyện đến đây đã kết thúc (Giúng Hugo nhà ta wá
). Thế là từ đó em có thể nhặt nhạnh số liệu, chuyển đổi, read ra read riếc mấy chú Fox for DOS ngon lành bằng VB 6 . và từ đó phát sinh ra hàng lô hàng lốc các chương trình cho các cái Bank nhà em. Hì hì, do không được Pub lên chứ nếu hông thì em cũng Pub lên cho anh em tham nhũng 1 tí, í wên tham khảo 1 tí
.Phù! Copy paste mệt quá . lại wên nữa
, gõ nãy giờ mệt wá mới đúng chứ ^_^. Đi ra chích 1 mũi con mèo rồi zô kím trò post típ chứ ^_^













Unregistered user # Monday, August 27, 2007 4:45:21 AM
Baby ITbaby # Monday, August 27, 2007 4:49:11 AM
Unregistered user # Tuesday, August 28, 2007 2:31:42 AM
musicblog # Tuesday, September 11, 2007 1:14:11 AM
Unregistered user # Tuesday, October 2, 2007 3:00:20 AM
Unregistered user # Tuesday, October 2, 2007 3:02:28 AM
Baby ITbaby # Saturday, October 6, 2007 10:16:49 AM
meouhamchoi # Sunday, October 12, 2008 5:34:41 PM
Unregistered user # Saturday, April 10, 2010 11:38:36 PM
Unregistered user # Wednesday, June 16, 2010 2:38:38 AM