设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3106|回复: 14
打印 上一主题 下一主题

[窗体] 请教:为何需要点击两次才能追加成功?

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-30 23:26:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如下为商品资料窗体的"保存并新增"事件代码,请教为何需要点击两次才能成功追加(保存)?谢谢!
  1. Dim strsql As String

  2. strsql = "delete * from 商品资料_temp"

  3. DoCmd.SetWarnings False

  4. If IsNull(Me.货号) = True Then
  5. MsgBox ("货号不能为空!"), vbOKOnly + vbExclamation, "错误提示"
  6. End If
  7. If IsNull(Me.商品名称) = True Then
  8. MsgBox ("商品名称不能为空!"), vbOKOnly + vbExclamation, "错误提示"
  9. End If
  10. If IsNull(Me.商品分类) = True Then
  11. MsgBox ("商品分类不能为空!"), vbOKOnly + vbExclamation, "错误提示"
  12. End If
  13. If IsNull(Me.单位) = True Then
  14. MsgBox ("单位不能为空!"), vbOKOnly + vbExclamation, "错误提示"
  15. End If

  16. If IsNull(DLookup("货号", "商品资料", "货号 = ""& me.货号 &""")) = True Then
  17. DoCmd.OpenQuery ("追加商品资料temp")     '从临时表追加到正式表
  18. DoCmd.RunSQL strsql       ’删除临时表资料
  19. DoCmd.GoToRecord , , acNewRec
  20. MsgBox ("新的商品资料保存成功"), vbOKOnly + vbInformation, "保存成功"
  21. Else
  22. MsgBox ("新编货号已经存在,请重新编写!"), vbOKOnly + vbExclamation, "错误提示"
  23. Me.货号.SetFocus
  24. End If
  25. DoCmd.SetWarnings True
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-8-31 10:55:15 | 只看该作者
光这样看  不方便   你能把提示信息发上来么
3#
发表于 2011-8-31 19:41:32 | 只看该作者
语法没多大问题。不过,前面的If语句,7-18行可以用Or语句一次性解决,弹窗可以设置为“带*号数据为空,请填写。”,此外,GotoRecord之前,可以考虑先刷新下查询(Requery)。
4#
 楼主| 发表于 2011-9-1 01:01:29 | 只看该作者
谢谢!
5#
 楼主| 发表于 2011-9-2 00:25:08 | 只看该作者
版主,你好!
根据你的建议简化了代码,但还是没有解决问题,具体表现为:
1、第一次点击执行代码后,窗体显示为新的记录,但回到正式表中并没有将该记录追加进去;
2、重新点击新增商品资料(数据源为临时表),窗体仍然显示的是前面没有追加的数据,即以上代码没有执行追加查询,也没有执行删除语句,当再次点击“保存并新增”后,数据则保存成功。
以上还请版主指点迷津,再次感谢!盼!
6#
 楼主| 发表于 2011-9-2 08:40:00 | 只看该作者
版主,我的回复看到了吗?谢谢!
怎么现在需要审核回复呀?
7#
 楼主| 发表于 2011-9-2 08:48:04 | 只看该作者
根据版主的建议优化了代码,谢谢!但仍然不能解决需要两次执行代码的问题,烦请指点迷津。
目前问题主要表现在:
1、第一次执行该代码后,没有成功追加,经查数据仍然保存在临时表,亦即删除代码也无效;
2、第二次打开新增窗口,即显示没有追回的数据(按设计应该打开新的记录),再执行以上代码后,数据方追加成功,临时表数据删除也成功。
以上盼复!
8#
发表于 2011-9-2 11:21:41 | 只看该作者
Dim strsql As String
Dim B as Boolean
B=IsNull(Me.货号) = False
B=B and IsNull(Me.商品名称) = False
B=B and IsNull(Me.商品分类) = False
B=B and IsNull(Me.单位) = False
If B=True Then
    If IsNull(DLookup("货号", "商品资料", "货号 = ""& me.货号 &""")) = True Then
        strsql="追加商品资料temp"
        currentdb.execute strsql
        strsql = "delete * from 商品资料_temp"
        currentdb.execute strsql
        DoCmd.GoToRecord , , acNewRec
        MsgBox "新的商品资料保存成功!"
    else
        MsgBox "新编货号已经存在,请重新编写!"
        Me.货号.SetFocus
    end if
else
    MsgBox "货号、品名、分类、单位均不能为空!"
End If
9#
 楼主| 发表于 2011-9-3 21:07:10 | 只看该作者
感谢二位版主!目前该问题本人仍没有得到解决,现传上附件,烦请帮忙指点,谢谢!
您可以试着点一下“新增”,简单录入资料后点击“保存并新增”或“保存并关闭”后,在“商品资料”列表中仍然不能显示,即保存不成功,重新点击“新增”或打开临时表和正式表对比查看亦可看出问题。盼复!

本帖子中包含更多资源

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

x
10#
发表于 2011-9-4 03:34:59 | 只看该作者
本帖最后由 roych 于 2011-9-4 03:47 编辑

老汉的单引号部分写错了:
    If IsNull(DLookup("货号", "商品资料", "货号 = '"& me.货号 &"'")) = True Then
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 21:44 , Processed in 0.105677 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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