现在能实现将excel内的数据导入到access数据库中的表1,代码如下:Dim cn As New ADODB.Connection
Dim strsql As String
cn.Provider = "microsoft.jet.oledb.4.0"
cn.ConnectionString = "data source=" & App.Path & "\tj.mdb"
cn.Open
strsql = "insert  into  表1 select * from  [excel 5.0;database=" & App.Path & "\统计.xls].[Sheet1$]"
cn.Execute strsql
MsgBox "导入完毕!!"现在的问题是,导入的时候如何防止重复的数据录入到数据库中?想在导入之前对导入的数据与access表中的数据进行比较,如有重复的数据就不加进去,不重复的数据(即新数据)才加到表中,请问这个该如何弄?代码如何更改? 谢谢各位!

解决方案 »

  1.   

    因为你根本就没说明什么是“重复数据”所以只能猜了,假设表中有一个字段ID,以ID字段重复为准。strsql = "insert  into  表1 select * from  [excel 5.0;database=" & App.Path & "\统计.xls].[Sheet1$] where id not in (select id form 表1)" 
      

  2.   

    1、将Excel的内容读出
    2、循环比较,删除掉重复的项目
    3、将项目一条一条的插入数据库
      

  3.   

    3楼的意思是说,你的重复数据是如何界定的?比如某个字段的内容相同,定义为重复数据。你现在啥也没有说,就一个select *  from,谁知道你哪个数据重复?
      

  4.   

    可以把EXCEL中的数据导入一个数组中,然后把数组的数据导入ACCESS中,导入时进行查询判断,如日期和部门相同就不导入,如日期相同部门不同就导入。
      

  5.   

    Dim cn As New ADODB.Connection 
    Dim strsql As String 
    cn.Provider = "microsoft.jet.oledb.4.0" 
    cn.ConnectionString = "data source=" & App.Path & "\tj.mdb" 
    cn.Open 
    strsql = "insert  into  表1 select Distinct * from  [excel 5.0;database=" & App.Path & "\统计.xls].[Sheet1$] " 
    cn.Execute strsql 
    MsgBox "导入完毕!!" 
      

  6.   

    Dim cn As New ADODB.Connection 
    Dim strsql As String 
    cn.Provider = "microsoft.jet.oledb.4.0" 
    cn.ConnectionString = "data source=" & App.Path & "\tj.mdb" 
    cn.Open 
    strsql = "insert  into  表1 select Distinct * from  [excel 5.0;database=" & App.Path & "\统计.xls].[Sheet1$] " 
    cn.Execute strsql 
    MsgBox "导入完毕!!" 
      

  7.   

    如果数据库中有主键,在导入excel数据时如果excel中有与表中主键值一样的数据,如何去掉excel中数据,让其他不重复的数据导入呢??因为表中数据量很大,每次插入之前先做查询这种方法会比较慢,请教下有更好的方法吗