关于"保存"命令条件判断?!!!
各位大师,在一个窗体中,我现在要判断:
如果"保存"命令是由"新增"命令激活的,则执行"自动编号"的代码,将其写在"客户ID"中并保存;
如果"保存"命令是由"修改"命令激活的,则"客户ID"记录锁定,为原记录,进行保存;
如何写这段代码!!!或者还有其他的判断方式?
我的代码如下:
Private Sub cmdSave_Click()
Me.Caption = "订单-新增"
Call StateR
'If Me.NewRecord = False Then
'我试着用这句来判断,但不成功
'Me.SOrderID.Locked = True
'End If
'以下为自动编号的代码,不知是否有问题
Dim strMax As String
If IsNull(DLookup("[sorderid]", "tblsorder")) Then
strMax = 0
Else
strMax = DMax("[SOrderID]", "tblsorder", "Right([SOrderID],3)")
End If
Me![SOrderID] = "CG-" & Format(Right(strMax, 3) + 1, "000")
'这句也不成功
'If Me.NewRecord = False Then
'Me.SOrderID.Locked = True
'End If
End Sub
我将订单窗口设为用命令控制,一共有"新增"/"修改"/"取消"/"删除"/"保存",还有一个"退出"命令,其中:新增=cmdAdd / "修改"=cmdEdit /"取消"=cmdCancel /"删除"=cmdDelete/ 保存"=cmdSave/"退出"=cmdExit,只有"新增"各"修改"命令才会调出"保存",能否帮我改改以上代码,谢谢!!
问题点数:100、回复次数:20Top
1 楼jackchina(逍遥逸)回复于 2005-04-04 00:06:36 得分 0
我以上代码在按"新增"命令时,填上一些数据按"保存"命令后,字段"SOrderID"编号会自动增加;但如果在按"修改"命令,在原有数据上修改一些数据,按"保存"命令后,则字段"SOrderID"编号也会递增,如原订单的编号为"CG-009",则会将其改为"CG-056"(如我最大编号是"CG-055"的话),而在数据库中编号为"CG-009"则会成为空码.Top
2 楼rainstormmaster(暴风雨 v2.0)回复于 2005-04-04 00:38:04 得分 40
定义一个窗体级(模块级)变量,然后在相应的程序段内给它敷不同的数值,需要时根据这个变量的值进行判断即可,大致这样:
dim i as long
Private Sub cmdSave_Click()
if i=i then
'执行"自动编号"的代码,将其写在"客户ID"中并保存
ElseIf i = 2 Then
'"客户ID"记录锁定,为原记录,进行保存
End If
End Sub
Private Sub cmdadd_Click()
i=1
'下面写你的代码
End Sub
Private Sub cmdedit_Click()
i=2
'下面写你的代码
End Sub
希望我没理解错你的问题,你的术语令我感到很迷惑Top
3 楼fly70(午后阳光)回复于 2005-04-04 00:44:31 得分 10
通过判断按钮的caption值,如果caption="新增"则执行自动编号 如果caption为修改则执行updateTop
4 楼wuyazhe(wyz&xyl)回复于 2005-04-04 08:52:24 得分 0
对,定义个全局变量,
Private blNew As Boolen
Private Sub NewButton_Click(sender,e)
blNew = True
End Sub
Private Sub SaveButton_Click(sender,e)
If blNew then
'执行"自动编号"的代码,将其写在"客户ID"中并保存
Else
'"客户ID"记录锁定,为原记录,进行保存
End if
End SubTop
5 楼wuyazhe(wyz&xyl)回复于 2005-04-04 08:54:42 得分 30
还需要一个,少了。save里
Private Sub SaveButton_Click(sender,e)
If blNew then
'执行"自动编号"的代码,将其写在"客户ID"中并保存
Else
'"客户ID"记录锁定,为原记录,进行保存
End if
blNew = False '还原以备下次判断
End Sub
Private Form_Load()
blNew = False '初始化,避免初始化前就是True,虽然vb默认是False,但是有个初始化习惯好
End Sub
Top
6 楼jlum99(闲人)回复于 2005-04-04 08:56:18 得分 0
楼主想优化控制语句流程Top
7 楼penguinMII(企鹅)回复于 2005-04-04 09:34:26 得分 10
把保存作成一个过程。
sub SaveData(SaveType as integer)
select case savetype
case 0 '新增
case 1 '修改
end select
…………
enc sub
然后用SAVETYPE参数来确定到底是新增还是修改。Top
8 楼kingweaver(旅者)回复于 2005-04-04 09:55:40 得分 0
我同意通过全部变量来控制!Top
9 楼jackchina(逍遥逸)回复于 2005-04-04 10:42:04 得分 0
请问全局变量是什么,怎样设置?如果很复杂,请以我这个具体实例为例
各位不好意思,昨晚实在是有事,现在我在线等候!!Top
10 楼jlum99(闲人)回复于 2005-04-04 10:50:09 得分 0
全局变量,定义在窗体过程外的就是啦Top
11 楼jackchina(逍遥逸)回复于 2005-04-04 11:04:04 得分 0
怎样将它定义在"窗体过程外"
比如楼上"rainstormmaster"他帮我写的代码里面"dim i as long"是不是一个全局变量,他应该写在哪里呢Top
12 楼jlum99(闲人)回复于 2005-04-04 11:08:42 得分 0
对,那个dim i as long 就是Top
13 楼jackchina(逍遥逸)回复于 2005-04-04 11:21:57 得分 0
但是怎样将它定义在"窗体过程外"
我怎样将它写在哪里啊Top
14 楼jackchina(逍遥逸)回复于 2005-04-04 11:23:01 得分 0
不好意思,我是一个大菜鸟,代码还没入门Top
15 楼wuyazhe(wyz&xyl)回复于 2005-04-04 11:29:53 得分 0
写到代码部分的最上面一行Top
16 楼jlum99(闲人)回复于 2005-04-04 11:33:01 得分 10
一个作用域的问题
===========================
全局变量与局部变量
全局变量
用Public声明的变量就是全局变量,程序中的任何窗体和模块都能访问到它。声明全局变量要小心,任何模块或窗体中对它的修改都会影响其它模块或窗体中该变量的值。
局部变量
在模块和窗体中用Dim或Static等声明的变量只在本模块或窗体中起作用,这样的变量叫局部变量。
如杲全局变量和局部变量同名,则在局部变量所在模块或窗体内部,该变量为局部变量。离开该窗体或模块,该变量仍为全局变量。
Top
17 楼hosin(极品蓝山)回复于 2005-04-04 11:58:54 得分 0
全局变量要注意初始化Top
18 楼jackchina(逍遥逸)回复于 2005-04-04 12:34:10 得分 0
各位大师,谢谢指导,我已按照楼上"rainstormmaster"思路解决了问题,但其全局变量"dim i as long"要不要初始化,怎样初始化呢?!
急!Top
19 楼jackchina(逍遥逸)回复于 2005-04-04 12:36:37 得分 0
还有一小问题:如果在"新增"命令后,不填任何数据,操作"放弃"命令,则会将你的数据删除,从你的第一条删起,现将其代码摘录如下,高手请来帮我改改!一改好就送分
哇!一身冷汗,如果做进程序,真要命!!!!
Private Sub comCancel_Click()
'放弃
Me.Undo
If Me.Recordset.EOF And Me.Recordset.BOF Then
Call comExit_Click
Exit Sub
Else
If Me.Caption = "出库-新增" Then
Me.Recordset.Delete
If Me.Recordset.EOF And Me.Recordset.BOF Then
Call comExit_Click
Me.Caption = "出库"
Exit Sub
End If
Me.Recordset.MoveNext
If Me.Recordset.EOF Then
Me.Recordset.MovePrevious
End If
Else
If IsNull(Me.Recordset.Fields(0)) Then
Me.Recordset.MoveNext
Me.Recordset.MovePrevious
End If
End If
End If
Call StateR
Me.Caption = "出库"
End Sub
Top
20 楼jackchina(逍遥逸)回复于 2005-04-04 14:06:31 得分 0
能帮我将此贴结掉吗?
高手快来啊!!!Top




