设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: andymark
打印 上一主题 下一主题

[Access本身] [原创]导出文本,实现向左、居中、向右对齐

[复制链接]
11#
发表于 2006-6-5 15:56:00 | 只看该作者
进行简化

Private Sub Command5_Click()
Dim Rs As New ADODB.Recordset
Dim Len1 As Integer, Len2 As Integer, Len3 As Integer

Rs.Open "Select Trim(身份证号),Trim(姓名),Format(工资,'#,###.00') From Sheet2", CurrentProject.Connection, adOpenDynamic, adLockOptimistic

Open CurrentProject.Path & "\" & "test.txt" For Output As #1 ' 打开输出文件

Print #1, "-----------------------------------------------------------------------"
Print #1, Space(6) & "向左对齐" & Space(5 + 10) & "中间对齐" & Space(20) & "向右对齐"  '打印表头
Print #1, "------------------------------------------------------------------------"   '打印表头
Print #1, Space(6) & "身份证号" & Space(5 + 10) & "姓    名" & Space(20) & "金    额"  '打印表头
Print #1, "-----------------------------------------------------------------------"

Do While Not Rs.EOF
   Len1 = LenB(StrConv(Rs(1), vbFromUnicode))
   Len2 = 10 - (Len1 - 8) \ 2    '姓名长度不等于4时,要进行+-处理
   Len3 = 28 - Len(Rs(2)) + 18 - Len2 - Len1
   Print #1, Rs(0) & Space(Len2) & Rs(1) & Space(Len3) & Rs(2)   ' 将数据写入文件。
   Rs.MoveNext
Loop

Close #1    ' 关闭文件
Rs.Close
Call ShellExecute(hwnd, "Open", "test.txt", "", CurrentProject.Path, 1)

End Sub
12#
发表于 2006-6-5 17:23:00 | 只看该作者
海狸先生,可以右对齐,,但身份证有的15位有的19位时有问题,工资字段不能右对齐?和

怎样导出文件到不同的盘?

[此贴子已经被作者于2006-6-5 12:33:18编辑过]

13#
发表于 2006-6-5 21:21:00 | 只看该作者
海狸先生,我改了这样(身份证号和姓名向左靠,工资向右靠),看看有什么问题?还有我想问在表设计设置了字段长度是20时,输入汉字和数字都是20个,不是一个汉字等于2个数字的长度?是不是access的问题?

怎样有选择地把txt文件导出到其它盘?

'金额不带千分位

Private Sub Command4_Click()
Dim Rs As New ADODB.Recordset
Dim Len1 As Integer, Len2 As Integer, Len3 As Integer

Const Fieldsize1 = 20  '定义字段固定长度 身份证号
Const Fieldsize2 = 20  '定义字段固定长度 姓名
Const Fieldsize3 = 14  '定义字段固定长度 工资

Rs.Open "Select Trim(身份证号),Trim(姓名),Format(工资,'####.00') From Sheet2", CurrentProject.Connection, adOpenDynamic, adLockOptimistic

Open CurrentProject.Path & "\" & "test.txt" For Output As #1 ' 打开输出文件

'Print #1, "-----------------------------------------------------------------------"
'Print #1, Space(6) & "向左对齐" & Space(5 + 10) & "中间对齐" & Space(20) & "向右对齐"  '打印表头
'Print #1, "------------------------------------------------------------------------"   '打印表头
'Print #1, Space(6) & "身份证号" & Space(5 + 10) & "姓    名" & Space(20) & "金    额"  '打印表头
'Print #1, "-----------------------------------------------------------------------"

Do While Not Rs.EOF
   Len1 = LenB(StrConv(Rs(1), vbFromUnicode)) '姓名长度
   Len2 = LenB(StrConv(Rs(0), vbFromUnicode))    '身份证号
     Len3 = LenB(StrConv(Rs(2), vbFromUnicode)) '工资
   
   Print #1, Rs(0) & Space(Fieldsize1 - Len2) & Rs(1) & Space(Fieldsize2 - Len1) & Space(Fieldsize3 - Len3) & Rs(2) ' 将数据写入文件。
       Rs.MoveNext
Loop

Close #1    ' 关闭文件
Rs.Close
Call ShellExecute(hwnd, "Open", "test.txt", "", CurrentProject.Path, 1)

End Sub

[此贴子已经被作者于2006-6-5 13:28:43编辑过]

14#
 楼主| 发表于 2006-6-5 21:40:00 | 只看该作者
怎样有选择地把txt文件导出到其它盘?

   把下面这句改成相应的盘符

    Open CurrentProject.Path & "\" & "test.txt" For Output As #1 ' 打开输出文件
15#
发表于 2006-6-5 22:16:00 | 只看该作者
经测试,为何字段有空记录的时候会报错?
16#
 楼主| 发表于 2006-6-5 22:17:00 | 只看该作者
以下是引用yangxiang在2006-6-5 14:16:00的发言:
经测试,为何字段有空记录的时候会报错?

     你把测试的例子传上来看看
17#
发表于 2006-6-5 22:19:00 | 只看该作者
以下是引用andymark在2006-6-5 13:40:00的发言:




怎样有选择地把txt文件导出到其它盘?

   把下面这句改成相应的盘符


    Open CurrentProject.Path & "\" & "test.txt" For Output As #1 ' 打开输出文件

改那里?


[此贴子已经被作者于2006-6-5 14:20:58编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
18#
发表于 2006-6-5 22:30:00 | 只看该作者
以下是引用yangxiang在2006-6-5 9:23:00的发言:


海狸先生,可以右对齐,,但身份证有的15位有的19位时有问题,工资字段不能右对齐?和

Do While Not Rs.EOF
   Len1 = LenB(StrConv(Rs(1), vbFromUnicode))
   Len2 = 29 - Len(Rs(0)) - (Len1 - 8) \ 2 '身份证号不等于19位或姓名长度不等于4时,要进行+-处理
   Len3 = 36 - Len(Rs(2)) + (Len1 - 8) \ 2 - Len1
   Print #1, Rs(0) & Space(Len2) & Rs(1) & Space(Len3) & Rs(2)   ' 将数据写入文件。
   Rs.MoveNext
Loop
19#
发表于 2006-6-6 00:22:00 | 只看该作者
以下是引用海狸先生在2006-6-5 14:30:00的发言:



Do While Not Rs.EOF
   Len1 = LenB(StrConv(Rs(1), vbFromUnicode))
   Len2 = 29 - Len(Rs(0)) - (Len1 - 8) \ 2 '身份证号不等于19位或姓名长度不等于4时,要进行+-处理
   Len3 = 36 - Len(Rs(2)) + (Len1 - 8) \ 2 - Len1
   Print #1, Rs(0) & Space(Len2) & Rs(1) & Space(Len3) & Rs(2)   ' 将数据写入文件。
   Rs.MoveNext
Loop

经测试,字段没有内容的时候报错?

[此贴子已经被作者于2006-6-5 16:30:03编辑过]

20#
 楼主| 发表于 2006-6-6 00:58:00 | 只看该作者
以下是引用yangxiang在2006-6-5 14:19:00的发言:



改那里?

  存到E盘:

  Open "e:\" & "test.txt" For Output As #1



还有这只是提供一个导出文本左右对齐的思路,并不是公式,不能拿来就用

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 04:45 , Processed in 0.120244 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表