|
楼主 |
发表于 2008-12-31 22:46
|
显示全部楼层
小结 及参考答案
-
- Tb1 = "[MS Access;pwd=;DATABASE=" & ThisWorkbook.Path & "\a.mdb" & "].通讯录 "
- Tb2 = "[Excel 5.0;hdr=yes;DATABASE=" & ThisWorkbook.Path & "\数据源.xls" & "].[通讯录$] "
- exceltoacc = " select a.姓名,a.电话 from " & Tb2 & " as a left outer join " & Tb1 & " as b on a.姓名= b.姓名 where b.姓名 is null"
- exceltoacc = "INSERT INTO " & Tb1 & exceltoacc
- Tb1 = "[Excel 5.0;hdr=yes;DATABASE=" & ThisWorkbook.Path & "\a.xls" & "].[通讯录$] "
- exceltoexcel = " select a.姓名,a.电话 from " & Tb2 & " as a left outer join " & Tb1 & " as b on a.姓名= b.姓名 where b.姓名 is null"
- exceltoexcel = "INSERT INTO " & Tb1 & exceltoexcel
复制代码
为了看得清楚些,我把语句拆开了。Tb1 和 Tb2 分别是 access表 和 excel表的 字符串表达式
此题的考点是JET引擎中对其他类型数据库引用的表达式。
主要语句结构各位参与者的答案 都一致。大家可能对我的答案有些疑问,我的语句长度要长很多,并且使用了联合语句。
这是因为 sql语句执行 where not in(.....................) 子句判断时 效率极低,当数据量达到一定数量时(2000个姓名),不管是写代码的还是用代码的都不能接受
这一点在 [第36期]万里挑一 已经说明,我曾遇到此类问题,所以只要有where not in 判断的地方都用联合语句+where is null 代替。
不过这不是本期的考点,对代码速度也没有要求,只要结果正确都得分。
附1:文本文件在 JET引擎中表达式 范例
Tbtext = " [Text;DATABASE=c:\文本数据库].通讯录.txt " '通讯录.txt是以 “,” 分隔的与csv 文件相同
因为数据库服务器不是每个坛友都有机会接触到,所以此题中没有导入到sql2000的任务
附2:sql2000服务器在 JET引擎中表达式 范例
Tbsql2000=" 通讯录 in [ODBC][ODBC;Driver=SQL Server;Server=192.168.0.188;Uid=sa;Pwd=123456;database=企业数据库] "
应用例子
rc.open "select * from " & Tbsql2000 , cn, 1,3 ' 注cn 是EXCEL 或 acc、TEXT 等非服务器 数据库的连接
常用的4个类型的数据库字符表达式都介绍到了,以后遇到不同类型的数据库导来导去的问题,就不用满头冒烟了
祝各位坛友新年快乐,学有所成,升官发财,马到成功, 还有一万多个好词....... 略.....自己想去,想到了就是自己的,
呵呵 这叫心想事成!!!
|
评分
-
1
查看全部评分
-
|