设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2790|回复: 11
打印 上一主题 下一主题

[其它] 文件名判别

[复制链接]
跳转到指定楼层
1#
发表于 2010-12-22 09:48:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想导入数据,导入前先判别文件名是否包括有日期格式的字符,例如类似“旅游统计2010-12-22.xcl”,请问,如何用代码判别?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-12-22 10:39:02 | 只看该作者
导入数据必须有确定的导出对象文件指向,好像并不存在对文件名的判别问题。
3#
 楼主| 发表于 2010-12-22 10:43:31 | 只看该作者
为便于数据管理,导出前我已对文件名自动加上日期,所以,导入时为尽可能减少错误,先判别文件名是否包括有日期格式的字符,如何办?
4#
发表于 2010-12-22 11:55:16 | 只看该作者
可在导入前先用对话框提示一下文件的名称,然后再确认是否导入。如何显示导入文件名称可参阅本地的地址:http://www.office-cn.net/forum-v ... BC%FE%2B%C3%FB.html
5#
 楼主| 发表于 2010-12-22 14:42:07 | 只看该作者
我想用数字函数、字符函数可解决问题。
6#
发表于 2010-12-22 15:32:28 | 只看该作者
本帖最后由 hgxly 于 2010-12-22 15:34 编辑

用left或right函数先提取文件名中日期部分的字符串,然后用isdate函数判别此字符串是否是日期,返回true为真。这应该可以的吧。
a= "2010-12-22"
?isdate(a)
True
7#
发表于 2010-12-22 15:49:55 | 只看该作者
ycxchen 发表于 2010-12-22 09:48
我想导入数据,导入前先判别文件名是否包括有日期格式的字符,例如类似“旅游统计2010-12-22.xcl”,请问, ...

思维的逻辑过程似乎有点问题。
判断的范围取是否含有日期没有什么意义,含有日期格式的文件多了去了,这个范围虽然比所有文件少,但仍然是一个很大很不确定的范围。
从你的问题看有意义的范围可以用两个常量标识,其一是“旅游统计”,其二是扩展名“xcl”。
你可能要说,我希望导入导出2010-10-1至2010-10-15的一组文件怎么办?解决这个问题有两个方法:如果文件名中代表文件生成日期的字符串格式和位置是固定的,那么可以用mid、left或right函数截取这个字符串,用Cdate转换为日期型后进行判断;还有一种方法直接读取文件的创建(或者修改日期)进行判断。
8#
发表于 2010-12-22 16:52:22 | 只看该作者
本帖最后由 roych 于 2010-12-22 17:53 编辑

用format来判断格式就好了~~先贴代码上来以便无法下载附件的网友看看:
  1. Private Sub 导出数据_Click()
  2. Dim fso As Object
  3. '创建组件
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. '判断相对路径下是否存在这个文件
  6. If fso.FileExists(CurrentProject.Path & "" & Format(Date - 1, "MMDD") & ".xls") = False Then
  7. MsgBox CurrentProject.Path & "" & Format(Date - 1, "MMDD") & ".xls"
  8. MsgBox "在指定路径下:" & CurrentProject.Path & "" & Chr(13) & "找不到文件:" & Format(Date - 1, "MMDD") & ".xls"
  9. Exit Sub
  10. Else
  11. '消除生成表的警告
  12. DoCmd.SetWarnings False
  13. MsgBox "Dyesect导出的Excl文件必须以日期来命名" & Chr(13) & Chr(13) & "例如,0805.xls,准备好了就按OK吧!", vbOKCancel, "导出数据注意事项"
  14. '链接数据表,主要因为某些字段含有点号,直接导入会出错。
  15. DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, "tem", CurrentProject.Path & "" & Format(Date - 1, "MMDD") & ".xls", True
  16. '执行生成表查询
  17. DoCmd.OpenQuery "Q_WFT"
  18. '开始到处生成表
  19. DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "WFT", Me.导出路径.Value, True
  20. '提示信息
  21. MsgBox "已成功导出到" & Chr(13) & Chr(13) & Me.导出路径.Value
  22. '删除临时表,以备下一次执行(如果不删除,下一次链接表就成了Tem1、Tem2……了)
  23. DoCmd.RunSQL ("Drop table Tem")
  24. End If
  25. End Sub
复制代码
需要说明的是,下载后,两个文件必须保存在同一路径下,否则还是无法识别路径的。此外,这里不支持批量导入。不过您也可以根据这些代码写一下。

本帖子中包含更多资源

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

x
9#
 楼主| 发表于 2010-12-23 14:43:01 | 只看该作者
十分多谢大家的指教特别是roych的热心解答!

点击这里给我发消息

10#
发表于 2010-12-24 09:40:41 | 只看该作者
“旅游统计2010-12-22.xcl”

如果2010-12-22.xcl前面的文字个数不固定,这样判断:
If  文件名  Like  "*####-##-##.xcl"  then

如果2010-12-22.xcl前面的文字个数固定4个,这样判断:
If  文件名  Like  "????####-##-##.xcl"  then
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-31 14:26 , Processed in 0.128726 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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