我用SQLConnection + Simpledataset 做数据库管理程序后台数据库用
SQL SERVER 2000 ,因为是一个Web 系统所以我设置了simpledataset的
packedrecord=20(注:数据库中的数据大于20条),但当我
 if Simpledataset.active then Simpledataset.close;
 simpledataset.commandtext:='select * from G_zzrkxxdjb';
 simpledataset.open;
 simpledataset.insert;
 然后就编辑一条记录输入,然后
 simpledataset.post;
 if simpledataset.changerecord>0 then
  if simpledataset.applyupdatas(0)>0 then  //就是这里
    raise ....
但是,在执行simpledataset.applyupdatas(0)时总是由浏览器报“灾难性
错误”然后就不能更新数据。 然后我做了实验:
1、当数据库中的数据小于20条时,没有错误产生。
2、当数据库中的数据大于20条时 把 packedrecord=-1 或者大于20 时没有
   错误产生。
3、当数据库中的数据大于20条时 把 packedrecord=20 或者小于数据的条总
   数时有相同错误产生。请问:这个问题的原因是什么?怎么解决?谢谢。

解决方案 »

  1.   

    帮你顶!
    分包取数据是delphi内部处理的,楼主做个简单的二层看看分包取数据
    能否正常运行。
    3月的时候我们也准备用DBExpress ,后来这个东东和orical结合不是很好
    有几个问题搞不定,用ADO就可以了,后来就没用这个东西
      

  2.   

    simpledataset做二層時有問題,經常會出現不明的錯誤,
    建議改用ado,或三層,三層用起來沒事.
      

  3.   

    “灾难性错误”,在我使用的时候也发生过,后来解决了,说一下,可能对你有用:
    就是我用了引用表,即含LOOKUP字段,当出现这种情况时,就有问题,后来反复试验,解决了,就是在程序打开前默认所有的数据连接为关,专门写一段打开连接的程序,
    (****主要是先开从表(被引用的)然后开主表,****)这样就没什么问题了。
      

  4.   

    谢谢上面的各位。
    Web 程序用3层来做要冒很多风险啊,一般还是用两层处理的好,因为并不是所有的
    数据库客户端访问软件都是线程安全的(Thread-Safe)。在就是我并没有连接表的。
    难道这个是DELPHI 本身的问题?