Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

窗体中新增数据时,下一行自动默认上一行的值。请问如何实现,感激不尽!

Toby  发表于:2013-09-20 00:49:02  
复制

各位热心朋友,我是这个意思:

当我在子窗体中录入一行数据,光标从"位置A“移动到”位置B“时,自动默认上一行的”项目编号和工件名称“;当从”位置B“移动到”位置C时,自动默认刚才的默认值,以此循环。

谢谢指教!++



数据库密码   gnrn



点击下载此附件

 

Top
宏鹏 发表于:2013-09-20 08:49:18
[示例]新增记录时复制上一条记录的示例\具有记忆功能的示例、默认上一次数据、默认前一次值[Access软件网]
http://www.accessoft.com/article-show.asp?id=2480

殷小宝 发表于:2013-09-20 12:25:41

新记录字段默认值是最后一条记录相应的字段:

rst.open "select top 1 项目编号,工序名称 from tblname order by id desc",currentdb.connection,adopenkeyset,adoptismic

if newrecord then

me.项目编号.defaultvalue=rst!项目编号

me.工序名称.defaultvalue=rst!工序名称

end if



Toby 发表于:2013-09-20 23:20:41
小宝,帮传一下附件好吗,先谢了。

殷小宝 发表于:2013-09-21 16:41:25

你的附件打不开。没办法上传。




Toby 发表于:2013-09-21 20:24:16
你就新建一个数据库吧,我知道原理就行,这个问题困扰我一个多月了,真的感激你,谢谢你。

沈军 发表于:2013-09-22 16:08:36

看到眼里,急在心里,本来有必帮你看看,结果看到你给对象命名就没有力了。

请记住:在ACCESS中不管你给什么对象命名(表、查询、窗体、报表等以及各种控件),一定不要采用各种特殊符号(空格/+/-/*///,以及《》)

有些命名虽然ACCESS可以接受,但给我们后期的开发工作带来非常大的不方便,以致于无法进行后面的开发工作!



Toby 发表于:2013-09-22 21:26:15
虚心接受6楼批评,今后一定注意!但当前问题到底如何解决泥?

zh60492 发表于:2013-09-24 00:21:48
Private Sub 工号+姓名_Enter()               本控件的进入事件

 Dim a, b As Variant

  ‘读取集合最后一行记录

  Dim dbs1 As DAO.Database               

  Dim rst1 As DAO.Recordset
  Set dbs1 = CurrentDb
  Set rst1 = dbs1.OpenRecordset("表名")

rst1.movelast 

 a=rst1!项目编号


 b=rst1!工件名称


判断是否新记录,是则赋值

Dim intnewrec As Integer

    intnewrec = Me.NewRecord
    If intnewrec = True Then    
      项目编号 = a
      工件名称 = b    
    End If
End Sub



zh60492 发表于:2013-09-24 00:26:05

位置A是一个控件,位置B、C是同一个控件。对于控件来说,这并不是循环

对于整条记录来说,可以看作是循环



Toby 发表于:2013-09-24 09:46:46
求8楼朋友上传示例附件,成分感激感激感激!

chinasa 发表于:2013-09-24 10:51:16

我说个简单点,不用上传附件你就自己会的方法吧。

1.在位置A(工艺类别字段)的失去焦点事件中把需要写的内容赋值到变量中。比如:XMBH=ME.项目编号

2.在位置B获得焦点事件中,把变量的内容写到字段中。比如:ME.项目编号=XMBH。

3.从B到C重复上面两步就可以。



zh60492 发表于:2013-09-24 21:27:07

Set rst1 = dbsJzhb.OpenRecordset("表名")     这句写错了

应为Set rst1 = dbs1.OpenRecordset("表名")

点击下载此附件



zh60492 发表于:2013-09-24 21:35:08

回复11楼chinasa

你的方法貌似可以,但有一个问题,楼主的例子只有一行记录,现假如有5行记录,第一行记录与第二行记录不同

以你的代码运行,焦点在第一行记录,然后第二行记录获得焦点,导致第二行记录改变,而这种改变并不是我们想得到的结果

我们只是希望在新记录时有这种结果

仅供讨论参考



沈军 发表于:2013-09-24 21:46:25

第一步:在需要有默认值的控件的默认值属性中输入=DLAST("字段名","表名")

第二步:在需要有默认值的控件的更新后事件中加入代码:


Private Sub 控件名称_AfterUpdate()

    控件名称.DefaultValue=dLast("字段名","表名")


End Sub


第一步的目地是为了达到窗体一启动就有默认的值显示

第二步的目地是为了在你最后一条记录编辑后获得最新值




Toby 发表于:2013-09-25 10:11:16

感谢:zh60492 (等级:士兵 积分:0 城市:襄阳)

因为我基本不会代码,所以这个问题困扰我1月有余

谢谢你大哥!!!



总记录:15篇  页次:1/1 9 1 :