请问如果用sql语句insert、update的话,关键字为空怎么控制啊
如果使用赋值更新的话,recordset的一些属性应该如何设置啊(需要添加记录和修改记录)谢谢了!

解决方案 »

  1.   

    第一问, 是"关键字"还是"字段"为空,说明白点.如果是字段为空,用null填充。
    第一问, 没看明白。问得不清楚。
      

  2.   

    我是从另一个表取出数据填入新的数据表中
    如果目标表的关键字对应的源表中字段为空,那么如何处理(用sql语句)
    如果是直接一个一个字段赋值(方便判断是否为空),那么recordset的一些属性因该如何设置?也就是CursorType和LockType的属性
      

  3.   

    还是没听明白所谓的"目标表的关键字"是什么意思,是字段的话,在SQL中忽略就行了.
      

  4.   

    你确实是说“关键字”呀,那我就真的不明白了。
    拷贝数据到新表,只要两表结构一样,可以这样:
    insert into 新表 select * from 旧表
    其它就不用管了。
      

  5.   

    a (目标表)          b (源表)
    a1(key)           b1(key)
    a2                  b2
    a3                  
    如果系统用户选择将b2对应于a1,b1对应于a2,那么如果有一个记录b2为空,那么拷贝给a表示后就不对了。所以需要判断和控制一下谢谢了
      

  6.   

    这样看的话,是不能用SQL来直接完成了,只有做循环了.Dim rsa As New ADODB.Recordset
    Dim rsb As New ADODB.Recordsetrsa.Open "select * from a", cn, adOpenKeyset, adLockOptimistic
    rsb.Open "select * from b", cn, adOpenDynamic, adLockReadOnlyWhile Not rsb.EOF
        If rsb("b2") Is Null Then
            MsgBox "error"
        Else
            rsa.AddNew
            rsa("a1") = rsb("b2")
            rsa("a2") = rsb("b1")
            rsa.Update
        End If
        rsb.MoveNext
    Wend
      

  7.   

    to donglw
    我用了你的这种方法,可是我用.update报错说太多挂起的数据没有更新
    但是用.updatebatch就可以了,请问这两种有什么不同吗?
      

  8.   

    .update  方法是保存记录集当前的任何变化既可以通过作用记录集的fields集合访问第个字段,从而直接更新数据行,也可以运用fieds 和 values 的属性定义一列字段及其值.
    用cancelupdate方法可删除已经做过的任何改变.
    .updatebatch 方法是将所有末声明的批处理改变保存到数据库里.
    recordset对象.updatebatch affectrecords中的affectrecords决定所影响的记录数目.它有4个参数.