1)在DELPHI中, 我对指针位置和指针类型搞不清楚, 在FORM中, 当将ADODATASET的CURLOCATION 设为CLUESRSERVER, CURSORTYPE 设为CKKEYSET时,按理说
当其他用户添加数据时,我的和ADODATASET相连的DBGRID中应该可以看到添加的数据, 但是看不到, 如果再执行ADODATASET。ACTIVE := FALSE; ADODATASET。ACTIVE := TRUE; 那是可以看到添加的数据, 但是这样做, 也就失去了指针的静态和动态的区别了, 那么CKKEYSET这种指针类型该在什么样的情况下用? 并且应该怎么用? 恳求高手指点一二。
2)在使用ADODATASET的批更新属性时,FORMS上做了一个按钮,是保存用的,因为此时ADODATASET和数据库的联系是断开的,所以数据是保存在内存里的. 当有一批数据需要保存到数据库里时, 才需要使用UPDATEBATCH( )方法, 这又多了一个按钮,  问题是用户他不知道这个原理, 两个按钮的保存的作用, 用户搞不清楚, 也接受不了. FORM上有两个保存按钮, 这个问题该怎么解决?  恳求高手指点一二。3) 在使用ADODATASET的批更新功能时, 但用户修改了某一列的一个或多个值时, 无论该用户有没有退出该FORM, 其他用户就是不能修改上个用户修改过的同样的记录, 系统总是在报错, 这个问题该怎么解决? 另外, 我想修改系统报错的对话框, 就是想在同样的错误情况下, 用我自己的报错的对话框来代替系统的, 我该如何来做? 恳求高手指点一二。

解决方案 »

  1.   

    1) 对于第一个问题, 我用的是DBGRID 来获得数据的.
    2) 对于第三个问题, 就是第一个用户修改后的那些列对应的行也不能修改, 不只该怎么解决, 头疼.
      

  2.   

    1.没有处理,如楼上所说用DBGRID可以
    2、写到一个事件里面,可以做一下判断
    3、数据更新时没有所定表
      

  3.   

    楼上的朋友, 
    1) 用DBGRID作为输入, 是不是太业余了? 实用吗? 哪有软件公司用那个的?
    2) 说的太模糊了.
    3) 还是说的模糊.
      

  4.   

    1.没有refresh.
      如果再执行ADODATASET。ACTIVE := FALSE; ADODATASET。ACTIVE := TRUE;
      相当于refresh
    2.此时ADODATASET和数据库的联系是断开的,干脆把数据库连上,把它保存到数据库里。让他们的功能统一。
    3.用拷贝复制访问。建立临时表,把所有的更改操作放入临时表。然后在操作。
      

  5.   

    3.锁定表,在exception里写报错对话框
      

  6.   

    楼上的兄弟,
    1) 如果这样做, 那还要指针干什么? 先FALSE, 后TRUE, 等于是从新在接一次数据库.
    2) 如果直接连上, 那还有什么效率而言啊? 我追求的就是效率.
    3) 修改是可以成功的, 但是在提交数据的时候, 还是出问题, 关键的问题是在提交的时候.
      

  7.   

    readersm68(地主) 很感谢你的答案
    但是我该用BDE来解决的时候.
    无论是TABLE, QUERY, 都是后来修改的数据可以覆盖以前的,
    这样, 就不存在冲突的问题.
    而且, 我以前看到的一个ERP系统, 也是后来的数据覆盖前面的,
    请问, ADO为什么不行?
    还有两个小问题,
    1) 用BDE 开发的项目完成后, 好象克服端需要安装BDE和ODBC数据源.
    我很想知道怎样安装.
    2)用ADO开发的项目完成后, 因为服务机端的程序需要换到客户的服务机上,
    所以那些ADO的CONNECTIONSTRING需要从新设置, 但是这些已经写死在程序里了,
    请问这个问题该怎样解决?