用adodataset.insert,这时adodataset的state应为dsinsert吧,为什么有时adodataset的state还为dsbrowse呢?必须多次执行adodataset.insert后adodataset的state才为dsinsert,什么原因呢?太急了!!!,多谢!!!!

解决方案 »

  1.   

    程序的缓存问题啦升级一下你的ADO
      

  2.   

    父窗体
     if adoDataSet1.State = dsBrowse then
        adoDataSet1.insert;
    就这一句代码,增加的单击事件,
    继承窗体:
    inherited;
      edit1.Text:='';
      edit2.Text:='';
      edit3.Text :='';
      edit4.Text:='';
      edit5.Text :='';
      

  3.   

    应该同时判断一下dataset的active属性
      

  4.   

    补充一句把 if adoDataSet1.State = dsBrowse then
        adoDataSet1.insert;
    变为
    while adoDataSet1.State = dsBrowse do
        adoDataSet1.insert;
    才行
      

  5.   

    为什么呢,并且没有adodataset.close呀
      

  6.   

    并且调试时发现即使insert后,adodataset.state仍为dsbrowse
      

  7.   

    设断点看一下
    if adoDataSet1.State = dsBrowse then
    这句的执行结果,用单步一行一行代码走
      

  8.   

    if adoDataSet1.State = dsBrowse then
        adoDataSet1.insert;//这条语句是不是被跳过去了
      

  9.   

    我很少判断dataset的状态,我觉得没有什么必要。学习一下。
      

  10.   

    没有,必须是第二次,adodataset.state为dsinsert
      

  11.   

    是不是你insert之后就判断,如果是这样可能是时间差的问题
    你放到两个不同的按扭试一下
      

  12.   

    如果是继承,你最好把ado控件防到datamodule中
      

  13.   

    太谢谢你了,祝节日快乐,那你说可怎样解决呢?难到用while 循环吗?
    能不能是继承窗体的问题,先insert继承窗体的adodataset再insert父窗体的
    insert(即与物理连接的dataset)呢
      

  14.   

    如果是继承的话,你最好把ado控件防到datamodule中
    然后动态的给它tablename属性赋值