Office中国论坛/Access中国论坛

标题: 如何实现子窗体自动编制序号 [打印本页]

作者: frankyu468    时间: 2004-1-9 00:20
标题: 如何实现子窗体自动编制序号
请教各位,我有一父子窗体,如何实现子窗体中的序号每次自动从1开始编号(即每当父窗体的插入新记录时,子窗体中的记录序号自动从1开始连续编号)

如 主窗体记录 1
     子窗体 记录1
         记录2
  主窗体记录 2
     子窗体 记录1
         记录2

急,请哪位大虾相助。

作者: nmysc    时间: 2004-2-24 22:58
标题: 太急了
这个我也想知道,为什么没人来解答,还是以前有过相应的贴子,网上急等,请斑主帮忙
作者: secowu    时间: 2005-11-18 17:15
呵呵,偶也想知道
作者: 一点通    时间: 2005-11-18 18:11
刚才同别人做的例子,同样适用于你的要求http://www.office-cn.net/forum.php?mod=viewthread&tid=17239&replyID=168486&skin=1
作者: secowu    时间: 2005-11-18 19:14
那个If IsNull(DLookup("序号", "报价明细", "销售单ID=报价单ID")) Then


    Me.序号 = 1


Else


    If Nz(序号) = "" Then


        Me.序号 = DMax("序号", "报价明细", "销售单ID=报价单ID") + 1


    End If


End If


End Sub把我搞晕了,那不是,我的表里面还得增加个自动编号字段?偶原先,因为要追加查询,所以,不敢用MS的自动编号。有没有别的方法可以实现?
作者: 一点通    时间: 2005-11-18 19:26
手工输入的单号同样适合的,自己改一下就行了,这里用的是数字格式,如果文件格式参考一下别的查询例子
作者: secowu    时间: 2005-11-18 19:26
呵呵,因为,偶没有用上自动编号的字段主窗体用的表是"1订单主体",此表中没有排单序号的字段包含有连接表:2客户下单产品(此表中有排单序号这个字段) 的关键字段:工作单号、彩印单号输入产品的用的是选项卡,因为,产品字段太多。那么,在这样的情况下,如何实现对应的“排单序号”的自动增加'Private Sub 产品名称_BeforeUpdate(Cancel As Integer)


'If IsNull(DLookup("排单序号", "2客户下单产品", " 彩印单号=me.彩印单号")) Then


   ' Me.排单序号 = 1


'Else


    'If Nz(排单序号) = "" Then


       ' Me.排单序号 = DMax("排单序号", "2客户下单产", " 彩印单号=me.彩印单号") + 1


    'End If


'End If


'End Sub
作者: 一点通    时间: 2005-11-18 19:36
如果彩印单号是数字格式,可以这样改'Private Sub 产品名称_BeforeUpdate(Cancel As Integer)


'If IsNull(DLookup("排单序号", "2客户下单产品", " 彩印单号=me.彩印单号")) Then


   ' Me.排单序号 = 1


'Else


    'If Nz(排单序号) = "" Then


       ' Me.排单序号 = DMax("排单序号", "2客户下单产", " 彩印单号=me.彩印单号") + 1


    'End If


'End If


'End Sub删除红色的代码如果是文本格式:" 彩印单号=me.彩印单号"更换为:"[彩印单号]=" & "'" & 彩印单号 & "'"
作者: secowu    时间: 2005-11-18 20:40
呵呵,谢谢。试了下,果然可以了。非常感谢
作者: secowu    时间: 2005-11-19 03:13
现在有另外一个问题:下面的代码已经能够实现自动序号了,可是,还有一个要求:如果当用户输入的是A或a这样时,第二个就让它自动跳成B,依此,该如何呢?
Private Sub 产品名称_AfterUpdate()


If IsNull(DLookup("排单序号", "2客户下单产品", "[彩印单号]=" & "'" & 彩印单号 & "'")) Then


   Me.排单序号 = 1


Else


    If Nz(排单序号) = "" Then


       Me.排单序号 = DMax("排单序号", "2客户下单产品", "[彩印单号]=" & "'" & 彩印单号 & "'") + 1


    End If


End IfEnd Sub

作者: 一点通    时间: 2005-11-19 05:43
以下是引用secowu在2005-11-18 19:13:00的发言:





现在有另外一个问题:


下面的代码已经能够实现自动序号了,


可是,还有一个要求:如果当用户输入的是A或a这样时,


第二个就让它自动跳成B,依此,该如何呢?


我看不明,有谁能看得明的帮我解释一下
作者: secowu    时间: 2005-11-20 00:47
以下是引用一点通在2005-11-18 21:43:00的发言:








我看不明,有谁能看得明的帮我解释一下





我的意思是:


这个序号的字段类型为文本:


如果用户在序号里输入了1,则执行1.2.3.这样自动增加


如果用户输入的是A、B或a、b这样的序列时,


就不要进行自动增加序列号 或是


当用户输入A时,就进行A、B、C、D、E、F这样的系列


不知行不行
作者: 一点通    时间: 2005-11-20 01:10
我没有试过用这种方法,但我相信还是可以的,写一段函数,根据子窗体的行数对应编译成ABCD.....,由于要写的函数太费时,你自己试做下吧
作者: secowu    时间: 2005-11-21 21:05
呵呵,已经不用那个ABCDE系列了。


让用户自己填写,只作了一个警告提示


检测到不是123这样的系列时,且又是空时,就让其自己解决了。




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