数据库为SQL SERVER,有以下几个表:表1
DEST_ID   NAME表2
DEST_ID   ALNAME
表3
DEST_ID  NAME  FEE    MEMO
将要导入的EXCEL表(格式固定)
NAME      FEE问题是:NO.1导入:
if 表2.ALNAME=EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID
则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
NO.2对比:
如果表3里的FEE里边已经有数据,在导入时把EXCEL表里的FEE和表3里的FEE的对据进行对比后导入,如果数大了在MEMO中写变大,小了写减小。

解决方案 »

  1.   

    没有太看懂你的意思,能再解释一下?
    不过你可以先用一个
    Insert into #临时表
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')
    将excel的导入到临时表,然后用sql操作
      

  2.   

    if 表2.ALNAME=EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID
       …………………………………………这里是判断是否存在还是只是关联 
    则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
                 ^^^^^^^^^这里导入   是什么意思?插入?修改?
      

  3.   

    if 表2.ALNAME=EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID 
    //是判断是否存在,如果存在就进行导入
    则表3.DEST_ID导入表1.DEST_ID,表3.NAME导入表1.NAME,表3.FEE导入EXCEL表里的FEE
    //实际上是update,比如我以前导入过一次了,FEE里边有值为0.8,这次再导入时如还是0.8直接UPDATE,如本次导入的数变了,成了0.7了,则是在字段MEMO里注明说减小了。还有什么不明白的吗?
      

  4.   

    declear @name varchar(20)
    declear @id varchar(20)SELECT * into #EXCEL导入表 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')if exists(select @name = 表2.ALNAME, @id = 表2.DEST_ID from 表2,#EXCEL导入表,表1 where 表2.ALNAME=#EXCEL导入表.NAME and 表2.DEST_ID=表1.DEST_ID )
    begin
    delete * from 表3 
    where 表3.DEST_ID = @id and 表3.NAME = @nameInsert into 表3 
    (DEST_ID ,NAME,FEE)
    SELECT @id,@name,FEE 
    FROM  #EXCEL导入表
    end
      

  5.   

    可以,你按我写的select的格式写就行了,由于不知道你的
    .xls格式,所特地用临时表,以便你修改