Office中国论坛/Access中国论坛

标题: [求助]关于INSERT INTO避免重复及点击次数问题 [打印本页]

作者: Y9X    时间: 2009-6-29 22:20
标题: [求助]关于INSERT INTO避免重复及点击次数问题
请高手指导下,我刚学ACCESS,谢谢谢谢。
1.我的本意是希望控件点击一次后不能再点击,目的是避免重复追加记录,但是不会。
2.如果执行INSERT INTO之前先判断,WHERE当前窗体对应的记录中[工作号][rmb结算方]同时不在表“出口发票信息数据库”中时再追加,可是我也不会。
3.我在最后边添加了执行完后就隐藏这个按钮的两句话,可是这样一来,下一条记录想操作,按钮也不见了。
以下是我写代码,可以执行的:
rivate Sub 开票指令点击_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into 出口发票信息数据库(结算方, 工作号, 业务结算金额, 提单号 ) select  rmb结算方,工作号,RMB开票,提单号 from 出口基础信息数据库 where(工作号= forms!出口业务后续管理.[工作号]) "
MsgBox "您正准备向财务发送开票指令和数据,该操作是不可逆转的!", vbOKCancel
Me.rmb开票指令状态.Value = "已发送RMB开票指令和数据"
Me.rmb开票指令状态.SetFocus
Me.开票指令点击.Visible = False
End Sub
作者: jackysu78    时间: 2009-6-30 09:11
1、通过“工作号”(或者其他控件)的是否存在检测,判断是否追加即可,dlookup()
2、先删除,后追加

以上两种方法是本人现在常用的,仅供参考。
作者: todaynew    时间: 2009-6-30 16:49
1.我的本意是希望控件点击一次后不能再点击,目的是避免重复追加记录,但是不会。
答:可以在追加完成后,将各控件值置空。那么就可以通过判断某一个或多个控件值(必输字段)是否为空,来决定追加的相关语句是否执行。
2.如果执行INSERT INTO之前先判断,WHERE当前窗体对应的记录中[工作号][rmb结算方]同时不在表“出口发票信息数据库”中时再追加,可是我也不会。
答:可以用Dlookup函数查找数据库中是否存在相关记录,在此基础上用IF。。。End IF结构完成语句。
3.我在最后边添加了执行完后就隐藏这个按钮的两句话,可是这样一来,下一条记录想操作,按钮也不见了。
答:按1的答案则不必隐藏按钮。
作者: Y9X    时间: 2009-6-30 18:00
谢谢TODAYNEW,答案1能否示例一下,原理听懂了,但还是不会应用
作者: Y9X    时间: 2009-7-4 11:17
todaynew 你好,你第一个答案的思路我用了,可以达到这个效果,你看看代码是不是这个意思:
Private Sub Command5_Click()
If Nz(Me.打印时间) <> 0 Then
MsgBox "发票已经开过了,不能再开第二次" & vbCrLf & "如果作废重开的话,请新增一票" & vbCrLf & "或者让业务重新发送开票数据也可"
End
End If


Dim b As String
b = Nz(Me.发票号)
If b = "" Then
MsgBox ("发票号没有登记,不能执行打印")
End
End If

DoCmd.Close
Dim a As Long
DoCmd.OpenReport " 国际货运代理业专用发票(套打格式)", acViewPreview
a = MsgBox("请放好发票准备打印", vbOKCancel)
If a = 2 Then
DoCmd.CancelEvent
Else
DoCmd.OpenReport "国际货运代理业专用发票(套打格式)", acViewNormal
End If
Dim c As Date
c = Now()
Forms![国际货运代理业专用发票-窗体模版]!打印时间 = c

Forms![国际货运代理业专用发票-窗体模版]!已开票否.Value = "yes"


End Sub




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