以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  导入access文件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=190032)

--  作者:edisontsui
--  发布时间:2024/1/12 9:55:00
--  导入access文件
Dim ip as New Importer
ip
.SourcePath = "c:\\Data\\销售管理.mdb" \'指定数据文件
ip
.SourceTableName = "订单" \'指定要导入的表
ip
.NewTableName ="订单" \'导入后的表名
ip
.Import()
我想用上面的代码将一个 access 文件的数据导入至我的数据库。因为access档案里面数据行很多,我想只导入部分数据行。access档案里面有一列是日期格式的(像这样子的2023/12/19 19:50:15),那么如何根据这个日期列来控制只导入部分数据行呢?谢谢。

--  作者:有点蓝
--  发布时间:2024/1/12 9:58:00
--  
ip.NewTableName ="订单" \'导入后的表名
ip.filter = "日期 > #12/19/2023#"
ip.Import()

--  作者:edisontsui
--  发布时间:2024/1/12 11:20:00
--  
如果只想将access里面某些列的数据导入至我的数据库,比如只需要导入“姓名”和“日期”两列,其他列不要导入,那要怎样改代码?谢谢。
--  作者:有点蓝
--  发布时间:2024/1/12 11:29:00
--  
Fields
指定要导入的字段(列),不同的字段,用逗号给开,如果不指定,则导入所有字段。

ip.Fields = "列1,列2"
--  作者:edisontsui
--  发布时间:2024/1/12 13:37:00
--  
Dim dtb As New dataTableBuilder("考勤机记录")
dtb.clear 
dtb.AddDef("USerID", GetType(String), 32)
dtb.AddDef("CHECKTIME", GetType(Date))
dtb.Build()

Dim dtp1 As WinForm.DateTimePicker
dtp1 = Forms("考勤记录处理").Controls("DateTimePicker1")
Dim dtp2 As WinForm.DateTimePicker
dtp2 = Forms("考勤记录处理").Controls("DateTimePicker2")

Dim ip As New Importer
ip.SourcePath = "C:\\Program Files (x86)\\ZKTeco\\ZKTeco\\att2000.mdb" \'指定数据文件
ip.SourceTableName = "CHECKINOUT" \'指定要导入的表
ip.NewTableName = "考勤机记录" \'导入后的表名
ip.filter = "时间 > dtp1.value"
ip.Fields = "USerID, CHECKTIME"
ip.Import() 

我用上面代码,先增加临时表,然后再导入数据,但老是会提示:已经存在同名表“考勤机记录”,然就什么也没有导进去。请问要怎样修改代码呢?谢谢。

--  作者:有点蓝
--  发布时间:2024/1/12 13:44:00
--  
如果表已经存在,使用merger:http://www.foxtable.com/webhelp/topics/0685.htm
[此贴子已经被作者于2024/1/12 13:44:59编辑过]

--  作者:edisontsui
--  发布时间:2024/1/12 14:28:00
--  
        Dim mg As New Merger
        mg.SourcePath = "C:\\Program Files (x86)\\ZKTeco\\ZKTeco\\att2000.mdb" \'指定数据文件所在目录
        mg.SourceTableName = "CHECKINOUT" \'指定要合并的dbase文件,无需扩展名
        mg.DataTableName = "考勤机记录" \'指定接收数据的表
        mg.filter = "时间 >= dtp1.value and 时间 <= dtp2.value"
        mg.Fields = "USerID, CHECKTIME" 
        mg.Merge() \'开始合并

我改成上面那样子了,运行起来有提示:至少一个参数没有被指定值。请问是什么参数?

--  作者:有点蓝
--  发布时间:2024/1/12 14:30:00
--  
http://www.foxtable.com/webhelp/topics/1284.htm

mg.filter = "时间 >= #“ & dtp1.value & ”# and...

--  作者:edisontsui
--  发布时间:2024/1/12 15:45:00
--  
mg.filter = "[时间] >= #" & dtp1.value & "# And [时间] <= #" & dtp2.value & "#"        
我改成这个样子了,还是一样的提示:至少一个参数没有被指定值。

--  作者:有点蓝
--  发布时间:2024/1/12 15:59:00
--  
我测试没有问题。请上传实例测试