设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12345下一页
返回列表 发新帖
查看: 6580|回复: 42
打印 上一主题 下一主题

[模块/函数] [分享]在指定位置插入记录

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-6 12:40:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
游客,如果您要查看本帖隐藏内容请回复

accesss不是Excel,所有记录都是插入到最后面然后根据关键字排序。如果需要自定义记录顺序,可以增加一个排序字段(最好不要调整关键字字段),通过手工调整排序字段序号,也可以通过插入记录获取数据表中当前选定记录的排序字段序号用程序进行处理,并以此字段排序,把插入记录显示在适当的位子。

下面一段代码放在窗体的成为当前事件中,可实现数据表在当前记录前插入新记录。条件是要有“序号”字段并以此字段排序:

Private Sub Form_Current()
    If Me.序号 <> 0 Then
        If Me.CurrentRecord <> 1 Then Me.Tag = Me.序号
    Else
        DoCmd.SetWarnings False
        DoCmd.RunSQL "UPDATE tem SET tem.序号 = [序号]+1 WHERE tem.序号>" & (Me.Tag - 1)
        DoCmd.RunSQL "INSERT INTO tem(序号) VALUES (" & (Me.Tag) & ")"
        Me.Requery
        Me.RecordsetClone.FindFirst "序号=" & (Me.Tag)
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2经验 +10 收起 理由
wang1950317 + 5
5988143 + 5 精品文章

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-6-6 14:13:59 | 只看该作者
学习[:50]

点击这里给我发消息

3#
发表于 2008-6-6 14:21:15 | 只看该作者
Trynew好久未出山了, 别来无恙...
一上来就出精品了
我刚好最近也在为这个烦恼, 也是使用近似的方法来实现, 客户就是拿excel 来说Access, 没辙
4#
 楼主| 发表于 2008-6-6 16:59:44 | 只看该作者
站长好!近来确实是有好多不顺心的事,但汶川大地震把我震醒了,特别是“可乐男孩”那豁达及乐观的表现,让我觉得我这点鸟事简直就自寻烦恼:]
如果我的帖子能够让几个网友得到启发,就是我最大的欣慰。
再次向站长、朱总及那些在此坚持的老朋友致敬[:11] ,是你们的坚持,才让我们有这么好的交流平台!

点击这里给我发消息

5#
发表于 2008-6-6 17:04:28 | 只看该作者
受教受教[:24]
6#
发表于 2008-6-6 20:41:26 | 只看该作者
要用菜单上的插入新记录[:31]
7#
发表于 2008-6-6 21:31:45 | 只看该作者
前辈作品!学习了![:50]
8#
发表于 2008-6-7 01:01:32 | 只看该作者
[:24]

点击这里给我发消息

9#
发表于 2008-6-7 01:50:59 | 只看该作者
原帖由 Trynew 于 2008-6-6 16:59 发表
站长好!近来确实是有好多不顺心的事,但汶川大地震把我震醒了,特别是“可乐男孩”那豁达及乐观的表现,让我觉得我这点鸟事简直就自寻烦恼:]
如果我的帖子能够让几个网友得到启发,就是我最大的欣慰。
再次向站长 ...

希望不顺心的事尽快过去. trynew兄的实例 是精品中的精品, 多年来 都是人见人爱.
许久未见上来, 但看了新作品,宝刀更锋.
10#
 楼主| 发表于 2008-6-7 09:22:10 | 只看该作者
问:用ACCESS创建表时数据类型中有自动编号这一选项,但是是无法编辑的。我现在需要制作一个窗体在插入记录时自动为记录添加序号,并且能够实现通过指定序号的方法将后加的记录插入到先前已有的记录之间。
答:把一楼程序中的3处Me.Tag都加上1,改为以下程序即可。
Private Sub Form_Current()
    If Me.序号 <> 0 Then
        If Me.CurrentRecord <> 1 Then Me.Tag = Me.序号
    Else
        DoCmd.SetWarnings False
        DoCmd.RunSQL "UPDATE tem SET tem.序号 = [序号]+1 WHERE tem.序号>" & (Me.Tag )
        DoCmd.RunSQL "INSERT INTO tem(序号) VALUES (" & (Me.Tag+1) & ")"
        Me.Requery
        Me.RecordsetClone.FindFirst "序号=" & (Me.Tag+1)
        Me.Bookmark = Me.RecordsetClone.Bookmark
    End If
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-18 21:47 , Processed in 0.160603 second(s), 39 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表