在ASP中使用VBS.ppt_第1页
在ASP中使用VBS.ppt_第2页
在ASP中使用VBS.ppt_第3页
在ASP中使用VBS.ppt_第4页
在ASP中使用VBS.ppt_第5页
已阅读5页,还剩160页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 在ASP中使用VBScript,本章要点: l Vbscript的常量、变量 l Vbscript的控制转移和循环 l Vbscript中的过程 l Vbscript的浏览器及Err对象 l VBScript事件处理和错误调试技术,4.1 脚本语言,4.1.1 什么是脚本语言 是介于HTML和Java、C+、Visual Basic之类的编程语言之间的语言。 主要用于格式化文本和使用以编程语言编写的已编译好的组件。 可以用在 服务器端,也可以用在客户端,用在服务器端时,需要安装脚本引擎。,常用的脚本语言: VBScript JavaScript Perl,ASP带有两个脚本引擎: Microsoft Visual Basic Scripting Edition (VBScript)缺省语言是VBScript,当安装完Active Server Pages时,它就已存在了。 同时安装的还有Microsoft JScript。,4.1.2 VBScript和JScript之间的区别,VBScript是Visual Basic 的子集,因为VBScript是特意为在浏览器中进行工作而设计的,它不包括一些在脚本这个范围以外的特性,如文件访问和打印等等。 JScript是Java语言的子集,没有Java复杂。主要用于脚本编写的脚本语言。,JScript和VBScript的任务是相同的都是用来编写Web网页的。每种语言都支持一些别的语言不支持的特性。 VBScript和JScript之间最大的区别就是它们的结构。,选择脚本类型时要考虑的因素: 选择脚本语言很多因素,比如:将要使用的平台能否支持所使用的语言?所编写的或要编写的是客户端应用还是服务器端应用?如果是服务器端的,用户会使用什么浏览器和服务器软件?,1什么时候选择VBScript BScript主要是用在微软公司的各种平台上。VBScript来可以应用在下面两种场景: 服务器脚本。运行在web服务器端(如在ASP网页中),这个服务器必须是IIS。 客户端脚本。运行在客户的浏览器中,这个浏览器必须是IE。,2什么时候选择Jscript 所有的浏览器都支持JScript。因此,如果为一个公共Web站点编写一个应用程序,用JScript来编写客户端脚本是很自然的选择。 如果想用JScript 来编写服务器脚本,那么应该检查一下的服务器是否支持它。微软公司的IIS允许你用JScript 来编写ASP网页的脚本,但这并不是所有的服务器都支持的。,3区分大小写 JScript能够区分大写和小写。大小写敏感。 var A; var a;,VBScript当然是不区分大写和小写字母的。大小写不敏感。 var A; var a;,4.1.3 在同一个网页中同时使用几种语言,在同一个网页中可以使用不同的脚本编写语言,其原因是: (1)只是想在一个程序中利用某种语言的优点,而脚本的其它部分还是用另外一种语言来编写。 (2)所面对的现有的编码是用不熟悉的语言来编写的。例如,设计时间控制是用JScript编写的,而熟悉的语言却是VBScript。,在大部分情况下,可以在同一个网页中混合几种脚本语言并且它们相互之间能够配合得很好。用一种语言编写的脚本可以调用用另一种语言编写的程序并且能够共享全局变量。,1服务器脚本的执行顺序 一般情况下内联服务器脚本(在分隔符中的脚本)按顺序运行,从头到尾。,2脚本块的顺序 在把几种语言混合使用时,块在网页中出现的顺序非常重要,有时候会影响到它们是否能正常工作。看看下面这个简单的例子,它是在一个内联的VBScript脚本中调用一个用JScript编写的函数: 调用一个Jscript函数 aNumber =2 doubledNumber = doubleMe(aNumber),document.write(“答案:“ ,4.1.4 设置主脚本语言 ASP主脚本语言是用来处理在分界符 内部的命令的语言。默认时,主脚本语言是VBScript,当然可以将任何一种具有脚本引擎的脚本语言作为主脚本语言,也可以逐页设置主脚本语言,或在ASP应用程序中设置所有页的主脚本语言。,1为某页设置语言 要设置单个页的主脚本语言,可将指令添加到.asp文件的开头。该指令的语法是: 其中Scripting Language就是所要设置的页的主脚本语言。如果对某页进行了设置,那么该页将忽略在应用程序中对所有页的全局设置。,2为应用程序设置语言 在应用程序中,如要为所有页设置主脚本语言,可在Internet服务管理器的“应用程序选项”选项卡上设置“默认的ASP语言”属性。 3在服务器上使用VBScript和JScript 在服务端通过ASP使用VBScript时,由于ASP脚本是在服务器端执行的,两个VBScript特征将失效,即表示用户接口的元素的VBScript语句InputBox和MsgBox将不被支持。另外,在服务器端的脚本中,请不要使用VBScript函数,CreateObject和GetObject,而要使用Server.CreateObject,这样ASP就可以跟踪对象实例了。用CreateObject或GetObject创建的对象不能访问ASP内建对象,也不能参与事务处理。,4.2.1 VBScript 数据类型 VBScript只有一种数据类型,称为Variant。Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为Variant是唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。,4.2 VBScript基础,表4-1 Variant子类型,可以使用转换函数来转换数据的子类型, 用VarType函数返回数据的Variant子类型。,4.2.2 变量,1声明变量 在VBScript中声明一个变量可以使用Dim语句、Public语句和Private语句。 (1)Dim语句 Dim语句用来明确地声明变量。与Visual Basic不同的是,它无需指明变量的数据类型。因为VBScript中,只用一种数据类型。,格式: Dim 变量名称 例如: Dim DegreesFahrenheit 声明多个变量时,使用逗号分隔变量。例如: Dim Top, Bottom, Left, Right (2)Redim语句 Redim语句是专用来定义数组的。当需要根据数据的增加和删除来扩大或缩小数组的大小时,可通过Redim语句来实现。,下面是一个扩大数组的简单格式: Dim datanum Redim Preserve datanum(20) Redim Preserve datanum(20)语句将数组的元素扩大到20。 默认的情况下,使用Redim语句的同时会清除数组中的所有值。而使用Preserve 关键字可以将所有现存的数据保存下来,并添加新的空白单元;,如果缩小了数组的大小,那么被减去的单元中的数据也会丢失。 3)Public关键字 Public关键字用于定义全局型变量。 格式: Public 变量名称 例如: Public a,b 和Dim语句一样,Public可以声明变量,并可以一次声明多个变量,也可以声明一维或多维数组。所不同的是Public关键字定义的变量是全局变量。 (4)Private关键字,Private关键字可以定义变量、一次定义多个变量、定义一维或多维数组,不同的只是变量的作用范围不同。下面列出了使用上面语句或关键字定义的变量的可能作用范围: l Dim、 Redim :整个脚本程序或过程、函数中。 l Public:整个脚本程序。 l Private:过程或函数中。,(5)Option Explicit语句 虽然可以不声明变量而直接使用,但是,这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。因此,最好使用Option Explicit语句显式声明所有变量,并将其作为脚本的第一条语句。 这样,如果以后拼写错变量名,VBScript就会提醒你这个变量没有声明,而避免出现由于拼写错误所造成的问题。,2命名规则 变量命名必须遵循VBScript的标准命名规则。变量命名必须遵循: l 第一个字符必须是字母。 l 不能包含嵌入的句点。 l 长度不能超过255个字符。 l 在被声明的作用域内必须唯一。,3变量的作用域及存活期 过程级变量:在过程中声明的变量。则只有该过程中的代码可以访问或更改变量值。具有过程级作用域 Sub Sub1() dim var1 var1=2008 var1=var1+1 End Sub,脚本级变量:在过程之外声明的变量。则该变量可以被脚本中所有过程所识别,具有脚本级作用域。 dim var1 Sub Sub1() var1=2008 End Sub,4给变量赋值 给变量赋值很简单,创建如下形式的表达式给变量赋值:变量在表达式左边,要赋的值在表达式右边。例如: B = 200,5标量变量和数组变量 多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号()。下例声明了一个包含11个元素的一维数组: Dim A(10),虽然括号中显示的数字是10,但由于在VBScript中所有数组都是基于0 的,所以这个数组实际上包含11个元素。在基于0的数组中,数组元素的数目总是括号中显示的数目加1。这种数组被称为固定大小的数组。 在数组中使用索引为数组的每个元素赋值。从0到10,将数据赋给数组的元素,如:,A(0) = 256 A(1) = 324 A(2) = 100 A(10) = 55 与此类似,使用索引可以检索到所需的数组元素的数据。如: SomeVariable = A(8) ,数组并不仅限于一维。数组的维数最大可以为60。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有6行和11列的二维数组: Dim MyTable(5, 10) 在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。,Redim MyArray(25) Redim Preserve MyArray(30) 重新调整动态数组大小的次数是没有任何限制的。但是应注意:将数组的大小调小时,将会丢失被删除元素的数据。 4.2.3 常量 其值不能改变的量。,Const 常量名 = 初值 Const MyString = “这是一个字符串。“ Const MyAge = 49 请注意字符串文字包含在两个引号(“)之间,这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个#之间。例如: Const CutoffDate = #6-1-97#,在VBScript中已经定义了许多固有常量,可以直接引用。 1Empty常量 Empty常量表示一个为初始化的变量。如果定义了一个变量,没有对它赋值,那么这个变量就是Empty。,2Null常量 Null常量表示一个变量包含无效的数值。 注意,Empty和Null是不一样的: 当在一个表达式中使用值为Empty的变量时,如果它被用作数字,则它等于0;如果它被用作字符串,那么它就等于0长度字符串。 Null则不同,它表示变量中没有包含有效数据。,3Nothing常量 Nothing用于断开对象变量和任何实际对象之间的链接,使用SET语句可将一个对象变量设置为Nothing,如: Set 对象变量名Nothing 通过把一个对象变量赋值为Nothing,表明已经使用完了变量所链接的对象,可以释放该对象所占用的内存以及分配给该对象的其它系统资源。 如果有多个变量同时链接到一个对象,VBScript直到指向该对象的所有变量都设置为Nothing时,才会释放该对象资源。,4True和False常量 True的值为-1;False的值为0。 4.2.4 VBScript 运算符 VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。 当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。,先执行括号中的运算符,然后再执行括号外的运算符。 当表达式包含多种运算符时,先算术运算符(先乘除,后加减),然后比较运算符(优先级相同),最后逻辑运算符。优先级相同的运算,按照从左到右的顺序计算。 逻辑运算优先级 NOT AND OR,字符串连接运算符&不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。Is运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象是否引用同一个对象。,4.3 VBScript中的条件语句,If(逻辑表达式) Then Else End if Select Case 语句,4.3.1 IfThenElse 语句 If(逻辑表达式) Then Else End if 要在条件为 True 时运行单行语句,可使用 IfThenElse 语句的单行语法。如:,Sub FixDate() Dim myDate myDate = #2/13/95# If myDate Now Then myDate = Now End Sub 请注意此例省略了关键字Else。 要运行多行代码,必须使用多行(或块)语法。多行(或块)语法包含有End If 语句,不能省略。如:,Sub AlertUser(value) If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True End If End Sub,Sub AlertUser(value) If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True Else AlertLabel.Forecolor = vbBlack AlertLabel.Font.Bold = False AlertLabel.Font.Italic = False End If End Sub,IfThenElse语句的一种变形是可以从多个条件中选择,即添加ElseIf子句以扩充 IfThenElse语句的功能,控制基于多种可能的程序流程。如: Sub ReportValue(value) If value = 0 Then MsgBox value ElseIf value = 1 Then MsgBox value ElseIf value = 2 Then Msgbox value,Else Msgbox “数值超出范围!“ End If End Sub 可以添加任意多个ElseIf子句以提供多种选择。然而,使用多个ElseIf子句会使程序变得难懂。因此,在多个条件中进行选择的更好方法是使用Select Case语句。,4.3.2 使用Select Case进行判断 Select Case 结构提供了IfThenElseIf结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case语句提供的功能与IfThenElse语句类似,但是可以使代码更加简练易读。 Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个Case的值比较。如果匹配,则执行与该Case关联的语句块。如:,Select Case Document.Form1.CardType.Options(SelectedIndex).Text Case “MasterCard“ DisplayMCLogo ValidateMCAccount Case “Visa“ DisplayVisaLogo ValidateVisaAccount,Case Else DisplayUnknownImage PromptAgain End Select 请注意Select Case结构只计算开始处的一个表达式(只计算一次),而IfThenElseIf结构计算每个ElseIf语句的表达式,这些表达式可以各不相同。因此,仅当每个 ElseIf语句计算的表达式都相同时,才可以使用Select Case结构代替IfThenElseIf 结构。,4.4 VBScript中的循环语句,4.4.1 使用循环重复执行代码 循环用于重复执行一组语句。循环可分为三类:一类在条件变为 False 之前重复执行语句;一类在条件变为 True 之前重复执行语句;另一类按照指定的次数重复执行语句。 在 VBScript 中可使用下列循环语句:,(1)DoLoop:当(或直到)条件为True 时循环。 (2)WhileWend:当条件为True 时循环。 (3)ForNext:指定循环次数,使用计数器重复运行语句。 (4)For EachNext:对于集合中的每项或数组中的每个元素,重复执行一组语句。 1使用DoLoop循环,(1)当条件为True时重复执行语句 While关键字用于检查DoLoop语句中的条件。有两种方式检查条件:在进入循环之前检查条件;或者在循环至少运行完一次之后检查条件。,True or Falses ?,True,False,Sub ChkFirstWhile() Dim counter, myNum counter = 0 myNum = 20 Do While myNum 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox “循环重复了 “ & counter & “ 次。“ End Sub,True or Falses ?,True,False,Sub ChkLastWhile() Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum 10 MsgBox “循环重复了 “ & counter & “ 次。“ End Sub,(2)重复执行语句直到条件变为True Until 关键字用于检查 DoLoop语句中的条件。有两种方式检查条件:在进入循环之前检查条件;或者在循环至少运行完一次之后检查条件。只要条件为False,就会进行循环。,Sub ChkFirstUntil() Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox “循环重复了 “ & counter & “ 次。“ End Sub,Sub ChkLastUntil() Dim counter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox “循环重复了 “ & counter & “ 次。“ End Sub,(3)退出循环 Exit Do语句用于退出DoLoop循环。因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在IfThenElse语句的True语句块中使用Exit Do语句。如果条件为False,循环将照常运行。 在下面的示例中,myNum的初始值将导致死循环。用IfThenElse语句检查此条件,可防止出现死循环。 Sub ExitExample() Dim counter, myNum,counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum 10 Then Exit Do Loop MsgBox “循环重复了 “ & counter & “ 次。“ End Sub,2使用WhileWend WhileWend语句是为那些熟悉其用法的用户提供的。但是由于WhileWend缺少灵活性,所以建议最好使用DoLoop语句。 3使用ForNext ForNext语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。 例如,下面的示例将过程MyProc重复执行50次。,For语句指定计数器变量x及其起始值与终止值。Next语句使计数器变量每次加1。 Sub DoMyProc50Times() Dim x For x = 1 To 50 MyProc Next End Sub 关键字Step用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量 j每次加2。循环结束后,total的值为2、4、6、8和10的总和。,Sub TwosTotal() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox “总和为 “ & total & “。“ End Sub 要使计数器变量递减,可将Step设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量myNum每次减2。循环结束后,total的值为16、14、12、10、8、6、4和2的总和。,Sub NewTotal() Dim myNum, total For myNum = 16 To 2 Step -2 total = total + myNum Next MsgBox “总和为 “ & total & “。“ End Sub Exit For语句用于在计数器达到其终止值之前退出ForNext语句。因为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,,所以可以在IfThenElse语句的True 语句块中使用Exit For语句。如果条件为False,循环将照常运行。 4使用For EachNext For EachNext循环与ForNext循环类似。For EachNext不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。 在下例中,Dictionary对象的内容用于将文本分别放置在多个文本框中: 程序见书 sample4-01.html,在VBScript中,过程被分为两类:Sub过程和Function过程。 4.5.1 Sub过程 Sub过程是包含在Sub和End Sub语句之间的一组VBScript 语句,它只执行操作不返回值。Sub过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Sub过程无任何参数,则Sub语句必须包含空括号()。,4.5 VBScript中的过程,下面的Sub过程使用两个固有的(或内置的)VBScript函数,即MsgBox和InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用VBScript创建的 Function过程完成。 Sub ConvertTemp() temp = InputBox(“请输入华氏温度。 “, 1) MsgBox “温度为 “ & Celsius(temp) & “ 摄氏度。“ End Sub,4.5.2 Function过程 Function过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Function过程无任何参数,则Function语句必须包含空括号()。Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function返回值的数据类型总是Variant。,在下面的示例中,Celsius函数将华氏度换算为摄氏度。Sub过程ConvertTemp调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。 Sub ConvertTemp() temp = InputBox(“请输入华氏温度。“, 1) MsgBox “温度为 “ & Celsius(temp) & “ 摄氏度。“ End Sub,Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function 4.5.3 过程的数据进出 给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用Sub语句或Function语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。,例如,在下面的示例中,fDegrees是传递给Celsius函数的值的占位符: Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function 要从过程获取数据,必须使用Function过程。请记住,Function过程可以返回值;Sub 过程不返回值。,4.5.4 在代码中使用Sub和Function过程 调用Function过程时,函数名必须用在变量赋值语句的右端或表达式中。例如: Temp = Celsius(fDegrees) 或 MsgBox “温度为 ” & Celsius(fDegrees) & “ 摄氏度。” 调用Sub过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。可以不使用Call语句,但如果使用了此语句,则必须将所有参数包含在括号之中。,下面的示例显示了调用MyProc过程的两种方式。一种使用Call语句;另一种则不使用。两种方式效果相同。 Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg 请注意,当不使用Call语句进行调用时,括号被省略。,4.6 注释Visual Basic脚本,注释可以提高代码的可读性,尤其是在别人阅读你的程序代码时。可以在ASP网页中使用HTML风格的注释。但是,在Visual Basic脚本中不能用这种注释。要在一个脚本中加人注释,必须用下面的方法:, 在这个例子中,REM语句用来建立一条注释。注意一个撇号可以用于同样的目的。REM语句与撇号()执行同样的功能。 这两种注释只能用来注释一行。用REM语句或撇号建立的注释在一行的末尾结束。但是,可以把注释与其它Visual Basic语句写在同一行中:, HTML风格的注释与VBScript注释的一个重要区别是VBScript注释不发送给浏览器,不能用Web浏览器中的查看源文件命令来察看VBScript注释。,4.7 VBScript中的函数,VBScript提供了很多功能强大的函数,为用户编程提供了方便。同时,用户还可以根据需要自定义一些函数。本节介绍一些常用的函数。 4.7.1 日期和时间函数 VBScript有许多函数,可以得到各种格式的日期和时间。例如可以用函数NOW返回当前的日期和时间: 现在的时间是 ,应该注意,返回的日期和时间是Web服务器的系统时钟的日期和时间。如果身处纽约的某个人在看你的网页,他所看到的日期和时间与他当地的日期和时间可能是不一致的。 函数NOW同时返回日期和时间。如果只想返回当前日期,可以使用函数DATE。如果只想返回当前时间,可以使用函数TIME。例如: 日期: 时间:,1日期的操作 使用函数MONTH(),DAY(),WEEKDAY()和YEAR()。可以把一个日期分割成更小的部分。所有这些函数都以一个日期表达式作为参数,并返回一个数字。这里有一个如何使用这些函数的例子: 本月是: 今天是: ,星期是: 今年是: 假设当前日期是2003年2月12日,星期三。如果把上面的例子包含在一个ASP网页中,在浏览器中将显示如下的文字: 本月是:2 今天是:12 星期是:3 今年是:2003,注意,函数weekday()假定一个星期的第一天是星期日。如果想把星期一作为一周的第一天,可以使用如下的语句: 本周是: 也可以把任何一天作为一周的第一天。要指定一周的第一天是星期几,只要用vbSunday,vbMonday,vbTusday,vbWednesday,vbThurday,vbFriday或vbSaturday代替函数WEEKDAY()的第二个参数即可。,不但可以用函数DATE作为这些函数的参数,也可以提供一个日期字符串或者一个日期常数作为参数,如: 本周是: 本周是: 这两个函数都返回2002年圣诞节这一天是星期几。表达式#12/25/2002#是一个日期常数,它总是括在字符中。表达式“12-25-2002“是一个日期字符串。这两种方法都可以为函数提供一个日期。,要以更加易读的形式返回月份和星期几,可以使用函数WEEKDAYNAME()或MONTHNAME()。这两个函数返回的是字符串。例如: 本月是: 本周是: 可以把1到12之间的任何整数作为函数MONTHNAME()的参数,把1到7之间的任何整数作为函数WEEKDAYNAME()的参数。,2时间的操作 通过函数HOUR(),MINUTE(),和SECOND(),可以返回时间的不同部分。下面是使用这些函数的一些例子以及可能的返回值: 时: 时:18 分: 分:39 秒: 秒:34,函数HOUR()返回一个0到23之间的整数(0点是午夜后的一个小时)。函数MINUTE()返回一个0到59之间的整数。函数SECOND()也返回一个0到59之间的整数。 不仅可以用函数TIME作为这些函数的参数,还可以提供一个时间常数或时间字符串作为参数。下面的两个例子都是从时间中抽取分钟数34: 分: 分:34 分: 分:34,3日期和时间的比较 VBScript有两个用于比较日期和时间的函数。可以用函数DATEADD()对日期和时间作加法,用函数DATEDIFF()计算两个日期或时间的间隔。下面是使用函数DATEADD()的例子: 你的账号将于 过期 你的账号将于2003-4-27过期,上例返回比当前日期晚六个星期的日期。 函数DATEADD()有三个参数: 第一个参数指定一个时间间隔。(见书中表4-3) 第二个参数时间间隔的倍数因子。 第三个参数是一个日期或时间的变量或常量。 可以用函数DATEDIFF来确定两个日期或时间之间的间隔,此函数在处理按时间计费的系统时十分有用。如: ,第一句中的DATEDIFF()函数返回1/1/2000与当前日期之间的天数。第二句中的DATEDIFF(),返回当前日期到2005年1月1日当前时刻之间的秒数。 函数DATEDIFF()有三个参数。第一个参数是一个日期或时间间隔;另两个参数是两个日期。 为了避免出现负数,第一个日期参数应该比第二个早。,4格式化日期和时间 可以规定一个日期或时间的显示格式。在缺省情况下,当通过函数DATE显示一个日期时,它看起来是这样的: 2/9/03 或 2/9/2003 至于显示哪种日期格式取决于控制面板中区域设置的指定,前者为短格式,后者为长格式 也可以用函数FORMATDATETIME()显示一个基于你计算机的区域设置的日期。,下面的例子演示了如何控制长日期格式和短日期格式的显示: 短日期格式: 长日期格式: 根据中国区域设置显示日期时,日期显示为如下的格式: 短日期格式:2003-2-16 长日期格式:2003年2月16日,注意短日期格式的显示与不做任何格式化时完全相同。在缺省情况下,日期以短日期格式显示。 也可以用函数FORMATDATETIME()格式化一个时间。同样,可以指定一个时间显示为长格式或短格式。当用短格式显示时间时,将使用24小时时钟(军事时间)。下面的例子演示了如何用FORMATDATETIME()函数操作时间: 短时间格式: ,长时间格式: 当以中国区域设置显示时间时,时间的格式如下: 短时间格式:19:47 长时间格式:19:47:07 4.7.2 数据转换函数 虽然在VBScript中所有的变量都被设置为Variant类型,都是在数学运算和数据库存储操作时仍然会涉及到数据转换的问题。,1CBool 函数 功能:把指定的参数转换为Bool数据类型。 格式: CBool(表达式) 表达式是任意有效的表达式。 如果表达式是零,则返回 False;否则返回 True。如果表达式不能解释为数值,则将发生运行时错误。,2CByte 函数 功能:把指定的参数转换为Byte数据类型。 语法: CByte(表达式) 表达式参数是任意有效的表达式。 可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,在出现货币、单精度、双精度或整数运算的情况下,使用CByte 强制执行字节运算。,CByte 函数用于进行从其它数据类型到Byte子类型的的国际公认的格式转换。例如对十进制分隔符(如千分符)的识别,可能取决于系统的区域设置。 如果表达式在Byte子类型可接受的范围之外,则发生错误。 3CCur 函数 功能:把指定的参数转换为Currency(货币)数据类型。 格式: CCur(表达式),表达式参数是任意有效的表达式。值的范围是从-922,337,203,685,477.5808到922,337,203,685,477.5807,并且Currency数据类型自能够处理小数点后四位小数。 可以使用子类型数据转换函数书写代码,以显示某些操作的结果应当被表达为特定的数据类型,而非默认的数据类型。例如在整数运算的情况下,使用 CCur 函数强制进行货币计算。 CCur 函数用于进行从其它数据类型到 Currency 子类型的国际公认的格式转换。例如,对十进制分隔符和千位分隔符的识别取决于系统的区域设置。,4CDate函数 功能:把指定的参数转换为Date数据类型。 格式: CDate(日期) 日期参数是任意有效的日期表达式。 IsDate函数用于判断日期参数是否可以被转换为日期或时间。CDate识别日期文字和时间文字,以及一些在可接受的日期范围内的数字。在将数字转换为日期时,数字的整数部分被转换为日期,分数部分被转换为从午夜开始计算的时间。,CDate根据系统的区域设置识别日期格式。如果数据的格式不能被日期设置识别,则不能判断年、月、日的正确顺序。另外,如果长日期格式包含表示星期几的字符串,则不能被识别。 5CDbl函数 功能:把指定的参数转换为Double数据类型。 格式: CDbl(表达式) 表达式参数是任意有效的表达式。,可以使用子类型数据转换函数书写代码,以显示某些操作的结果应当被表达为特定的数据类型,而非默认的数据类型。例如在出现货币或整数运算的情况下,使用CDbl或CSng 函数强制进行双精度或单精度算术运算。 CDbl函数用于进行从其它数据类型到Double子类型的国际公认的格式转换。例如,十进制分隔符和千位分隔符的识别取决于系统的区域设置。,6CInt 函数 功能:把指定的参数转换为Integer数据类型。 格式: CInt(表达式) 表达式参数是任意有效的表达式。 可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,在出现货币、单精度或双精度运算的情况下,使用CInt或CLng 强制执行整数运算。,如果表达式参数在Integer子类型可接受的范围(-32768到32767)之外,则发生错误. 注意:CInt与 Fix 和 Int 函数不同,后两者将数字的分数部分截尾取整,而不是四舍五入。当分数部分恰好为0.5时,CInt函数通常将其四舍五入为最接近的偶数。例如,0.5被四舍五入为0,而1.5被四舍五入为2。,7CLng 函数 功能:把指定的参数转换为Long数据类型。 格式: CLng(表达式) Long数据类型可以容纳-2,147,483,648到2,147,483,647之间的数。 8CSng 函数 功能:把指定的参数转换为Single数据类型。,格式: CSng(表达式) Single数据类型可以容纳-3.402823E38到-1.401298E-45的负数,从1.401298E-45到3.402823E38的正数。 9CStr 函数 功能:把指定的参数转换为字符串。 格式: CStr(表达式),4.7.3 数学函数 1Sqr函数 功能:返回指定参数的平方根。 格式: Sqr(number) 2Abs函数 功能:返回指定参数的绝对值。 格式: Abs (number),3Cos/Sin函数 功能:用来计算指定参数(以弧度为单位,可以是参数或表达式)的余弦或正弦值。 格式: Cos (number) Sin (number) 4Len函数 功能:计算指定字符串的长度。 格式: Len (String) String也可以是字符串变量或表达式。,5Asc函数 功能:返回指定字符的ASCII码。 格式: Asc (String) String参数可以是字符或任意有效的字符串表达式。 6Chr函数 功能:根据一个ASCII码值返回指定字符。 格式: Chr(charcode),7Rnd函数 功能:产生一个随机数。 格式: Rnd(number) 4.7.4 字符串函数 字符串函数主要提供对字符串进行查找、替换和提取的功能。 1Filter函数 功能:查找包含符合要求字符的字符串。 格式: Filter(源字符串,过滤字符串,提取方式,搜索方式),源字符串可以是直接指定的字符串,也可以是字符串变量和数组;过滤字符串是指定搜索的字符串。 提取方式有两种。当该参数设置为-1时,提取包含过滤字符串的字符串;当该参数设置为0时,提取不包含过滤字符串的字符串; 搜索方式也有两种。当该参数设置为-1时,指示为基于文本的搜索;当该参数设置为0时,指示为二进制搜索。,2Instr函数 功能:查找某字符串在另一字符串中第一次出现的位置。 格式: Instr(开始位置,源字符串,要查找的字符串,比较方式) 比较方式规定为:0时执行二进制比较;1执行文本比较;2执行基于包含在数据库(在此数据库中执行比较)中的信息的比较。,3Mid函数 功能:从字符串中指定的起始位置返回指定数目的字符。 格式: Mid(源字符串,起始位置,要求返回的字符数目) 4Lcase / Ucase函数 功能:把字符串中的所有字母转换成对应的小写字母或大写字母。 格式: Lcase(字符串) Ucase(字符串),5Strreverse函数 功能:将字符串颠倒过来。 格式: Strreverse(字符串) 6Ltrim、Rtrim和Trim函数 功能:返回不带前导空格、后续空格或前导与后续空格(Trim)的字符串副本 语法: LTrim(string) RTrim(string) Trim(string),7Space函数 功能:返回由指定数目的空格组成的字符串。 语法: Space(number) number 参数为字符串中用户所需的空格数。,4.7.5 格式化函数 1FormatNumber函数 功能:返回已被格式化为数值的表达式。 语法: FormatNumber(expression,NumDigitsAfterDecimal ,IncludeLeadingDigit ,UseParensForNegativeNumbers ,GroupDigits) 详见书中表44、45,2FormatDateTime函数 功能:返回已被格式化为日期或时间的表达式。 语法: FormatDateTime(Date,NamedFormat) 参数: Date 必选。要被格式化的日期表达式。 NamedFormat 可选。指示所使用的日期/时间格式的数值,如果省略,则使用vbGeneralDate。 详见书中表46、47,4.8 消息框和输入框,4.8.1 消息框 消息框用来把警告、错误或者提示信息显示给用户,同时还返回用户在消息框中通过单击按钮反馈的信息。 (1)语法 MsgBox(prompt, buttons, title, helpfile, context) MsgBox 函数中的参数见书中表4-7。 buttons 参数见书中表4-8。,(2)返回值 MsgBox 函数的返回值见书中表4-9。 (3)注意 如果同时提供了helpfile和context,则用户可以按F1键以查看与上下文相对应的帮助主题。 如果对话框显示取消按钮,则按ESC键与单击取消的效果相同。如果对话框包含帮助按钮,则有为对话框提供的上下文相关帮助。但是在单击其他按钮之前,不会返回任何值。,4.8.2 输入框 输入框用来接收来自用户的输入,它是在对话框中显示提示,等待用户输入文本或单击按钮,并返回文本框内容。 (1)语法 InputBox(prompt, title, default, xpos, ypos, helpfile, context) InputBox 函数的参数见书中表4-10。 (2)注意 如果同时提供了helpfile和context,就会在对话框中自动添加“帮助”按钮。 单击确定或按下ENTER,InputBox函数返回文本框中的内容。单击取消,返回一个零长度字符串(“)。,4.9 浏览器对象及Err对象,浏览器本身的对象主要有三个: l Location对象:URL网址对象。 l Document对象:加载网页和HTML标记的对象。 l Windows对象:浏览器打开的窗口对象。,4.9.1 Location对象 Location对象主要是用来获取浏览器地址栏中的URL字符串和设置新的URL网址。 例如: :80/products?user=yin Location对象的属性有以下几种: l Href::获取或设置完整的URL字符串。 l Protocol:获取或设置URL字符串的协议,通常为http。,l Host:获取或设置HostName:Port,例如,上面的例子中,HostName:Port为:80 lHostName:获取或设置HostName,此例中为。 l Port:获取或设置Port,此例中为本80。 l PathName:获取或设置URL的路径。 l Search:获取或设置URL中以?开头的参数。,4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论