1: 有个字段可以为空, 也可以有值, 但是如果有值的话必须唯一
我创建unique index的时候如果有几条记录都为空,他就报错:不能重复,怎么办?
2: ado 中,recordset的update方法可以立刻返回么?用什么方法
    我先addnew后,上传了一个比较大的文件,可是系统是时实的,需要立刻响应怎么办?  不考虑多线程的情况? 还有, stream.loadfromfile 有什么办法也可以立刻返回么? 原因同上
谢谢了

解决方案 »

  1.   

    如果有空记录的话要设为不唯一
    先上传再ADDNEW不行吗?
      

  2.   

    可以写一个存储过程来交给后台数据库来处理
    recordset的update方法可以立刻返回么?用什么方法
    这是什么意思啊,是不是可以refresh一下啊
      

  3.   

    "有个字段可以为空, 也可以有值, 但是如果有值的话必须唯一
    我创建unique index的时候如果有几条记录都为空,他就报错:不能重复,怎么办?"
    这个是主键,必须有值且唯一。
      

  4.   

    "有个字段可以为空, 也可以有值, 但是如果有值的话必须唯一
    我创建unique index的时候如果有几条记录都为空,他就报错:不能重复,怎么办?"不要设置唯一索引。写入时用代码检查:
    cn.execute "insert into yourtable select * from othertable where field1 not in(select field1 from yourtable)"或set rs = cn.execute("select * from yourtable where field1='" & text1 & "'")
    if rs.eof then
      rs.addnew
      rs!field1 = text1
      ......
      rs.update
    else
      msgbox "重复记录"
    end if
      

  5.   

    我是回up还是回。?
    哎。想了半天没有决定你用的是access么?.addnew这种方法偶不建议使用,用SQL语句最好
    你要想马上返回,可以用事务试一下,应该可以的关于第一个问题,偶决定了用。
    因为偶认为这个问题是你设计的问题
      

  6.   

    1。你的这个问题可以使用存储过程的事务来解决
    create Proc test
             @a_id char(6),
    @b_name              varchar(50),
    @result        char(25) OUTPUT
    as  
    select a_id from table where a_id = @a_id
    if @@rowcount<>0 
       begin
                  SELECT @result='FAIL'
                  RETURN      
       end 
    else
       begin transaction 
       BEGIN
       insert into table(a_id,b_name) VALUES (@a_id,@b_name) 
       if @@error<>0
       begin
            ROLLBACK TRANSACTION
            SELECT @result='FAIL'
            RETURN
       end
       else
       begin 
    COMMIT TRANSACTION
             SELECT @result='GOOD'
       end
       ENDend
      

  7.   

    2.关于这个问题有些难点,因为VB6对多线程不好。在ADO中支持异步操作.即不等结果直接返回,不知道你要得是不是这个.
    在VC中是这样写的
    cpconn->Execute(_bstr_t(strSQLInsert),NULL,adAsyncConnect); 
    cpconn是我的数据库连接对象
    翻译成VB因该是
    cpconn.execute(strSQL,adAsyncConnect)
    你试试
      

  8.   

    谢谢各位的回答
    以前是考虑到别人可能会去修改数据库,现在不管了, 如果他不用我的程序照成的重复也不管了, 谁叫他不听话了, 决定采用 of123() 的方法了,
    存储过程我不熟悉,不过我想,我刚开始接触数据库, 能少用还是少用把, 何况也不是很大问题,就程序中判断下吧:)
    问题2想了下还是不行, 即便是异步模式,试了下, stream.loadfromfile等还是要时间的, 
    而且很难处理,我想直接用过一个程序来做拉。 然后我的住程序调用他, 他只负责上传我生成的问题, 多进程解决了。 再次谢谢各位,以后有什么问题还到这里来问