设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1234
返回列表 发新帖
楼主: 小何
打印 上一主题 下一主题

[窗体] 主子窗体修改数据后提示问题?

[复制链接]

点击这里给我发消息

31#
发表于 2008-2-20 17:12:59 | 只看该作者
在主窗体改数据后,进入子窗体,肯定会引发主窗体的更新事件,所以就有提示了
在子窗体改数据后,退出子窗体,又会引发子窗体的更新事件,所以就又有提示了
没办法的,ACCESS中绑定窗体就是这样。如果你只想有一次提示,就用非绑定窗体、临时表,要花费数倍的功夫,很多的代码。。。
32#
发表于 2008-2-20 19:40:10 | 只看该作者
:lol :lol
33#
 楼主| 发表于 2008-2-24 20:04:39 | 只看该作者
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim st1 As String
If Me.产品名称.OldValue <> Me.产品名称 Then st1 = "产品名称由 " & Me.产品名称.OldValue & " 修改成 " & Me.产品名称 & Chr(13)
If Me.单位数量.OldValue <> Me.单位数量 Then st1 = st1 & "单位数量由 " & Me.单位数量.OldValue & " 修改成 " & Me.单位数量 & Chr(13)
If Me.单价.OldValue <> Me.单价 Then st1 = st1 & "单价由 " & Me.单价.OldValue & " 修改成 " & Me.单价 & Chr(13)
If Me.库存量.OldValue <> Me.库存量 Then st1 = st1 & "库存量由 " & Me.库存量.OldValue & " 修改成 " & Me.库存量 & Chr(13)
If Me.订购量.OldValue <> Me.订购量 Then st1 = st1 & "订购量由 " & Me.订购量.OldValue & " 修改成 " & Me.订购量 & Chr(13)
If Me.再订购量.OldValue <> Me.再订购量 Then st1 = st1 & "再订购量由 " & Me.再订购量.OldValue & " 修改成 " & Me.再订购量 & Chr(13)
If Me.中止.OldValue <> Me.中止 Then st1 = st1 & "中止由 " & IIf(Me.中止.OldValue, "是", "否") & " 修改成 " & IIf(Me.中止, "否", "是") & Chr(13)
If Len(Trim(st1)) = 0 Then
    Me.Undo
    Exit Sub
End If
If MsgBox("数据已经修改" & Chr(13) & Chr(13) & st1 & Chr(13) & Chr(13) & "是否保存?" & _
    Chr(13) & "单击是保存,单击否取消修改。", vbInformation + vbYesNo, "修改提示") = vbNo Then
    Cancel = True
    Me.Undo
End If
End Sub

=========================================================================
就是如果当该项目没有数据时,输入新数据就不会提示(如当产品名称里有数据时修改后会提示,但是当没有数据里,在输入数据时就不会提示.)
这是为什么啊?

点击这里给我发消息

34#
发表于 2008-2-24 20:40:10 | 只看该作者
当该项目没有数据时,就出现了空值,空值无法和字符串比较,用Nz把文本型字段和数字型字段的空值转换为空字符串即可,注意是否型字段不需要转换:

  1. Private Sub Form_BeforeUpdate(Cancel As Integer)
  2. Dim st1 As String
  3. If Nz(Me.产品名称.OldValue) <> Nz(Me.产品名称) Then st1 = "产品名称由 " & Me.产品名称.OldValue & " 修改成 " & Me.产品名称 & Chr(13)
  4. If Nz(Me.单位数量.OldValue) <> Nz(Me.单位数量) Then st1 = st1 & "单位数量由 " & Me.单位数量.OldValue & " 修改成 " & Me.单位数量 & Chr(13)
  5. If Nz(Me.单价.OldValue) <> Nz(Me.单价) Then st1 = st1 & "单价由 " & Me.单价.OldValue & " 修改成 " & Me.单价 & Chr(13)
  6. If Nz(Me.库存量.OldValue) <> Nz(Me.库存量) Then st1 = st1 & "库存量由 " & Me.库存量.OldValue & " 修改成 " & Me.库存量 & Chr(13)
  7. If Nz(Me.订购量.OldValue) <> Nz(Me.订购量) Then st1 = st1 & "订购量由 " & Me.订购量.OldValue & " 修改成 " & Me.订购量 & Chr(13)
  8. If Nz(Me.再订购量.OldValue) <> Nz(Me.再订购量) Then st1 = st1 & "再订购量由 " & Me.再订购量.OldValue & " 修改成 " & Me.再订购量 & Chr(13)
  9. If Me.中止.OldValue <> Me.中止 Then st1 = st1 & "中止由 " & IIf(Me.中止.OldValue, "是", "否") & " 修改成 " & IIf(Me.中止, "是", "否") & Chr(13)
  10. If Len(Trim(st1)) = 0 Then
  11.     Me.Undo
  12.     Exit Sub
  13. End If
  14. If MsgBox("数据已经修改" & Chr(13) & Chr(13) & st1 & Chr(13) & Chr(13) & "是否保存?" & _
  15.     Chr(13) & "单击是保存,单击否取消修改。", vbInformation + vbYesNo, "修改提示") = vbNo Then
  16.     Cancel = True
  17.     Me.Undo
  18. End If
  19. End Sub
复制代码
35#
 楼主| 发表于 2008-2-24 20:47:33 | 只看该作者
谢谢你,T小宝
36#
发表于 2008-6-24 12:55:22 | 只看该作者
这个问题我也想解决,前来学习罗
37#
发表于 2008-7-4 13:54:34 | 只看该作者
下载学习
38#
发表于 2008-12-31 14:44:42 | 只看该作者
DDDDDDDDDDDDDDDDD

评分

参与人数 1经验 -10 收起 理由
Henry D. Sy -10 恶意灌水

查看全部评分

39#
发表于 2009-1-20 19:20:19 | 只看该作者
值得学习下~~
40#
 楼主| 发表于 2024-11-11 20:59:13 | 只看该作者
313
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:12 , Processed in 0.260648 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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