我现在做一个C/S两层结构的小系统,主界面上有一个PageControl(当然就会有许多TabSheet),每张TabSheet对应1个或多个ADOQuery,这些TabSheet公用主界面上的增、删、改、存、取消按钮,也就是每个sheet上没有相应的按钮,用户在操作时,点增加按钮后可以在所有的sheet上输入数据,然后按“保存”将所有sheet上的数据(实际就是sheet对应的adoQuery)送到物理数据库中(我想这类问题对各位大侠太easy了 :))。因为我以前都是在每个小窗体上单独处理每个ADOQuery的增、删、改、存、取消按钮事件,我称之为单处理,现在这种情况我称之为批处理。我面临的问题是:
1.我在增加按钮click事件中如何写入各adoquery的insert方法?post放在增加按钮click事件中还是放在保存按钮click事件中?
2.我在保存按钮click事件中如何写入各adoquery的UpdateBatch方法?
3.如何获取post和updateBatch出错信息?在三层结构里我可以比较ApplyUpdates(0)<> 0 ,可以通过OnReconcileError获取,在两层里如何做?
4.TADOQuery的post是提交到缓存里还是物理数据库里?post和updateBatch有什么区别?请各位大侠给我这片小菜叶指点迷津,感谢不尽!!! 分所不多,一定尽快结清,各位可以查看我的历史记录,  如有一个贴未结,可以鄙视我的问题,呵呵。快帮忙啊,朋友们~~~

解决方案 »

  1.   

    将post放在“保存”按钮里,不需要使用UpdateBatch。
    如果使用post,应该在“添加”按钮里调用tdataset的appent方法,而不是使用insert into语句。
      

  2.   

    1.我在增加按钮click事件中如何写入各adoquery的insert方法?post放在增加按钮click事件中还是放在保存按钮click事件中?ADOQuery.Append;
    Post放在保存按钮click事件中2.我在保存按钮click事件中如何写入各adoquery的UpdateBatch方法?ADOQuery1.Post;
    ADOQuery2.Post;
    .........3.如何获取post和updateBatch出错信息?在三层结构里我可以比较ApplyUpdates(0)<> 0 ,可以通过OnReconcileError获取,在两层里如何做?在OnPostError事件中写代码4.TADOQuery的post是提交到缓存里还是物理数据库里?post和updateBatch有什么区别?Post提交到物理数据库里
    Post每次提交一条数据
    UpdateBatch每次提交一批数据(ADODataSet的LockType为ltBatchOptimistic时)
      

  3.   

    为什么不直接用SQL语句写,又灵活又方便
      

  4.   

    thanks for all reply ~
    to sz1008(Need For Speed) :
    我现在就是想让不同sheet上用户输入的数据一次提交啊,难道不用updateBatch,而是post?
    还有为什么要append而不是insert?onPostError事件中如何捕捉updateBatch中某个错误?
    谢谢
      

  5.   

    我现在就是想让不同sheet上用户输入的数据一次提交啊,难道不用updateBatch,而是post?不同sheet上用户输入的数据一次提交的话,必须设置事务处理,UpdateBatch只能对单个DataSet
    的多条数据进行一次性提交,还有为什么要append而不是insert?
    无所谓的onPostError事件中如何捕捉updateBatch中某个错误?
    得自己根据E: EDatabaseError错误类型判断