最后9分,如何将dbedit的内容由程序指定并更新到记录集上.

解决方案 »

  1.   

    ???不明白 你是说把一个表的某一记录的某一字段换成EDIT里的东西 ?
      

  2.   

    dbedit的内容手工输入,数据可以在记录在数据库里。但是在程序中用dbedit->Edit赋值,数据库记录并未按设想的改变!
      

  3.   

    好吧!是我说的不大清楚.关于Dbedit的问题.  首先说明的是直接写sql语句插入的程序我会写.但种种原因,我觉得采用控件控制比较合适.所以请不要在本帖讨论直接写sql语句插入的问题.  sql server数据库的一个表(Table1),有三个字段(Field1,Field2,Field3),
    我在程序设计窗体上放一个ADOQuery,DataSource,dbnavigator,两个dbedit.两个DbEdit对应Field1,Field2大家知道  点击dbnavigator的填加按钮时,当在dbedit1,dbedit2里面输入数据,按dbedit的保存按钮后.输入的dbedit1,dbedit2的内容就保存在相应的表的字段中.问题是:
      在上面的过程中,如何同时让相应记录的Field3字段插入不需要用户输入的指定的内容(比如,当前系统日期)? 
    我的做法是:
      在窗体上放另一个隐藏的dbedit3,对应Field3,因为是添加,所以在ADOQuery的afterscoll事件里面判断当前记录的field3是否为空,若是空,则将dbedit3的text赋值.但结果是,点击dbnavigater的保存按钮后,Field3的内容依然为空.(大家帮看看怎么回事?我不信没有人用过这种方式!)  在论坛里,会看到有人说什么dbedit等数据感知控件不好用,但我认为,没有好不好用,只是会不会用的问题.如果会用,对于大量同类的数据库程序,在控件基础上操作将远比自己写代码实现节省大量的资源.
      

  4.   

    DBEdit 对应的有DataSource和DataField
            你所用的DBnaviGater 当你浏览数据时对应的你要隐藏的 DBEidt中的数据要改变的
             如你要求如果你想插入当前时间你可以赋值给DBEdit3  
             DBEdit3.text:=DateToStr(Now);
             当你要插入数据时必须最后Post;
      

  5.   

    呵呵,说到post,但是dbedit1,dbedit2却没有直接调用post啊!    另外,如果post可以解决问题,那么是怎么用,用在哪里呢?
      

  6.   

    dbedit3.SetFocus;
    adotable1.Edit ;
    dbedit3.Text :='dfdfdfdbbbb';
    DBNavigator1.SetFocus ;
      

  7.   

    对了 这段代码应写在 adotablebeforepost事件里。
      

  8.   

    我也认为给dbedit3.text赋值的程序,不应该写在afterscroll()中,
    应该写在beforepost()中,
    而且不必用一个隐藏的dbedit,
    可以直接在adoquery的beforepost()事件中写入:
      adoquery.fields[2].value:=指定值;
    可以实现同样功能。
      

  9.   

    你可以这样子实现:
    在adoquery的beforepost中写:
    adoquery.fields[2].values:='dfdf';
    adoquery.post;
    基本同意 zhangheaaa(竹) 的意见,这样子肯定能够实现你想做的
      

  10.   

    你可以在beforepost事件里写如代码,
    adoquery.edit;
    adoquery.fieldbyname('你的Dbedit3对应的字段名').asstring := '你要的值';
      

  11.   

    你的Field3对应的DBedit是不是没有与Datasource连接?
      

  12.   

    不过,我想:在adoquery的beforepost中写:
    adoquery.fields[2].values:='dfdf';
    adoquery.post;
    基本同意 zhangheaaa(竹) 的意见,这样子肯定能够实现你想做的的解决方法,会造成死循环。
      

  13.   

    确认Field3对应的DBedit有与Datasource连接.不管怎么说,还是等晚上回家测试后在看结果吧!请大家继续关注.
      

  14.   

    楼上的我刚才测试了一下,很不幸,一个都没成功.geyobing(银翼天使) 的
    在beforepost事件里写如代码,
    adoquery.edit;
    adoquery.fieldbyname('你的Dbedit3对应的字段名').asstring := '你要的值';和li_yan_woods(彦)
    在adoquery的beforepost中写:
    adoquery.fields[2].values:='dfdf';
    adoquery.post;
    的解决方法导致的后果是一样的,afterpost事件都没触发(程序中我让afterpost事件触发时显示相应信息,结果使用上面两种方法,都没显示信息),这说明post根本无法执行.
     IORILI(沒落的阿咎) 的
    在adoquery的beforepost中写
    dbedit3.SetFocus;
    adotable1.Edit ;  
    dbedit3.Text :='dfdfdfdbbbb';
    DBNavigator1.SetFocus ;倒是可以执行,但field3的数据仍然没有插入。
    我都快崩溃了,怎么回事?呵呵。您不要急。后来我发现,我测试的字段3在sql server中设置的是自增型的,换个一般的测试后。发现geyobing(银翼天使) 的和IORILI(沒落的阿咎) 的方法可以了!而 zhangheaaa(竹) ( ) 信誉:100  2003-08-04 13:57:00  得分:0 
     
     
      我也认为给dbedit3.text赋值的程序,不应该写在afterscroll()中,
    应该写在beforepost()中,
    而且不必用一个隐藏的dbedit,
    可以直接在adoquery的beforepost()事件中写入:
      adoquery.fields[2].value:=指定值;
    可以实现同样功能。
      
    的解决方法是最简单的。Edit也不必用的。
    谢谢大家。麻烦大家了。关于“自增加字段”,我的处理方法是修改库表结构,不使用自增加,在程序中进行字段的增加的控制。 
    再次谢谢大家。顺便请大家有空到我的网站www.downsource.net看看!