将三个字段,5000条记录的小型数据库写入字符串表格,有何高招???
解决方案 »
- 用VBScript记录局域网用户每天登录时间。分享代码,请教问题!
- 求助:VBA(word):for循环还没有结束就自动退出来了,并没有写break和exit for
- 關於combo控件
- 想找个兼职做做
- 我如何才能在VB里执行一段sql?谢谢
- data.Recordset与Adodc.Recordset...(菜鸟求救~~)
- 有关sstab的问题,高手请进,50分给第一个能解决问题了人
- 如何取得子网掩码
- 请各位帮助,如何在TextBox控件中换行?
- ***asp & com+ & recordset***
- "ByRef参数类型不对"问题?请高手指点,谢了!
- ■■■■怎样改写一个文件的头四个字节为00,00,00,05(二进制操作)
On Error GoTo Err
'保存资源文件
Dim lngFile As Long
Dim bytFix(31) As Byte
Dim bytHeader(31) As Byte
Dim lngX As Long
Dim strFix As String
Dim lngRow As Long
Dim lngID As Long
Dim strMsg As String
Dim lngDataSize As Long '数据区大小,文件中的Datasize
Dim lngResName As Long '资源项标识符
Dim lngPad As Long '标识符补0的开始位置
Dim bytData() As Byte '资源数据
Dim bytBig5() As Byte 'Big5 Unicode码
Dim lngRealSize As Long '数据区的真实大小
Dim lngResi As Long
Dim lngHi As Long
Dim lngLo As Long
Dim strTable As Variant
Dim lngGroup As Long
Dim lngCount As Long
Dim lngHeader As Long
Dim lngTotal As Long
Dim lngResCount As Long '每个资源组的资源项数
Dim lngPadCount As Long '已补字节数
lngFile = FreeFile
If Dir(FileName) <> "" Then
Kill FileName
End If
'首32位固定字节
strFix = "0000000020000000FFFF0000FFFF000000000000000000000000000000000000"
For lngX = 1 To 32
bytFix(lngX - 1) = Val("&h" & Mid(strFix, lngX * 2 - 1, 2))
Next
strTable = GetStringTable '获得要写入的字符串
Open FileName For Binary As #lngFile
Put #lngFile, , bytFix
'资源组数量
lngGroup = UBound(strTable, 3)
For lngRow = 1 To lngGroup
If strTable(lngCount, 0, lngRow) = "" Then Exit For
lngID = strTable(lngCount, 0, lngRow)
' If lngID = 1061 Then Stop
lngResName = lngID \ 16 + 1
lngPad = lngID Mod 16 '资源组的第一个资源项在数据数组中的位置
lngPadCount = lngPad '资源组的第一个资源项需补0的字节数
lngResCount = 1 '资源项数量
strMsg = strTable(0, 1, lngRow)
lngDataSize = LenB(strMsg) + lngPad * 2 + 2
ReDim bytData(lngDataSize - 1)
Call LongToWord(Len(strMsg), lngHi, lngLo)
bytData(lngPad * 2) = lngLo
bytData(lngPad * 2 + 1) = lngHi '第一个资源项的长度
'字符串转为Unicode代码
If lngID Mod 2 = 0 Then 'Big5码
bytBig5 = Big5ToUnicode(strMsg)
For lngX = 0 To UBound(bytBig5)
bytData(lngPad * 2 + lngX + 2) = bytBig5(lngX)
Next
Else
For lngX = 1 To LenB(strMsg)
bytData(lngPad * 2 + lngX + 1) = AscB(MidB(strMsg, lngX, 1))
Next
End If
For lngCount = 1 To UBound(strTable, 1)
If strTable(lngCount, 0, lngRow) = "" Then Exit For
' If strTable(lngCount, 0, lngRow) = "1071" Then Stop
lngResCount = lngResCount + 1
strMsg = strTable(lngCount, 1, lngRow)
lngPad = strTable(lngCount, 0, lngRow) - lngID - 1 '需要补充的字节数
lngPadCount = lngPadCount + lngPad '已补的字节数
lngDataSize = lngPad * 2 + lngDataSize
lngPad = lngDataSize '资源项开始位置
lngDataSize = lngDataSize + 2 + LenB(strMsg)
ReDim Preserve bytData(lngDataSize - 1)
Call LongToWord(Len(strMsg), lngHi, lngLo)
bytData(lngPad) = lngLo
bytData(lngPad + 1) = lngHi
'字符串转为Unicode代码
If strTable(lngCount, 0, lngRow) Mod 2 = 0 Then 'Big5码
bytBig5 = Big5ToUnicode(strMsg)
For lngX = 0 To UBound(bytBig5)
bytData(lngPad + lngX + 2) = bytBig5(lngX)
Next
Else
For lngX = 1 To LenB(strMsg)
bytData(lngPad + lngX + 1) = AscB(MidB(strMsg, lngX, 1))
Next
End If
lngID = strTable(lngCount, 0, lngRow)
Next
lngDataSize = lngDataSize + 2 '数据结束加Null字符
lngDataSize = lngDataSize + (28 - (lngResCount - 1) * 2) - lngPadCount * 2 '加上未补完的字节
lngResi = lngDataSize Mod 4
If lngResi <> 0 Then 'DataSize是否能被4整除,不能整除则补所差的字节数
' lngDataSize = lngDataSize + (4 - lngResi) / 2
lngRealSize = lngDataSize + (4 - lngResi)
' lngDataSize = lngRealSize
Else
lngRealSize = lngDataSize
End If
Call LongToWord(lngDataSize, lngHi, lngLo)
bytHeader(0) = lngLo
bytHeader(1) = lngHi
bytHeader(4) = &H20 'HeaderSize
bytHeader(8) = &HFF '
bytHeader(9) = &HFF '
bytHeader(10) = &H6 '8,9,10,11-Type,值FFFF0600
bytHeader(12) = &HFF
bytHeader(13) = &HFF
Call LongToWord(lngResName, lngHi, lngLo)
bytHeader(14) = lngLo
bytHeader(15) = lngHi '12,13,14,15-Name 值FFFF Hi,Lo
bytHeader(22) = &H4
bytHeader(23) = &H8 '22,23-Language 此处等于常量&H0804-中文
'资源组头文件的位置
lngHeader = 33 + (lngRow - 1) * 32 + lngTotal
'写入资源组头文件
Put #lngFile, lngHeader, bytHeader
lngTotal = lngTotal + lngRealSize
'写入数据,重定义数组大小为RealSize
ReDim Preserve bytData(lngRealSize - 1)
Put #lngFile, lngHeader + 32, bytData
lngCount = 0
Next
Close #lngFile
mblnNotSave = False
Exit Sub
Err:
MsgBox Err.Description, vbExclamation
End Sub
一个简单的生成资源文件方法已搞定,谢谢大家,尤其是天火兄弟,很热心:
1 创建XXXX。RC文件
2。按下面格式写入数据库内容:stringtanble
begin
1001,"........"
1002,".........."
....
end3。shell调用RC.EXE编译