VB_Dim语句的功能及用法

语法

  Dim [WithEvents] varname[([subscripts])] [As [New] type] [[WithEvents] varname[([subscripts])] [As [New] type]] . . .

  Dim 语句的语法包含下面部分:

 

部分 描述
WithEvents可选的。关键字,说明 varname 是一个用来响应由 ActiveX 对象触发的事件的对象变量。只有在类模块中才是合法的。使用 WithEvents,可以声明任意个所需的单变量,但不能使用 WithEvents 创建数组。New 和 WithEvents 不能一起使用。
varname必需的。变量的名称;遵循标准的变量命名约定。
subscripts可选的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:
 [lower To] upper [[lower To] upper] . . .
 如果不显式指定 lower,则数组的下界由 Option Base 语句控制。如果没有使用 Option Base 语句,则下界为 0。
New可选的。可隐式地创建对象的关键字。如果使用 New 来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用 Set 语句来给该对象引用赋值。New 关键字不能声明任何内部数据类型的变量,以及从属对象的实例,也不能与 WithEvents 一起使用。
type可选的。变量的数据类型;可以是 Byte、布尔、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length (对定长的字符串)、Object、Variant、用户定义类型、或对象类型。所声明的每个变量都要一个单独的 As type 子句。

  说明

  在模块级别中用 Dim 声明的变量,对该模块中的所有过程都是可用的。在过程级别中声明的变量,只在过程内是可用的。

  可以使用 Dim 语句在模块级或过程级中声明变量的数据类型。例如,下面的语句声明了 Integer 类型的变量。

  Dim NumberOfEmployees As Integer

  也可以使用 Dim 语句来声明变量的对象类型。下面的语句为工作表的新建实例声明了一个变量。

  Dim X As New Worksheet

  如果定义对象变量时没有使用 New 关键字,则在使用该变量之前,必须使用 Set 语句将该引用对象的变量赋值为一个已有对象。在该变量被赋值之前,所声明的对象变量有一个特定值 Nothing,这个值表示该变量没有指向任一个对象实例。

  也可以使用带空圆括号的 Dim 语句来定义动态数组。在定义动态数组后,可以在过程内使用 ReDim 语句来定义该数组的维数和元素。如果试图在 PrivatePublic 或 Dim 语句中重新定义一个已显式定义了大小的数组的维数时,就会发生错误。

  如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型。

  当初始化变量时,数值变量被初始化为 0,变长的字符串被初始化为一个零长度的字符串 (""),而定长的字符串则用 0 填充。Variant 变量被初始化为 Empty。用户自定义类型的变量的每个元素作为各自独立的变量进行初始化。

  注意 当在过程中使用 Dim 语句时,通常将 Dim 语句放在过程的开始处。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
