上面是dbgrid,下面是dbedit等字段。(即上面是列表,下面是明细)
追加后,产生空记录,可是如果用户没有保存就在列表里移动光标,然后再点保存,由于一些数据没有录入完毕,可能会出错。请问大家是如何解决这个问题的?
我以前做的时候,追加或者修改,弹出一子窗口。但是在delphi里面好像子窗口无法使用父窗口的adoquery,datasource等。

解决方案 »

  1.   

    ####但是在delphi里面好像子窗口无法使用父窗口的adoquery,datasource等。
        在implementation下use父窗体单元呀!
    ####追加后,产生空记录,可是如果用户没有保存就在列表里移动光标,然后再点保存,由于一些数据没有录入完毕,可能会出错。请问大家是如何解决这个问题的?
        晕!在TDataset的OnNewRecord方法中加判断。
      

  2.   

    完全支持大脸猫的意见,虽然是简单易用,一个APPEND ,POST 就搞定,但很多问题要解决的,
    还不如用文本输入的方法
      

  3.   

    在adoquery1的beforepost里写那些字段不允许为空,为空则abort
      

  4.   

    可以不把增加记录和浏览明细放在一个页面里,这样可以避免
    或,在增加记录时把DBGRID.enable:=false;
    在提交后再变回TRUE
      

  5.   

    可以用数据控件的DisableControls 和 EnableControls
    如 adoDataSet.DisableControls;
       adoDataSet.Edit;
       ......
       adoDataSet.Post;
       adoDataSet.EnableControls;
      

  6.   

    对于这个问题我是这样处理的。
    On TDataSet OnScroll Event:
    if dsEdit,dsAppend In DataSet.State then
    abort如果数据集在编辑或添加状态,则不允许 Scroll