首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

ACCESS表导入远程SQL时怎么覆盖重复记录

2012-01-18 
ACCESS表导入远程SQL时如何覆盖重复记录?各位前辈:下面代码已经可以实现将ACCESS表导入SQL,但是我要重复导

ACCESS表导入远程SQL时如何覆盖重复记录?
各位前辈:下面代码已经可以实现将ACCESS表导入SQL,但是我要重复导入的时候怎么才能覆盖重复记录呢?

_____________________________________________________________________
Private   Sub   qtxpmx()
                    Dim   cnAccess   As   New   ADODB.Connection
                    Dim   cnSql   As   New   ADODB.Connection
                    Dim   rsAccess   As   New   ADODB.Recordset
                    Dim   rsSql   As   New   ADODB.Recordset
       
                    '打开Access数据库的连接,具体的需要改一下
                    cnAccess.Open   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "   &   App.Path   &   "\MDB.mdb;Persist   Security   Info=False "
                    rsAccess.CursorLocation   =   adUseClient
       
                    '获取Access里的SPLSDMX表需要上传的字段的记录,准备导出入sql
                    rsAccess.Open   "SELECT   SPLSD.DJBH,   SPLSD.RQ,   SPLSD.SDDM,   SPLSD.QDDM,   SPLSD.VPDM,   SPLSD.YGDM,   SPLSD.TJ,   SPLSD.JZ,   SPLSD.JZRQ,   SPLSD.ZYMC,   SPLSDMX.MXBH,   SPLSDMX.SPDM,   SPLSDMX.GG1DM,   SPLSDMX.GG2DM,   SPLSDMX.SL,   SPLSDMX.CKJ,   SPLSDMX.ZK,   SPLSDMX.DJ,   SPLSDMX.JE,SPLSDMX.HH,   SPLSDMX.BYZD1,   SPLSDMX.BYZD2,   SPLSDMX.BYZD3,   SPLSDMX.BYZD4,   SPLSDMX.BYZD5,   SPLSDMX.BYZD6,SPLSD.BZ   FROM   SPLSD   INNER   JOIN   SPLSDMX   ON   SPLSD.DJBH   =   SPLSDMX.DJBH   WHERE   SPLSD.JSBZ= '1 '   AND   SPLSD.JSDJ= '0 '   and   SPLSD.JZRQ> =# "   &   CDate(Me.DTPicker1.Value)   &   "   #   and   SPLSD.JZRQ <=#   "   &   CDate(Me.DTPicker2.Value)   &   "#   ",   cnAccess,   adOpenDynamic,   adLockReadOnly
       
                '连接sql
                    cnSql.Open   "Provider=SQLOLEDB.1;Persist   Security   Info=False;User   ID=sa;Password=XXX;Data   Source=XXX.XXX.XXX.XXX;Initial   Catalog=data_XXX "
                             
                   
                    '打开sql的QTXPMX表,准备导入数据
                    rsSql.Open   "select   *   from   QTXPMX ",   cnSql,   adOpenDynamic,   adLockPessimistic
       
                    rsAccess.MoveFirst
                    While   Not   rsAccess.EOF
                                    rsSql.AddNew


                                    '给sql的记录集赋值
                                    rsSql( "DJBH ")   =   rsAccess( "DJBH ")
                                    rsSql( "MXBH ")   =   rsAccess( "MXBH ")
                                    rsSql( "SPDM ")   =   rsAccess( "SPDM ")
                                    rsSql( "GG1DM ")   =   rsAccess( "GG1DM ")
                                    rsSql( "GG2DM ")   =   rsAccess( "GG2DM ")
                                    rsSql( "SL ")   =   rsAccess( "SL ")
                                    rsSql( "SL ")   =   rsAccess( "SL ")
                                    rsSql( "CKJ ")   =   rsAccess( "CKJ ")
                                    rsSql( "ZK ")   =   rsAccess( "ZK ")
                                    rsSql( "DJ ")   =   rsAccess( "DJ ")
                                    rsSql( "JE ")   =   rsAccess( "JE ")
                                    rsSql( "HH ")   =   rsAccess( "HH ")
                                    rsSql( "BYZD1 ")   =   rsAccess( "BYZD1 ")
                                    rsSql( "BYZD2 ")   =   rsAccess( "BYZD2 ")
                                    rsSql( "BYZD3 ")   =   rsAccess( "BYZD3 ")
                                    rsSql( "BYZD4 ")   =   rsAccess( "BYZD4 ")
                                    rsSql( "BYZD5 ")   =   rsAccess( "BYZD5 ")
                                    rsSql( "BYZD6 ")   =   rsAccess( "BYZD6 ")


                                    rsAccess.MoveNext
                            If   rsAccess.EOF   Then
                                    MsgBox   "传输完毕!传输任务已完成! ",   vbExclamation,   "传输状态 "
                         
                            End   If
                    Wend
                    rsSql.UpdateBatch       '批量更新记录集
       
                    Set   rsAccess   =   Nothing
                    Set   rsSql   =   Nothing
                    cnAccess.Close
                    Set   cnAccess   =   Nothing
                    cnSql.Close
                    Set   cnSql   =   Nothing

End   Sub


[解决办法]
在添加AddNew之前,你先过滤下,若记录已经存在则不要添加了,直接修改,

若没有,则添加
[解决办法]
用这种方法,太差了!效率很成问题,特别是数据量大时。
insert into table1() select * from [数据源].table2 where 条件
一条sql就行。

热点排行