存取对象变量库结构作为一个功能较完备的Windows软件开发平台,Visual Basic专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(Data Access Object Variable),直接调用ODBC 2.0 API接口函数等三种访问数据库的方法。对其标准内置的Ms Access数据库,它可以提供不弱于专业数据库软件的支持,可以进行完整的数据库维护、操作及其事务处理。在VB,将非Access数据库称为外来数据库。对于FoxPro、dBASE、Paradox等外来数据库。虽然借助VB的Data Manager 能够对这些数据库进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态并不能从底层真正实现这些功能。本文从使用数据库存取对象变量的方法出发,实现了非Access格式数据库(以FoxPro数据库为例)的建新库、拷贝数据库结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据库支持不足的可行性 。 一 、 VB数据库的体系结构具体的VB的数据库结构。 VB数据库的核心结构是所谓的MicroSoft JET数据库引擎,JET引擎的作用就像是一块"面 板",在其上可以插入多种ISAM(Indexed Sequential Access Method,即索引顺序存取方 法) 数据驱动程序。JET引擎为Access格式数据库提供了直接的内部(build-in)支持,这就是VB对Access数据库具有丰富支持的真正原因。 VB专业版提供了FoxPro、dBASE(或 Xbase)、Paradox、Btrieve等数据库的ISAM驱动程序,这就使得VB能支持这些数据库格 式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据库格式(前提是只需获得这些数据库的ISAM驱动接口程序)。 由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。实际上,在VB从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。 从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及Ms Access数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据库格式及类型是相互独立的。即对FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非Access数据库的访问提供了最重要的方法。   二 、使用非Access数据库时的参数设置及配置文件的参数读取如果在VB的程序使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在INI文件可以对不同类型的数据库进行设置。如果找不到这个INI文件, 将会导致不能访问数据库。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,VB的程序会在Windows子目录去找和应用程序同名的INI文件。可以使用VB的SetDataAccessOptions语句来设置INI文件。 SetDataAccessOptions语句用法如下:SetDataAccessOptions 1 ,IniFileName其IniFileName参数指明的是INI文件的带路径的文件名。值得注意的是,当应用程序找不到这个INI文件时,或在调用 OpenDataBase函数时对其Connect参数值没有设定为VB规定的标准值,如对FoxPro 2.5格式设定为了" FoxPro;"(应为" FoxPro 2.5; "),或者没有安装相应的ISAM驱动程序,则此时VB会显示一条错误信息" Not Found Installable ISAM "。通常,INI文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序自己生成。 通常这种 INI文件有" [Options]"、"[ISAM]"、" [Installed ISAMs]"、"[FoxPro ISAM]"、"[dBASE ISAM] " 、" [Paradox ISAM] "等设置段,对于一个完整的应用程序则还应有一个属于应用 程序自己的设置段如" [MyDB]”。可在其设置DataType、Server、DataBase、 OpenOnStartup、DisplaySQL、QueryTimeOut等较为重要的数据库参数,并以此限定应用程序一般的运行环境。 Windows API接口函数在Kernel.exe动态链接库提供了一个OSWritePrivateProfileString函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。 在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。 设此应用程序的配置文件为MyDB.INI,则具体过程如下:Funtion GetINIString$( Byval Fname$ ,Byval szItem$ ,Byval szDeFault$ ) ' 此自定义子函数实现INI 文件内设置段内参数的读取Dim Tmp As String,x As Integer Tmp = String( 2048,32 ) x = OSGetPrivateProfileString(Fname$,szItem$ , szDefault$,Tmp,Len(Tmp) ," MyDB.INI " ) GetINIString = Mid$( Tmp,1,x ) EndFunction以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内Declare Function OSGetPrivateProfileString% Lib "Kernel" Alias "GetPrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$) Declare Function OSWritePrivateProfileString% Lib "Kernel" Alias "WritePrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$) Declare Function OSGetWindowsDirectory% Lib "Kernel" Alias "GetWindowsDirectory" (ByVal a$, ByVal b%) Sub Form1_Load( ) Dim st As String Dim x As Integer Dim tmp As String tmp = String$( 255, 32 ) ' INI文件内为各种数据库格式指明已安装的相应ISAM驱动程序x = OSWritePrivateProfileString(" Installable ISAMS", "Paradox 3.X", "PDX110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE III", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE IV", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.0", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.5", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "Btrieve", "BTRV110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "dBase ISAM", "Deleted", "On", "MyDB.INI" ) ' 指明 INI文件的位置x = OSGetWindowsDirectory( tmp, 255 ) st = Mid$( tmp, 1, x ) SetDataAccessOption 1, st + "\mydb.ini" '获得INI文件一些参数 gwMaxGridRows = Val(GetINIString( " MyDB.INI " ,"MaxRows", "250" )) glQueryTimeout = Val(GetINIString( " MyDB.INI " ,"QueryTimeout", "5" )) glLoginTimeout = Val(GetINIString( " MyDB.INI " ,"LoginTimeout", "20" )) End Sub   三 、数据存取对象变量对外来数据库编程的方法及其实例在VB专业版数据库编程的三种方法,第二种-使用数据库存取对象变量(DAO)的方法最具有功能强大、灵活的特点。 它能够在程序存取ODBC 2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot 及Table记录集合对象;可以存储过程和查询动作;可以存取数据库集合对象,例如 TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对数据库处理的大多数情况都非常适用。 由于VB的记录集对象与所使用的数据库格式及类型是相互独立的,所以在非Access数据库也可以使用数据库存取对象变量的方法。因而 对FoxPro等外来数据库而言,使用数据库存取对象变量的方法同样也是一种最佳的选择。 有一点需要注意的是,VB的标准版仅能使用数据控件(Data Control)对数据库的记录进行访问,主要的数据库存取对象也仅有Database、Dynaset对象可通过数据控件的属 性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的标准版生成,所以使用数据存取对象变量的方法只能用VB 3.0以上的专业版。 (一)、非Access数据库的新建及库结构的修改VB专业版的数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其表示数据库结构时可以使用下面的对象: DataBase、TableDef、Field、Index,以及三个集合 (Collection): TableDefs、Fields和Indexes 。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。对于非Access数据库,大部分都是对应于一个目 录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据库。而每一个非 Access数据库文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。 下面是新建一个FoxPro 2.5格式数据库的程序实例。 Sub CreateNew ( ) Dim Db1 As database , Td As TableDefs Dim T1 As New Tabledef , F1 As New Field , F2 As New Field , F3 As New Field Dim Ix1 As New Index Dim Path As String Const DB_TEXT = 10 , DB_INTEGER = 3 ChDir "\" Path$ = InputBox( " 请输入新路径名: ", "输入对话框" ) MkDir Path$ ' 新建一个子目录Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;") Set Td = Db1.TableDefs T1.Name ="MyDB" '新建一个数据表,数据表名为MyDB F1.Name = "Name" , F1.Type = DB_TEXT , F1.Size = 20 F2.Name = "Class" , F2.Type = DB_TEXT , F2.Size = 20 F3.Name = "Grade" , F3.Type = DB_INTEGER T1.Fields.Append F1 '向数据表添加这些字段T1.Fields.Append F2。
VB.Net常用语法 一:Try………Catch………finally………end try 捕获错误 把一个可能出错的语句放在try后面,如果出错,执行catch语句, catch可以有多个,第一个catch不能捕获的错误,将被下一个catch语句 所捕获。在所有的处理结束后,执行finally语句。 在一个try………end try 过程可以使用catch与finally两个的一 个,或者两个一起用, 二:Protected, private, Public 封装控制 这三个关键字一般放在语句最前面,而会置于overloads与Overrides的 后面 public是工程级别外部访问 protected是本族级别以下内部访问 private是不提供非本地访问 三:ByVal sender As Object, ByVal e As System.EventArgs   这是最赏用事件传递参数。被封装于两个对象内, 如果你要传递相应的参数,要在这两个对象里面找,如当前鼠标位置为 e.X e.Y。在VB.Net有些事件是要自已动手写的, 如窗体鼠标过程,一般加上这个参数在后面的括号内就解决了。 四:重载语法Overloads 如:class class1 public strtem as string overloads public sub subx()重载subx(A状态) strtem=”3” end sub overloads public sub subx(x as string) 重载subx(B状 态) strtem=x end sub end class 如果你如果调用subx()间没有参数,则VB自动调用重载subx(A状 态), overloads public sub subx()重载subx(A状态) strtem=”3” end sub 结果就是strtem=”3” 如果你这样调用,subx(“这是一个不同的结果”),则VB自动调用重 载subx(B状态) overloads public sub subx(x as string) 重载subx(B状 态) strtem=x end sub 结果就是 strtem=“这是一个不同的结果” 您可以在函数调用,包括在API(当然VB.Net不再使用winAPI). 甚至一些至关紧要的过程也不例外:如new过程(此方法王国荣文章 有介绍) 如: class class1 Overloads Public Sub New() 。。。。。。 。。。。。。 end sub Overloads Public Sub New(s as string) 。。。。。。 。。。。。。 end sub end class 同样有两种调用的方法,如dim as as class1=new class 调用前面 一个无参数的new过程, 而dim asb as class1=new class(“string”)调用第二个new 过程. 切记,如果一个过程或一个函数只有一种状态,不能这样运用。如果您试 图使用overloads关键字,则VB.Net会出现错误的提示要求你移去 overloads 五:Overrides改写 如常见的dispose过程: Overrides Public Sub Dispose() MyBase.Dispose components.Dispose End Sub Overrides表示完全的改写父类提供的过程与函数 不过要记住使用改写的前提是在父类的同一过程或函数的前面也使用了 overrides关键字 六:mybase.new 与mybase.dispose ublic Sub New() MyBase.New Form1 = Me InitializeComponent End Sub Overrides Public Sub Dispose() ' MyBase.Dispose components.Dispose End Sub 这两个过程是任何一个新建工程都会有的,mybase.new是调用当前类的 父类的new过程,同样你也可以加上参数配合父类的重载New过程。如: Overloads Public Sub New () MyBase.New() End Sub Overloads Public Sub New (string) MyBase.New(string) End Sub 七:Structure构造 自定义类型,如: Structure Type1 Dim x as y Dim a as b 。。。。。。。 end structure 这个取代VB的使用type………end type方式自定义类型的方法。 八:return返回值 function functionname() return X。。。。。。 end funtion 他的作用与下面一样: function functionname() functionname = X。。。。。。 end funtion
VB6.0 为无标题的窗体添加鼠标效果,Rect返回当前窗口位置,Point返回当前鼠标位置,本代码主要是使用case语句来实现,可练习一下case语句用法哦,分享代码:   Dim Point As POINTAPI   Call GetWindowRect(Me.hwnd, Rect) 'Rect返回当前窗口位置   Call GetCursorPos(Point) 'Point返回当前鼠标位置   Select Case True   Case Point.X < Rect.Left 5 And Point.Y < Rect.Top 5 '鼠标位于窗体左上方    Screen.MousePointer = vbSizeNWSE '45度双向鼠标    Action = "LeftUp"   Case Point.X > Rect.Right - 5 And Point.Y > Rect.Bottom - 5 '鼠标位于窗体右下方    Screen.MousePointer = vbSizeNWSE    Action = "RightDown"   Case Point.X > Rect.Right - 5 And Point.Y < Rect.Top 5 '鼠标位于窗体右上方    Screen.MousePointer = vbSizeNESW    Action = "RightUp"   Case Point.X < Rect.Left 5 And Point.Y > Rect.Bottom - 5 '鼠标位于窗体的左下方    Screen.MousePointer = vbSizeNESW    Action = "LeftDown"   Case Point.X < Rect.Left 5 '鼠标位于窗体的左侧    Screen.MousePointer = vbSizeWE    Action = "Left"   Case Point.X > Rect.Right - 5 '鼠标位于窗体的右侧    Screen.MousePointer = vbSizeWE    Action = "Right"   Case Point.Y < Rect.Top 5 '鼠标位于窗体的上面    Screen.MousePointer = vbSizeNS '垂直双向鼠标指针    Action = "Up"   Case Point.Y > Rect.Bottom - 5 '鼠标位于窗体底部    Screen.MousePointer = vbSizeNS    Action = "Down"   Case Else '鼠标移动    Screen.MousePointer = 0 '默认鼠标指针    Action = "Move"   End Select
4.设计体会 通过本次课程设计,使我从更深的层次了解了VB的设计技巧和应用方法。在程序的编制和调试过程,我从学到了很多有用的方法,比如通过本次设计,我更深刻的体会到了VB系统的方便与实用。在课程设计的过程,我对课本上的知识进行了复习,从找出了不少盲点,由衷地感觉到学习过程应该把学的知识作扎实,多动手多思考,这样才能最大限度的减少知识的漏洞。 把课本上的东西变成实际的东西,让其有使用的价值,是一件很让人高兴的事。我切实的体会到VB这门课程是有用处的,它解释了我平时学习的很多疑惑,让我增长了很多见识。 5.参考文献 [1] 刘天惠.Visual Basic程序设计教程[M]. 北京: 清华大学大学出版社,2003.12-24 [2] 龚沛曾.Visual Basic程序设计教程[M]. 高等教育出版社, 2004.28-45 [3] 蒋加伏.Visual Basic程序设计教程[M].北京: 北京邮电大学出版社,2003.10-56 [4] Microsoft .Visual Basic 6.0 文版控件大全[M]北京:电子工业出版社,2004.15-23 6.附录 源程序代码如下: (1)用户登录窗体 Private Sub cmdOK_Click() Dim SQL As String Dim rs As ADODB.Recordset 沈 阳 大 学 课程设计说明书 NO.16 If Trim(UserName.Text = "") Then MsgBox "没有输入用户名称,请重新输入!", vbOKOnly + vbExclamation, "警告" UserName.SetFocus Else '查询用户 SQL = "select * from UserInfo where UserID='" & UserName.Text & "'" Set rs = TransactSQL(SQL) If iflag = 1 Then If rs.EOF = True Then MsgBox "没有这个用户,请重新输入!", vbOKOnly + vbExclamation, "警告" UserName.SetFocus Else If Trim(rs.Fields(1)) = Trim(PassWord.Text) Then rs.Close Me.Hide gUserName = Trim(UserName.Text) '保存用户名称 FrmMain.Show Unload Me Else MsgBox "密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告" PassWord.SetFocus PassWord.Text = "" 沈 阳 大 学 课程设计说明书 NO.17 End If End If Else Unload Me End If End If pwdCount = pwdCount + 1 '判断输入次数 If pwdCount = 3 Then Unload Me Exit Sub End If End Sub Private Sub Form_Load() pwdCount = 0 gUserName = "" End Sub Private Sub PassWord_KeyDown(KeyCode As Integer, Shift As Integer) TabToEnter KeyCode End Sub Private Sub UserName_KeyDown(KeyCode As Integer, Shift As Integer) TabToEnter KeyCode End Sub 沈 阳 大 学 课程设计说明书 NO.18 (2)添加用户窗体 Option Explicit Public str1 As String '保存修改时的SQL语句 Public ID As Integer '保存记录编号 Private baddflag As Boolean rivate Sub AID_KeyDown(KeyCode As Integer, Shift As Integer) TabToEnter KeyCode End Sub Private Sub AID_LostFocus() Dim SQL As String Dim rs As New ADODB.Recordset SQL = "select SName,SDept,SPosition from StuffInfo where SID='" & Me.AID.Text & "'" Set rs = TransactSQL(SQL) If rs.EOF = False Then Me.AName = rs(0) '初始化员工姓名 Me.AOldDept = rs(1) Me.AOldPosition = rs(2) Else MsgBox "员工编号输入错误,或者没有这个员工!", vbOKOnly + vbExclamation, "警告!" Me.AID = "" Me.AID.SetFocus Me.AID.ListIndex = 0 End If rs.Close End Sub 沈 阳 大 学 课程设计说明书 NO.19 Private Sub cmdCancel_Click() Unload Me Exit Sub End Sub rivate Sub checkinput() If Me.ANewPosition = "" Then MsgBox "请输入新的职务!", vbOKOnly + vbExclamation, "警告!" Me.ANewPosition.SetFocus ElseIf Me.AOutTime = "" Or IsDate(Me.AOutTime) = False Then MsgBox "请输入正确的调出时间!", vbOKOnly + vbExclamation, "警告!" Me.AOutTime = "" Me.AOutTime.SetFocus ElseIf Me.AInTime = "" Or IsDate(Me.AInTime) = False Then MsgBox "请输入正确的调入时间!", vbOKOnly + vbExclamation, "警告!" Me.AInTime = "" Me.AInTime.SetFocus Else baddflag = True End If End Sub Private Sub cmdOK_Click() Dim SQL As String Dim rs As New ADODB.Recordset 沈 阳 大 学 课程设计说明书 NO.20 baddflag = False Call checkinput If baddflag = True Then If flag = 1 Then 'Call checkinput SQL = "select * from AlterationInfo" Set rs = TransactSQL(SQL) rs.AddNew rs.Fields(1) = Me.AID rs.Fields(2) = Me.AName rs.Fields(3) = Me.AOldDept rs.Fields(4) = Me.ANewDept rs.Fields(5) = Me.AOldPosition rs.Fields(6) = Me.ANewPosition rs.Fields(7) = Me.AOutTime rs.Fields(8) = Me.AInTime rs.Fields(9) = Me.ARemark rs.Update rs.Close SQL = "update StuffInfo set SDept='" & Me.ANewDept & "', SPosition='" SQL = SQL & Me.ANewPosition & "' where SID='" & Me.AID & "'" TransactSQL (SQL) MsgBox "已经添加调动信息!", vbOKOnly + vbExclamation, "添加结果!" SQL = "select * from AlterationInfo order by ID" 沈 阳 大 学 课程设计说明书 NO.21 frmAlterationResult.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Person.mdb" frmAlterationResult.Adodc1.RecordSource = SQL If SQL <> "" Then frmAlterationResult.Adodc1.Refresh End If Else '修改记录 'Call checkinput SQL = "update StuffInfo set SDept='" & Me.ANewDept & "', SPosition='" SQL = SQL & Me.ANewPosition & "' where SID='" & Me.AID & "'" TransactSQL (SQL) SQL = "update AlterationInfo set AOldDept='" & Me.AOldDept & "',ANewDept='" SQL = SQL & Me.ANewDept & "',AOldPosition='" & Me.AOldPosition SQL = SQL & "',ANewPosition='" & Me.ANewPosition & "',AOutTime=#" & Me.AOutTime SQL = SQL & "#,AInTime=#" & Me.AInTime & "# where ID=" & ID TransactSQL (SQL) MsgBox "已经修改信息!", vbOKOnly + vbExclamation, "修改结果!" Unload Me SQL = "select * from AlterationInfo order by ID" frmAlterationResult.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Person.mdb" frmAlterationResult.Adodc1.RecordSource = SQL If SQL <> "" Then frmAlterationResult.Adodc1.Refresh End If 沈 阳 大 学 课程设计说明书 NO.22 Set frmAlterationResult.DataGrid1.DataSource = frmAlterationResult.Adodc1.Recordset frmAlterationResult.DataGrid1.Refresh frmAlterationResult.Show frmAlterationResult.ZOrder 0 Call init Me.ZOrder 0 End If End If End Sub (3)查询员工信息窗体 Option Explicit Private query As String Private fromdate As String Private todate As String Private Sub cmdCancel_Click() Unload Me Exit Sub End Sub Private Sub CombineDate() fromdate = Me.FromYear.Text & "-" & Me.FromMonth.Text & "-1" fromdate = Format(Me.FromYear.Text & "-" & Me.FromMonth.Text & "-1", "yyyy-mm-dd") todate = Me.ToYear.Text & "-" & Me.ToMonth.Text & "-1" todate = Format(todate, "yyyy-mm-dd") End Sub 沈 阳 大 学 课程设计说明书 NO.23 Private Sub setSQL() If IDCheck.Value = vbChecked Then query = "select * from StuffInfo where SID='" & Trim(Me.SID) & "'" End If If NameCheck.Value = vbChecked Then query = "select * from StuffInfo where SName='" & Trim(Me.SName) & "'" End If End Sub Private Sub cmdOK_Click() Call CombineDate Call setSQL frmResult.createList (query) frmResult.Show Unload Me End Sub Private Sub Form_Load() Dim i As Integer Dim SQL As String Dim rs As New ADODB.Recordset SQL = "select distinct datepart(yy,SInTime) from StuffInfo" Set rs = TransactSQL(SQL) If Not rs.EOF Then rs.MoveFirst While Not rs.EOF If Not IsNull(rs.Fields(0)) Then 沈 阳 大 学 课程设计说明书 NO.24 Me.FromYear.AddItem rs(0) Me.ToYear.AddItem rs(0) End If rs.MoveNext Wend rs.Close Me.FromYear.ListIndex = 0 Me.ToYear.ListIndex = 0 End If For i = 1 To 12 Me.FromMonth.AddItem i Me.ToMonth.AddItem i Next i Me.FromMonth.ListIndex = 0 Me.ToMonth.ListIndex = 0 End Sub

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值