CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

关于"保存"命令条件判断?!!!

楼主jackchina(逍遥逸)2005-04-03 23:57:33 在 VB / 基础类 提问

各位大师,在一个窗体中,我现在要判断:  
  如果"保存"命令是由"新增"命令激活的,则执行"自动编号"的代码,将其写在"客户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

相关问题

  • 关于"保存"命令条件判断?!!!
  • 查询条件的判断
  • 条件判断问题
  • PROC中的条件判断
  • 条件判断怎么写
  • 用shell变量保存命令输出。
  • 求助(关于条件判断)
  • 问一个IF条件判断的问题.
  • Window Installer 中的条件判断问题
  • 判断闰年的条件是什么?

关键词

  • 代码
  • 修改
  • me
  • 命令
  • sorderid
  • 保存
  • strmax
  • 新增
  • 判断
  • then

得分解答快速导航

  • 帖主:jackchina
  • rainstormmaster
  • fly70
  • wuyazhe
  • penguinMII
  • jlum99

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo