Office中国论坛/Access中国论坛

标题: 如何在录入新纪录时,某些字段自动引用上一记录的值??? [打印本页]

作者: majj816    时间: 2002-12-6 16:19
标题: 如何在录入新纪录时,某些字段自动引用上一记录的值???
各位大侠,如何在录入新纪录时,某些字段自动引用上一记录的值???不知如何填写默认值。
作者: eio    时间: 2002-12-6 17:29
标题: 容易!
对于进货单,销售单这些有多条记录的表,某些值诸如:进货或销售的日期、单据的编号、销售的客户、销售经手人等等,都是重复使用的。如果长期设置某人或者今天就是默认值,这,也是不明智的。
    针对以上的问题,只要在控件的“after update”(数据被更新)中编写以下代码即可:
    如果是日期控件,由于日期的默认值为#**-**-**#,(如#01-02-03#,将被视为2001年的2月3日),所以默认值除了使用文本框或组合框的文本属性以外,还必须增加“#”号于文本属性的前后。
(在其自身的默认值可以设置为当天,如:=date(),这样在新的输入时可以默认今天,当有所更改以后就默认更改后的日期,便于输入旧帐使用。)
Private Sub 日期_AfterUpdate()
Me![日期].DefaultValue = "#" + [日期].Text + "#"
End Sub

   如果控件是其他文字,诸如“客户名称”等,由于必须在文本属性上添加双引号“”,否则客户名称不会生效,如默认值:“HRK”相当于HRK,但HRK就不是HRK啦,所以应该在文本属性的两侧加上单引号“ ’”以及“‘”

Private Sub 客户名称_AfterUpdate()
[客户名称].DefaultValue = " '" & [客户名称].Text & "'"
End Sub
作者: nmysc    时间: 2002-12-6 17:39
标题: 真的不错
真的不错,解决了我很长时间没解决的问题
作者: majj816    时间: 2002-12-7 00:45
hello eio,非常感谢,上面的描述看不太懂,能否具体一些。
作者: 大熊    时间: 2002-12-7 00:51
看不懂不要紧,最重要的是动手做,你只在在窗体里放个文本框起名叫“客户名称”,然后在其更新后事件中输入以下代码就应该可以看到效果了。
[客户名称].DefaultValue = " '" & [客户名称].Text & "'"

作者: guotianxin    时间: 2002-12-7 00:56
使用DefaultValue属性,可能是最好的办法。
如果你不想用这个办法,我这给你介绍个手动的办法:在新记录的输入框中按Ctrl+'即可自动复制上条记录的那个字段的值。
作者: yahai    时间: 2002-12-7 02:43
多谢,这个问题我早就想知道了,谢谢eio
作者: cnwang    时间: 2002-12-7 05:26
我常用 sendkeys ^',
作者: waltonw    时间: 2002-12-8 05:43
我是用宏实现的没有那么复杂,也牵涉到sendkey,这样不管是否日期和文字都能复制。
作者: CCLCCL    时间: 2002-12-9 22:00
标题: 如何用宏实现
请问如何用宏实现??
作者: shfcf    时间: 2002-12-10 02:09
以下是引用eio在2002-12-6 9:29:19的发言:
对于进货单,销售单这些有多条记录的表,某些值诸如:进货或销售的日期、单据的编号、销售的客户、销售经手人等等,都是重复使用的。如果长期设置某人或者今天就是默认值,这,也是不明智的。
    针对以上的问题,只要在控件的“after update”(数据被更新)中编写以下代码即可:
    如果是日期控件,由于日期的默认值为#**-**-**#,(如#01-02-03#,将被视为2001年的2月3日),所以默认值除了使用文本框或组合框的文本属性以外,还必须增加“#”号于文本属性的前后。
(在其自身的默认值可以设置为当天,如:=date(),这样在新的输入时可以默认今天,当有所更改以后就默认更改后的日期,便于输入旧帐使用。)
Private Sub 日期_AfterUpdate()
Me![日期].DefaultValue = "#" + [日期].Text + "#"
End Sub
 
   如果控件是其他文字,诸如“客户名称”等,由于必须在文本属性上添加双引号“”,否则客户名称不会生效,如默认值:“HRK”相当于HRK,但HRK就不是HRK啦,所以应该在文本属性的两侧加上单引号“ ’”以及“‘”

Private Sub 客户名称_AfterUpdate()
[客户名称].DefaultValue = " '" & [客户名称].Text & "'"
End Sub


?我怎么没有想到,谢谢!
作者: wxj131    时间: 2004-12-24 06:41
我也学了一招,感谢了!
作者: Trynew    时间: 2004-12-24 22:59
我是直接在文本框的默认值输入:DLast("字段名","表名")
作者: 盗到稻    时间: 2004-12-27 22:32
我在BeforeUpdate与AfterUpdate事件中都输入[客户名称].DefaultValue = " '" & [客户名称].Text & "'"

这样就算打开窗体不在“客户名称”输入资料也能以上条记录作为默认值了。BeforeUpdate事件中没此行代码的话,你新打开窗体时在“客户名称”中不输入一次信息再按录入新记录时是不会有默认值出现的。不过两个事件中都有此行代码会有什么不良后果啊[em44]
作者: aone    时间: 2004-12-28 06:00
使用默认值?好办法!有学了一招!
作者: okmijn    时间: 2005-11-10 16:55
非常感谢!!!!!!!
作者: yttzm    时间: 2005-11-18 05:54
很好!这种办法简单实用。
作者: cnhbjm    时间: 2005-11-18 06:49
很不安全的办法,作为一个程序员,违反了最基本的安全准则,建议初学者切莫用此办法!!!!否则,你编写的东西最多只你一个人用!永远只你一个人用!永远用不成----无尽的麻烦正等着你!   想想为什么???
作者: zyz218    时间: 2006-10-15 01:02
为什么???那你有什么好办法吗???
作者: 蓝天8390    时间: 2006-10-15 01:52
我试了上面的办法都不行,可能是没会用,还请上面几位高手指点.谢谢!
作者: 蓝天8390    时间: 2006-10-15 02:12
我试了 Trynew管理员的下面的做法很好用,只是我在日期属性中用了掩码,当要输入不同日期时要清除默认日期,再回到上一字段,然后再进入日期字段才能输入新日期.不知如何解决,请高手指点.谢谢!

我是直接在文本框的默认值输入:DLast("字段名","表名")
作者: eyewitnes    时间: 2006-10-15 04:14
以下是引用cnwang在2002-12-6 21:26:00的发言:
我常用 sendkeys ^',

这个如何实现?能做个简单的例子来看看不?
作者: heqing3000    时间: 2009-7-23 14:07
对于这些给我帮助的贴子,我有义务顶上来.
作者: jxncwyhcn    时间: 2009-7-24 16:02
偶太菜了 看了半天就是没弄懂,用2007版的试了也没用




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3