'要求:按字段的实际长度写入文本,字段值不够长的补空格,每个字段之间留一个空格 '作者: flashasp
'创建时间:2005-01-18
'表结构: flashasp
'=========================================================================================================================
1 bz_code varchar 20 1
0 czrq varchar 10 1
0 zy_num varchar 4 1
0 jsdh varchar 20 1
0 keshi varchar 40 1
0 class varchar 1 1
0 code varchar 20 1
0 unit varchar 40 1
0 kong varchar 1 1
0 num varchar 10 1
0 price varchar 10 1
0 dept_name varchar 40 1
0 doctor varchar 10 1
0 fsrq varchar 10 1
'==========================================================================================================================
SQL_text="select * from miHospTemp" '输出结果
'NULL 2005-01-12 2 1333 内科 NULL NULL NULL NULL NULL NULL NULL NULL NULL
'NULL NULL NULL NULL NULL 1 胆囊切除术 1 280 内科 carina 2005-01-12
'NULL NULL NULL NULL NULL 1 甲状腺切除术 1 500 内科 boy 2005-01-12
'==========================================================================================================================
'下面是实现方法:
==========================================================================================================================
Dim fnum, J, K, l_Width As Integer
Dim file_name As String
Dim num_fields As Integer
Dim field_width() As Integer
Dim field_value As String
Dim i As Integer
Dim num_processed As Integer
fnum = FreeFile
file_name = "c:/miHospTemp.dat"
Open file_name For Output As fnum
Set rs = cn.Execute(SQL_text)
num_fields = rs.Fields.Count
'按字段的实际长度写入文本,每个字段之间留一个空格
'=============================================================================================================
Do While Not rs.EOF
num_processed = num_processed + 1
If num_processed = 1 Then '先写第一行的记录,前5个字段
J = 0
K = 4
Else '
J = 5
K = num_fields - 1 '再写第一行后的N行记录,后9个字段
End If
For i = J To K
field_value = rs.Fields(i).Value & "" '加一个& ""为了避免字段NULL的错误
If i = 4 Or i = K Then
l_Width = rs.Fields(i).DefinedSize '最后一个字段不要空格(即第4个和第14个字段)
Else
l_Width = rs.Fields(i).DefinedSize + 1 '字段之间加一个空格
End If
'按字段的实际长度写入文本,每个字段之间留一个空格
Print #fnum, LTrim(RTrim(field_value)) & _
Space(l_Width - _
LenB(StrConv(LTrim(RTrim(field_value)), vbFromUnicode)));
Next i
Print #fnum, ""
rs.MoveNext
Loop
rs.Close
Close fnum
'导完后删除临时表miHospTemp
cn.Execute "delete miHospTemp"
MsgBox ("成功导出医保数据,文件存放路径为c:/miHospTemp.dat")
cn.Close
Set cn = Nothing