我在一个任务里要导出数据到Access里给其它系统使用,有时因为需要要删除里面的表,导入数据没问题,就是如何删除表呢

解决方案 »

  1.   

    create proc sp_operate_access
    @cmdsql varchar(8000),
    @accessfilename nvarchar(1000) 
    as
    begin
    declare @out int,@err int,@obj int,@constr nvarchar(1000),@src nvarchar(255),@desc nvarchar(255)

    select @constr='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+@accessfilename   

    exec @err=sp_oacreate 'adodb.connection',@obj out 
    if @err=0 
    begin
        exec @err=sp_oamethod @obj,'open',null,@constr 
    if @err=0 
    begin 
    exec @err=sp_oamethod @obj,'execute',@out out,@cmdsql 
    if @err=0 
    begin
    EXEC sp_OAMethod @obj, 'Quit'
    exec sp_oadestroy @obj
    return
            end
    else
    exec sp_oageterrorinfo 0,@src out,@desc out
    end
    else
    exec sp_oageterrorinfo 0,@src out,@desc out
    end
    else
    exec sp_oageterrorinfo 0,@src out,@desc out
    exec sp_oadestroy @obj 

    select cast(@err as varbinary(4)) as 错误号 ,@desc as 错误描述 ,@src as 错误源
    end
    go测试 :
    exec sp_operate_access 'create table tc(id int)','c:\db1.mdb'
    goexec sp_operate_access 'drop table tc','c:\db1.mdb'
    godrop proc sp_operate_access
      

  2.   

    一、SQLServer和Access1、查询Access中数据的方法:select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')或select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB2.mdb";User ID=Admin;Password=')...serv_user2、从SQLServer向Access写数据:insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')
    select * from SQLServer表或用BCPmaster..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'上面的区别主要是:OpenRowSet需要mdb和表存在,BCP会在不存在的时候生成该mdb3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了insert into SQLServer表 select * from 
    OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')或用BCPmaster..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" in "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'4、删除Access数据:delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
    where lock=05、修改Access数据:update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')
    set lock=1