设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 4254|回复: 26
打印 上一主题 下一主题

[窗体] 求助,想了好久了,请大侠帮帮忙

[复制链接]
跳转到指定楼层
1#
发表于 2009-1-10 11:51:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在入库单主窗口中,如何使入库明细窗口当输录完一条记录后,自动增加一行,然后输完一条后,又会自动增加一行,该如何实现?
另外,把入库明细窗口所输的全部记录,按保存后,保存到入库明细表中又该如何实现?

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-1-10 11:53:21 | 只看该作者
应该不难吧?帮你看看.

你的子窗体为何不与明细表绑定呢?似乎绑定了比较好吧,免得还要加保存记录按钮.



Private Sub Command31_Click()
  Dim sql1, sql2 As String
  DoCmd.SetWarnings no
  If Not (IsNull(Me.单据号)) Then
     sql1 = "INSERT INTO 入库单 ( 单据号, 入库日期, 拨货单据号, 制单人, 审核人, 状态, 备注 ) "
     sql1 = sql1 + "SELECT Forms!入库单!单据号 AS 单据号, Forms!入库单!入库日期 AS 入库日期, Forms!入库单!拨货单据号 AS 拨货单据号, Forms!入库单!制单人 AS 制单人, Forms!入库单!审核人 AS 审核人, Forms!入库单!状态 AS 状态, Forms!入库单!备注 AS 备注;"
     DoCmd.RunSQL sql1
     sql2 = "INSERT INTO 入库明细 ( 单据号, 制单人, 审核人, 状态, 备注 ) "
     sql2 = sql2 + "SELECT Forms!入库单!单据号 AS 单据号, Forms!入库单!制单人 AS 制单人, Forms!入库单!审核人 AS 审核人, Forms!入库单!状态 AS 状态, Forms!入库单!备注 AS 备注;"
     DoCmd.RunSQL sql2
     Me.入库明细.Form.Requery
  End If
End Sub

[ 本帖最后由 todaynew 于 2009-1-10 14:24 编辑 ]

本帖子中包含更多资源

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

x
3#
 楼主| 发表于 2009-1-10 14:47:27 | 只看该作者

谢谢.我先学习一下.

绑定,是不是会好控制些呀
4#
 楼主| 发表于 2009-1-10 14:57:45 | 只看该作者
还是不行呢,在入库明细子窗口,输录第二行时,就出现如下提示,
由于数据表"入库单"需要一个相关记录,不能添加或修改记录
5#
发表于 2009-1-10 15:04:11 | 只看该作者
原帖由 bihorse 于 2009-1-10 14:57 发表
还是不行呢,在入库明细子窗口,输录第二行时,就出现如下提示,
由于数据表"入库单"需要一个相关记录,不能添加或修改记录


这个提示是对的,原因是必须先将主窗体的参数写入入库单表中,然后才能将其写入入库单明细中。否则入库单没有记录,入库单明细是不能增加的。原因就在于入库单与入库单明细为一对多关系。

你可以注意看我上面回复中,sql1和sql2写入表的顺序。

第二行也是要通过添加按钮新增后再补录其他数据,直接在子窗体增加会出错。

[ 本帖最后由 todaynew 于 2009-1-10 15:08 编辑 ]
6#
 楼主| 发表于 2009-1-10 15:18:24 | 只看该作者
这样的话,那入库明细子窗体,不能连续输录了呀
我想的功能是,主窗口输录后,然后子窗口可以连续增加行输录,等主窗口与子窗口都录好后,然后按保存,直接将主窗口的数据写入,入库单表中,子窗口的数据写入,入库明细有中
7#
发表于 2009-1-10 15:23:59 | 只看该作者
可以用代码控制主窗体输入完整

Private Sub Form_Load()
    Me.数量.Locked = True
    Me.金额.Locked = True
    Me.金额合计.Locked = True
End Sub

Private Sub 入库明细_Enter()
    Dim ctl As Control
    For Each ctl In Me.Controls
        If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then
            If ctl.Locked = False Then
                If IsNull(ctl) Then
                    MsgBox "请输入 " & ctl.Name
                    ctl.SetFocus
                    Exit Sub
                End If
            End If
        End If
    Next
End Sub
8#
发表于 2009-1-10 15:24:13 | 只看该作者
原帖由 bihorse 于 2009-1-10 15:18 发表
这样的话,那入库明细子窗体,不能连续输录了呀
我想的功能是,主窗口输录后,然后子窗口可以连续增加行输录,等主窗口与子窗口都录好后,然后按保存,直接将主窗口的数据写入,入库单表中,子窗口的数据写入,入库明细有中


可以连续录入。

实际上你的主表与子表设计上不是太合理。比如主表上已经有的制单人、审核人、备注等字段,子表中不应该再有(确实需要可以两表查询即可)。这样的话,子表和主表重复的字段就是一个编号而已(一对多关系)。如此,也就不需要复杂的写代码了,直接用子窗体链接主窗体编号文本框。主表相关字段新增保存后,可以连续的在子表中录入若干行数据。

问题出在表的设计上,和窗体设计、按钮功能设计无太大关系,呵呵。

不知道这种理解是否正确,供参考。

[ 本帖最后由 todaynew 于 2009-1-10 15:28 编辑 ]
9#
 楼主| 发表于 2009-1-10 15:27:52 | 只看该作者
版主,能否帮我那附件修改一下,然后上传.因为本人是刚学习access的,还不是很明白.谢谢
10#
发表于 2009-1-10 15:31:01 | 只看该作者
原帖由 bihorse 于 2009-1-10 15:27 发表
版主,能否帮我那附件修改一下,然后上传.因为本人是刚学习access的,还不是很明白.谢谢

为什么不用绑定的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 03:22 , Processed in 0.155854 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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