最近写了一个管理系统,vb+sql2000,对记录的编辑,我采取的模式不是直接在表格中编辑,而是弹出一个窗体,在窗体中对一条记录编辑后保存,然后返回前一个窗体,也就是说用一个表格显示记录,但是修改时不在这个表格中改。
可是用户使用后,提出要求是,要改成在表格中直接修改的,他们说我的方法太麻烦,要弹出一个窗体,不如象电子表格一样在表格中编辑好,我与他们讲道理,他们也不认可,没办法,在这里发个贴子问问大家吧。大家一般是如何处理这种编辑的。我先说说我的理由,大家多批评,希望大家都谈谈自已的看法。
我为何没有设计成在一个表格中编辑呢?理由如下:
1。数据表是很多约束的,比如某一列内容只能从某一个表中取,所以说一个表格中的内容有可能要涉及到4--5张数据表,用表格来实现很难。而且表格的各列之间也存在一定的逻辑关系,
2。如果在表格中编辑,每次更新时就要全部记录都更新,这就存在一个问题,比如你是A用户,在修改一个表格,另一个B一个用户也在修改这个表格的数据,可是A用户修改了前5条记录,B用户改了后5条记录,这样两个用户更新时就会出现问题,要不A用户的修改白做了,要不B用户的修改白做了。当然了,可以为每条记录增一个修改标志,每次只更新已改的记录,可是这增加了很多复杂度,觉得不太值得。
3。再说一说保存的方法,一种是设一个保存按钮,需要保存时保存一下,可是如果用户改了很多条记录,没有保存,突然断电了,这些修改全无法实现了,因为很难保证每个客户端都是ups,当然了,做好提示也是可以实现了,就是office,可是我想每修改一次保存一次不是更好吗?
另一种保存方法就是用户打一个回车就进行保存,这样就可以不设保存按钮了,也就是每改一条记录就更新一次。这就会向数据库频频更新,效率不高。而且每次都是全部更新,不管改不改。
以上种种问题,用一条记录保存一次的方法就可以解决,也就是说弹出一个窗体来编辑,然后保存后返回。所以我选择弹出窗体的办法来解决。请大家谈谈看法,我如何向客户讲,还有,我的想法对话,大家在做项目时,对一些复杂的表格是如何编辑的呢?是在表格中直接改呀,还是弹出一个窗体来编辑呀?
等着大家,谢谢。

解决方案 »

  1.   

    客户要求总是第一位的,虽然有时候看来不尽合理。
    以前也做过类似的管理系统,对Grid中数据的修改同样是采用弹出新窗体来解决。
    不过后来自己都感觉使用起来不方便。所以用户提出的要求也未必没有道理。
      

  2.   

    //每次更新时就要全部记录都更新
    why??
      

  3.   

    //每次更新时就要全部记录都更新
    why??
    --------------
    当然可以增一个标记,记住哪行是否有过修改,只保存修改过的行。不过我没有找到好的判断方法。
    另外,我写程序一向都是使用sql语句来更新,不使用记录集的update,我觉得这样更灵活。可是如果在一个表格中编辑,sql语句更新也不好使,麻烦很多。我认为最主要的问题是,数据库约束在表格中编辑不好实现。比如某个列是一个编码,必须从另一个表中取相应的,而不是象excel一样可以随意填入数据,如果那样做成表格也很方便。
    而且还有列之间的运算关系,比如某列的数据应该是某几个列运算的结果。
    字段数有10个了。
    大家看如何做好。我不太想用表格控件,可是自已又没写出来表格的控件。觉得很难写的。谢谢大家指教,请再提。