设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 17985|回复: 44
打印 上一主题 下一主题

[窗体] 如何批量导入CSV文件到ACCESS

[复制链接]
1#
发表于 2007-9-1 14:47:41 | 显示全部楼层
Public Function ReadCSVFile(ByVal strFilePath As String, ByVal strFileName As String)
Dim I As Integer
Dim intCount As Long

'打开数据链接关键
conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
          "DBQ=" & strFilePath & ";Extensions=asc,csv,tab,txtersist Security Info=False"

With rs
    .CursorType = 2
    .LockType = 3
    .CursorLocation = 3
    .ActiveConnection = conn
End With

SQLcsv = "SELECT * FROM [" & strFileName & "]"
rs.Open SQLcsv
rs.Move (1)          '移动到指定记录
intCount = DCount("[ship]", "info", "[ship]='" & rs(16) & "'")      '获取表中记录重复数
If intCount > 1 Then  '进行判断

    Response = MsgBox("是否要覆盖原有[" & rs(16) & "],点是将更新所有[" & rs(16) & "]数据?", 4 + 32 + 256, "系统提示")
    If Response = vbNo Then   ' 当用户按下“否”。
       rs.Close
        conn.Close
         Set rs = Nothing
           Set conn = Nothing
                  Exit Function
    End If
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * from info where ship='" & rs(16) & "'"           '删除重复数据
    DoCmd.SetWarnings True
  End If
      Set conn1 = CurrentProject.Connection
    sql = "Select * From info "
    rs1.Open sql, conn1, 1, 3
Do Until rs.EOF   '循环更新数据表

   
    rs1.AddNew
    For I = 0 To 26
     rs1(I) = rs(I)
    Next
     
rs.MoveNext
Loop

rs1.UpdateBatch
rs1.Close
conn1.Close
Set rs1 = Nothing
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Function

自写的函数,楼主更改一下便可以批量导入csv文件了
2#
发表于 2007-9-1 16:09:16 | 显示全部楼层
同理的,我只是把它函数化而已
3#
发表于 2007-9-1 18:40:07 | 显示全部楼层
请上传你的示例说明文件我给你改改吧.这样也方便别人使用,现在这个函数只是我给一网友临时写的而已.
4#
发表于 2007-9-3 04:09:57 | 显示全部楼层
时间不是很充裕,只能晚上来弄了见谅

本帖子中包含更多资源

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

x
5#
发表于 2007-9-3 08:54:40 | 显示全部楼层
错了,是小睡一下继续工作.
6#
发表于 2007-9-3 17:38:41 | 显示全部楼层
Do Until rs.EOF
    Set conn1 = CurrentProject.Connection
    sql = "Select * From tbl出口名细 where [VENDOR NO]='" & rs(0) & "'"
    rs1.Open sql, conn1, 1, 3

If rs1.RecordCount = 1 Then
表中有纪录
Else

rs1.AddNew
    For I = 0 To 7
      rs1(I + 1) = rs(I)
    Next

End If
rs.MoveNext
Loop
7#
发表于 2007-9-3 17:39:08 | 显示全部楼层
或者可用 Dcount 等方法来判断..
8#
发表于 2007-9-11 16:14:13 | 显示全部楼层
主要是For I = 0 To 10 原来是 For I = 0 To 7 字段数量不同 而你有几个字段是必填,所以出现这个情况


下次认真看看即可.

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-6-18 13:17 , Processed in 0.125114 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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