CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

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

楼主downsource(www.downsource.net)2003-08-03 18:22:44 在 Delphi / 数据库相关 提问

最后9分,如何将dbedit的内容由程序指定并更新到记录集上. 问题点数:100、回复次数:20Top

1 楼dh9450(荡尽尘埃)回复于 2003-08-03 18:34:20 得分 0

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

2 楼tsyd(天生一对)回复于 2003-08-03 19:00:56 得分 0

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

3 楼dh9450(荡尽尘埃)回复于 2003-08-03 19:20:03 得分 0

post;Top

4 楼downsource(www.downsource.net)回复于 2003-08-03 20:26:50 得分 0

好吧!是我说的不大清楚.关于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等数据感知控件不好用,但我认为,没有好不好用,只是会不会用的问题.如果会用,对于大量同类的数据库程序,在控件基础上操作将远比自己写代码实现节省大量的资源.Top

5 楼Henu(守护进程)回复于 2003-08-03 21:25:02 得分 0

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

6 楼downsource(www.downsource.net)回复于 2003-08-03 23:24:13 得分 0

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

7 楼downsource(www.downsource.net)回复于 2003-08-04 09:23:23 得分 0

难道就没有人用过这种方法?  
   
  Top

8 楼downsource(www.downsource.net)回复于 2003-08-04 12:46:08 得分 0

100分只给解决问题的人。  
  Top

9 楼IORILI(眼镜)回复于 2003-08-04 13:37:54 得分 30

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

10 楼IORILI(眼镜)回复于 2003-08-04 13:38:36 得分 0

这下是不是解决问题了???Top

11 楼IORILI(眼镜)回复于 2003-08-04 13:44:40 得分 0

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

12 楼zhangheaaa(无相)回复于 2003-08-04 13:57:37 得分 40

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

13 楼li_yan_woods(彦)回复于 2003-08-04 15:36:16 得分 0

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

14 楼geyobing(大地精灵)回复于 2003-08-04 16:15:09 得分 30

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

15 楼yhzxf(木头)回复于 2003-08-04 17:37:19 得分 0

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

16 楼downsource(www.downsource.net)回复于 2003-08-04 18:24:54 得分 0

谢谢大家。  
  晚上我回家看看,通过一定给分。Top

17 楼downsource(www.downsource.net)回复于 2003-08-04 18:31:14 得分 0

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

18 楼downsource(www.downsource.net)回复于 2003-08-04 18:32:37 得分 0

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

19 楼tsyd(天生一对)回复于 2003-08-04 22:05:06 得分 0

给楼主机会说话!Top

20 楼downsource(www.downsource.net)回复于 2003-08-04 22:37:47 得分 0

楼上的我刚才测试了一下,很不幸,一个都没成功.  
   
  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看看!  
  Top

相关问题

  • 数据库问题!不能更新指定记录!
  • 更新记录?
  • VB数据库问题,怎样更新数据库中指定的某条记录?
  • 我怎么样用update更新指定的记录集中前N条数据呢?
  • 把一个表指定的几列中的凡是空值的所有行记录更新为0的语句如何写呀?
  • ADO如何更新记录?
  • 更新记录问题
  • 求助....更新记录.
  • 记录集不许更新???
  • 记录更新的问题。

关键词

  • 字段
  • 数据
  • 代码
  • 数据库
  • 内容
  • 控件
  • dbedit
  • adoquery
  • beforepost
  • 赋值

得分解答快速导航

  • 帖主:downsource
  • IORILI
  • zhangheaaa
  • geyobing

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo