当前位置:文档之家› 第8章 模块

第8章 模块

第8章  模块
第8章  模块

第8章模块

【本章要点】

宏有一定的局限性,当利用宏不能解决复杂的要求时,就需要使用模块来完成,在Access 中创建模块使用的是VB语言,它是一种面向对象的语言。要求考生了解模块以及创建模块所必须的面向对象的程序设计概念,能够在模块中加入过程,在模块中执行宏;编写事件过程。掌握面向对象程序设计的基本概念;VBA编程环境。VBA编程基础:常量、变量、表达式;VBA程序流程:顺序控制、选择控制、循环控制。

8.1 VBA程序设计基础

本节将对VBA中的常量、变量、标准函数及表达式、顺序结构、选择结构、循环结构、数组、子程序、子函数和数组等内容加以介绍。由于本节的内容是VBA的编程基础,因此格外重要,可以说,没有Basic的语法规则,就没有VBA程序。

8.1.1常量

1.标识符命名规则

在VBA中,用户可以根据实际情况为变量、常量等对象定义标识符,即它们的名称,如变量名、符号常量名、对象名、数组名、过程名、函数名等。定义名称的目的是为了在程序中按名称来访问或调用它们。合法的标识符不仅要具有唯性(在其作用域内),而且必须遵循以下命名规则:

?以字母或汉字开头,由字母、汉字、数字或下划线组的1~255个字符。如ab,a1,

a_b都是合法标识符,而1_a,b-a为非法的标识符。

?不能使用VBA的关键字。如Private,Sub,End,If等都不能定义为变量或常量名。

?常量或变量的名称,其字母不区分大小写。如XYZ,xyZ认为是同一标识符。

2.数据类型

数据类型的定义:在具有共性的数据集合上定义了若干封闭的运算,这就构成了一个数据类型。因此数据类型的两个要素是数据集合和其上的运算。但值得注意的是,对于不同数据类型的数据,一般情况下是不能直接进行运算的,应该进行某种数据类型转换,将不同的数据类型转换成相同的数据类型。

数据类型决定数据的存储方式,包括数据的大小、有效位、是否有小数点。在表8-1列出了VBA中提供的基本数据类型。

表8-1 VBA中常量的类型

3.常量

常量是指在程序运行过程中保持不变的数据。主要分为值常量和符号常量两大类。

(1)值常量

直接在程序中使用的常量值。各种数据类型都有直接使用的常量但表示方式同。

①整型常量:十进制整型常量,如123,-56等。

②字符型常量:在程序代码中,用双引号括起来的字符串,称为字符串常量。

如:”Welcome”。需要注意的是,””表示空字符串,即双引号之间没有任何字符。

③实型常量:包括单精度和双精度浮点数常量。如1.2345,-2.187E+8。

④布尔型常量:布尔型又称为逻辑型,只有True和False两种取值。

⑤货币类型常量:用通常的小数来表示,如3.1897。使用时,必须注意,它只能

精确到小数点后4位。

⑥日期型常量:以符号“#”括起来的任何在字面上可被认作日期和时间的字符。如:

#2009-9-15 23:00:08#。

(2)符号常量

给某个常量值指定一个有意义的名称,这个名称就代表这个常量。符号常量有两类:一类是用户定义的常量;另一类是系统提供的VBA常量。

用户定义的符号常量,其定义语句如下:

Const 符号常量名[As 类型]= 常量值

如:

Const PI=3.1415926 或Const PI as Double =3.1415926

Const SysStr=”系统提示”

在此需要强调如下内容:在程序中符号常量不能进行二次赋值,这是它与变量不同的地方。如下面的程序是错误的。

Const PI=3.1415826

PI=3.1415926

在这两个语句中,尽管看上去符号常量PI的值似乎没有变化,但是却先后两次对符号常量PI进行了赋值,这是VBA所不允许的。

在VBA中,除了符号常量之外,还有系统常量。限于篇幅,本章中就不再加以更多的介绍,读者可以根据需要查询相关的开发手册。

8.1.2变量

在程序的运行的过程中,其值可以发生变化的量称为变量。变量用于暂时存储程序运行中所产生的一些中间值。几乎所有的VBA程序都离不开变量。同一个程序中,任意两个不同的变量都不能使用相同的名字,这就如同一个学校中任意两个机房都不能使用相同的编号;每一个变量中的内容在某一时刻可能被更替,这就如同机房中的学生可能会换人一样;变量与变量之间的类型未必完全相同,这就如同机房中的学生与学生的年级或专业也未必是一样的。

变量的命名规则与常量的命名规则完全一致,这里不再重复。

1.变量的类型

变量的类型和常量的类型是一致的。下面对其中常用的几种变量进行说明。

(1)对于单精度和双精度型变量,所取的有效值范围并不十分精确。其原因在于计算

机的存储空间是有限的,所以计算机所存放的数据的位数也是有限的。这样就不可能表示出无限趋近于0的实数。

(2)对于布尔型的变量,通常用True和False两个值来表示其结果。但是有时候也用整数来表示。True值用非0的整数(一般是-1)来表示。False值用0来表示。这样,布尔型变量也可以参加数值的运算。但是在布尔型变量中非0的数据按-1取值。请看下面的例子。

例8.1 通过圆的半径求圆的面积。

Private Sub Command1_Click()

Dim r As Single …定义一个单精度类型变量r

Const PI=3.1415926 …定义一个符号常量PI

r = 4 …对r进行赋值,r的值是4

Me.text1.SetFocus …名称为text1的文本框获得焦点

Me.text1.Text = PI * r^2 …将圆面积的计算结果在text1中显示出来End Sub

在程序中,撇号后面的文字为注释内容,其作用是为了增加程序的可读性,是给编程人员看的,计算机在运行程序时并不执行。在该例中,程序的运行结果为,如图8-1所示。

图8-1 例8.1程序运行结果

下面将程序稍作修改,如下:

Const PI=3.1415926 …定义一个符号常量PI

Private Sub Command1_Click()

Dim r As Boolean …定义一个布尔类型变量r

r = 4 …对r进行赋值,r的值是4

Me.text1.SetFocus …名称为text1的文本框获得焦点

Me.text1.Text = PI * r^2 …将圆面积的计算结果在text1中显示出来End Sub

但是运行结果有了差别,其结果为3.14。这中间的差别就在于变量r已经改成了布尔类型变量,由于初值是4(非0),所以在运算中按-1取值。如果r值为0,则运算结果也为0。

(3)在VBA中,数值型变量和字符串型变量之间是不能直接进行赋值的,但是不同类型的符号常量和变量之间则可以直接赋值,如例8.2所示。

例8.2将实型常量23.56分别赋给整型变量和字符串变量。

Const ax = 23.56

Private Sub Command1_Click()

Dim s as Integer

Dim g as String

Me.text1.SetFocus

s=ax

Me.text1.Text=s

Me.text2.SetFocus

g=ax

Me.text2.Text=g

End Sub

程序运行结果如图8-2所示。

图8-2 例8.2程序运行结果

由此可以看出:实型常量和整型变量之间的转换是按四舍五入的原则进行的,而实型常量和字符串变量之间的转换是一个单纯的赋值过程。

2.变量的定义

VBA为弱类型语言。它的变量可以不加定义而直接使用,但是这不利于程序的阅读。因此应该养成一个良好的习惯,在每次使用一个变量之前,都应该先对它进行定义。定义变量的方法有如下三种:

(1)使用类型符定义。使用类型符定义变量时,只要将类型符放在变量的末尾即可。如下例所示:

name$=”Jacky”

age%=19

grade!=85.5

在这里定义了三种变量,分别是字符串类型、整型和单精度类型。这里需要说明的问题有三个。

?对于字符串型变量来说,还可分为两种:定长字符串型和变长字符串型。在上面的

例子中定义的是变长型字符串。它的特点是可以将双引号中的内容全部显示出来。

定长字符串型变量的定义将在使用语句定义变量中讲到。

?作为单精度类型的变量类型符,在默认状态下可以省略。也就是说,一个变量如果

没有进行任何定义,则该变量是单精度类型变量。

?系统不允许对同一个变量进行两次不同类型的定义。

(2)使用Dim语句定义。也可以通过Dim语句对变量定义。Dim语句的格式如下:Dim 变量名AS 变量类型

下面是定义变量的几个例子:

Dim ax As Integer

Dim bx As Long

Dim cx As String

Dim dx as String * 8

这些例子分别定义了整型、长整型、变长字符串型和定长字符串型变量。在定义中,应该注意以下三点:

?定长字符串类型变量的定义方式。其格式如下:

Dim 变量名As String * n

其中,n代表整数,表示该字符串变量所包含的字符个数。如果n值小于字符的实

际长度,则变量中只存放该字符串的前n位;如果n值等于字符串的实际长度,则

该字符串全部存入变量中;如果n值大于字符串的实际长度,则将该字符串全部存

入变量中后,不足的位数用空格填补。如例9.3中示例了n值大于和小于字符串实

际长度的情况。

例8.3变量的定义示例。

Private Sub Command1_Click()

Dim ax As String * 6

Dim bx As String * 6

ax = "Wel"

Me.Text1.SetFocus

Me.Text1.Text = ax & "come"

bx = "Welcome"

Me.Text2.SetFocus

Me.Text2.Text = bx

End Sub

程序结果如图8-3所示。

图8-3 例8.3程序运行结果

由图可以很清楚地看到,在text1中字符串”Wel”和字符串”come”之间存在空格。这

样说明,定长字符串型变量是依靠空格来补足字符串位数的。在text2中截掉了字

符串”Welcome”的最后一位字符。

?在Dim语句中,变量名的后面不能加类型符号。如下面的做法是错误的。

Dim ax$ As String

?一个Dim语句中,可以声明多个变量,变量名之间用逗号作间隔。如:

Dim ax As Integer, bx As Double

Dim ax, bx as Double

8.1.3表达式

表达式是由运算符、函数和数据等内容组合而成的。在VBA的编程中,表达式是不可缺少的。根据表达式中的运算符的类型,通常可以将表达式分成五种:算术表达式、关系表达式、逻辑表达式、字符串表达式和对象表达式。

1.运算符和表达式

(1)算术运算符。算术运算符用于数值的计算。常用的算术运算如表8-2所示。由算术运算符和数值构成的表达式称为算术表达式。

表8-2 算术运算符

对于以上几种算术运算符,只需要对整除运算符和求余运算符进行说明。对于整除运算符,如果被除数和除数都是整数,则取商的整数部分。如果被除数和除数有一个是实数,则先将实数四舍五入取其整数部分,再求商,求商的过程与整数之间整除求商相同。对于求余运算符,如果被除数和除数都是整数,则直接求两者的余数。如果被除数和除数至少有一个是实数,则先将实数四舍五入取其整数部分,再求余。

算术运算符之间存在优先级,它们之间的优先级决定算术表达式的运算顺序的原则,其优先关系如上表9.2所示,从上到下,优先级从高到低。其中括号运算符高于上述所有算术运算符。

例8.4 求-2 + 4 * 3 mod 2 * 2 ^ 3 \ 3

计算过程如下:

1)求算式2^3的结果,结果为8,所以原式化为:-2 + 4 * 3 mod 2 * 8 \ 3

2)求算式4*3的结果,结果为12,原式进一步化为:-2 + 12 mod 2 * 8 \ 3

3)求算式2*8的结果,结果为16,原式进一步化为:-2 + 12 mod 16 \ 3

4)求算式16\3的结果,结果为5,原式进一步化为:-2 + 12 mod 5

5)求算式12 mod 5的结果,结果为2,原式进一步化为:-2 + 2

6)求出最终结果为:0

(2)关系运算符。关系运算符用于在常数以及表达式之间比较,从而构成关系表达式。其运算结果只能有两种可能,真(True)或假(False)。VBA中的关系运算符如表8-3所示。

这6个关系运算符的优先级是相同的,但是比算术运算符的优先级低。如果它们出现在同一个表达式中,按照从左到右的顺序依次运算。

在这里有一点要说明,VBA是以Basic语言为基础的,所以其赋值号和等于号用的都是“=”符号,因此要能够从“=”所出现的位置来判断其代表的真正含义。大致来说,“=”作为等号出现时,一般是包含在其他语句中,而“=”作为赋值号出现时,常作为单独的赋值标记。例如:

a=8

b=9

c=15

print a + b = c

在这个程序的前三行中,“=”均作为赋值号出现,作用是把8、9和15这三个数值分别赋给变量a、b和c。计算机执行了这三个语句之后,变量a、b和c的值就都由0分别变成了8、9和15。在本程序的第四行,“=”是作为等号出现的。Print的作用是打印输出表达式a + b = c的结果。在这个等式的左边结果是17,右边结果是15。很显然,等式不成立,返回一个假值。所以打印的结果为False。

(3)逻辑运算符。逻辑运算符被称作布尔运算符,用来完成逻辑运算。逻辑运算符和数值组成的表达式称为逻辑表达式。常用的逻辑运算符有`“非”运算符(Not)、“与”运算符(And)和“或”运算符(Or)。其运算关系如表8-4所示(其中T表示True,F表示False)。

Not > And > Or

除此之外,还有一些不常用的逻辑运算符,例如:异或运算符(Xor)、等价运算符(Eqv)和蕴含运算符(Imp)等。如有需要可查阅相关手册。

(4)字符串连接符。在VBA中,字符串连接符有两个,分别是“+”和“&”。用于连接字符串,从而构成字符串表达式,它们的作用相同。例如:

a$ = ”Wel”

b$ = ”come”

c$ = a$ & b$

则字符串变量c$所存放的内容是字符串”Welcome”。“+”符号的用法与“&”是相同的。

(5)对象运算符。在VBA中,对象运算符有两个,分别是“!”和“.”,用于引用对象或对象的属性,从而构成对象表达式。

符号“!”的作用是随后为用户定义的内容,如:

Form![学生成绩单]

这里所表示的是打开“学生成绩单”窗体。

符号“.”的作用是随后为Access定义的内容,如:

Cmd.Caption

这里所表示的是引用命令按钮Cmd的Caption属性。

2.标准函数

在VBA中,系统提供了一个比较完善的函数库,函数库中有一些常用的且被定义好的函数供用户直接调用。这些由系统提供的函数称为标准函数。实际上,函数也可以看作是一类特殊的运算符。

(1)数学函数

数学函数与数学中的定义一致,如表8-5所示。

表8-5 常用数学函数

说明:

①函数的参数可以是常量、变量或含有常量和变量的表达式。如:

Dim a, b As Single

a = 3.1415926

b = Sin(a / 4)

②标准函数不能脱离表达式而独立地作为语句出现。

③对于随机函数Rnd,返回的是[0,1)范围内的双精度数。该随机数的产生取决于称为种子(Seed)的初值。在默认的情况下,每次运行应用程序,VB都提供相同的种子,即如果把同一个程序运行多遍,则每次产生的随机数相同,有时为了产生不同的随机数,可以采用Randomize语句。

格式为:Randomize [number],其中number用来给随机数生成器初始化,这个参数可以省略。

(2)转换函数

转换函数用于在不同类型操作数间的转换,如表8-6所示。

表8-6 常用转换函数

(3)字符串函数

字符串函数主要用于对字符串的查找、定位等操作,如表8-7所示。

表8-7 字符串函数

(4)日期函数

常用日期函数如表8-8所示。

表8-8 日期函数

格式输出函数可以使用Format与Print语句实现,它可以使数值、日期或字符串按指定的格式输出,其中Format使用更为广泛,其格式为:

Format(表达式,[格式字符串])

表达式:要格式化输出的数值、日期和字符串类型表达式。

格式字符串:指定的样式。

①数值格式化输出

格式字符串是一个串常量或串变量,由专门的格式说明字符组成,这些字符决定了数据项的显示格式和长度,如表8-9所示。

表8-9 格式说明字符

字符作用字符作用

# 数字,不在输出前后补0 % 百分比符号

0 数字,在输出前后补0 $ 美元符号

. 小数点+,-正、负号

, 千分位分隔符E+,E- 指数符号

?#:表示一个数字位,如果要显示的数据位数多于#号个数,则保持原位数显示,若

少于#号个数,则在指定区域内左对齐显示数据项。

?0:与#功能相同,但当要显示的数据位数少于0的个数时,多余的位在高位以0

补齐,再左对齐显示该数据项。

?小数点:小数点与#或0结合使用,可以放在格式字符串的任何位置,根据格式字

符串的位置,小数部分多余的数字按四舍五入处理。

?逗号:在格式字符串中插入逗号,起到“分位”作用,即数据项从小数点左边一位开

始,每3位用一个逗号分开,因此又称“千位分隔逗点”。

?%:百分号,通常放在格式字符串的尾部,用来输出百分号。

?$:美元号,放在格式字符串的首部,输出的数字前面加上美元符号。

?+,-:正、负号,放在格式字符串的首部,为输出数据添加正、负号。

②日期和时间格式化

日期和时间格式化是将日期类型表达式的值或数值表达式的值以日期、时间的序数值按“格式字符串”指定的格式输出。有关格式如表8-10所示。

表8-10 常用日期和时间格式字符

8.1.4顺序结构

顺序结构是一种最简单的算法结构,也是程序设计中最简单、最常用的基本结构。其特点是:算法的每一个操作按照各自出现的先后顺序从上到下线性执行。

赋值语句

赋值语句是编程中最重要的、使用最频繁的语句。用赋值语句可以把指定的值赋给某个

变量或设置某个对象的属性,它是为变量和对象属性赋值的主要办法。其格式:变量= 表达式

在使用赋值语句时应当注意:“=”为赋值运算符,应该理解成“把表达式的值赋给变量”。右边表达式可以是常量值,可以是变量,可以是函数等,也可以是各种运算符连接起来的复杂表达式。赋值符号的左边必须是变量,不能是常量或表达式,只有变量才能接受值。

如:

x = 15

x = x +1

s = “WelCome”

形如x = x +1的赋值语句,如果反复的执行,那么每执行一次此语句,x的值就递增1,这样起到了计数的作用。

8.1.5选择结构

1.行if 结构

这是VBA中最常用的一个语句,它和人们思维习惯是一致的。其语句格式有如下两种:(1)If <条件> Then <语句1>

其含义是:如果(if)条件成立,那么(then)执行语句1;如果条件不成立,则该if 语句不被执行。

(2)If <条件> Then <语句1> Else <语句2>

其含义是:如果(if)条件成立,那么(then)执行语句1;否则(Else),即条件不成立执行语句2。

在行If语句中,应当注意的是条件语句的嵌套使用。如果程序中有两个或两个以上的Else,那么每一个Else应当和哪个If … Then 进行匹配呢?在VBA中规定,每一个Else与它前面、最近的且没有被匹配过的If … Then 配对。

例8.5向一个文本框中输入成绩,单击“判断”按钮,在另一个文本框中显示是否及格。

程序如下:

Private Sub Command1_Click()

Dim ax As Single

Me.Text1.SetFocus

ax = Me.Text1.Text

Me.Text2.SetFocus

If ax >= 60 Then Me.Text2.Text = "及格" Else Me.Text2.Text = "不及格"

End Sub

程序结果如图8-4所示。

图8-4 例8.5程序运行结果

2.块If语句

在行If语句中,如果针对某一个执行条件需要编写多条语句,那么就需要用块If语句来完成。块If语句的格式有如下两种。

第一种为常用的、非嵌套的块If语句,语法格式为:

If <条件> Then

<语句组1>

[ Else

<语句组2> ]

End If

当条件为真时,执行语句组1;当条件为假时,执行语句组2。其中一对[ ]表示可以省略Else子句,只存在条件真时执行。

第二种为嵌套的块If语句。其功能和下面将要介绍的多分支选择结构Select Case的功能相同,可以对多个条件进行判断。

If <条件1> Then

<语句组1>

Elseif <条件2> Then

<语句组2>

……

Elseif <条件n> Then

<语句组n>

[ Else

<语句组n+1> ]

End If

该语句执行的过程是这样的:按条件出现的顺序依次判断每一个条件,发现第一个成立的条件后,则立即执行与该条件相对应的语句组。然后跳出该条件语句,去执行End If 之后的第一条语句。即便有多个条件都成立,也只是执行与第一个成立的条件相对应的语句组。如果所有的条件都不成立,则看是否存在Else子句,如果存在,则执行Else对应的语句组(即语句组n+1),否则直接跳出条件语句,去执行End If之后的第一条语句。

例8.6根据输入的学生成绩(100分制)判断它属于哪个等级。等级划分如下:0~59为不及格;60~69为及格;70~89为良好;90以上为优秀。

程序如下:

Private Sub Command1_Click()

Dim ax As Single, bx As String

Me.Text1.SetFocus

ax = Me.Text1.Text

Me.Text2.SetFocus

If ax > 100 Then

bx = "不合理的成绩"

ElseIf ax >= 90 Then

bx = "优秀"

ElseIf ax >= 70 Then

bx = "良好"

ElseIf ax >= 60 Then

bx = "及格"

ElseIf ax >= 0 Then

bx = "不及格"

Else

bx = "不合理的成绩"

End If

End Sub

程序结果如图8-5所示。

图8-5 例8.6程序运行结果

3.Select Case 语句

在VBA中,还提供了一种专门面向多个条件的选择结构,称为多分支选择结构。其采用Select Case 语句,语法格式如下:

Select Case <表达式>

Case 值1

语句组1

Case 值2

语句组2

……

Case 值n

语句组n

[ Case Else

语句组n + 1 ]

End Select

该语句的执行过程是:首先对表达式的值进行计算,然后将计算的结果和每个分支的值进行比较,一旦发现某个分支的值和表达式的值匹配,则执行该分支所对应的语句组,执行完成后立即跳出该选择结构,即便在该分支之后还有其他分支的值符合条件,也不再对程序的运行产生影响。如果所有分支后面的值均不与表达式的值相匹配,则看存不存在Case Else 项,如果存在,则执行Case Else项对应的语句组,否则跳出该分支结构。

Case项后面的值可以有如下三种形式:

(1)可以是单个值或者是几个值。如果是多个值,各值之间用逗号分隔。

(2)可以用关键字To来指定范围。如:Case 2 To 6,表示2~6之间的整数。

(3)可以是连续的一段值。这时要在Case后面加Is。例如:Case Is >5,表示大于5的所有实数。

例8.7将上述例8.6的操作用Select Case实现。

程序如下:

Private Sub Command1_Click()

Dim ax As Single

Dim bx As String

Me.Text1.SetFocus

ax = V al(Me.Text1.Text)

Me.Text2.SetFocus

Select Case ax

Case Is > 100

bx = "不合理的成绩"

Case Is >= 90

bx = "优秀"

Case Is >= 70

bx = "良好"

Case Is >= 60

bx = "及格"

Case Is >= 0

bx = "不及格"

Case Else

bx = "不合理的成绩"

End Select

Me.Text2.Text = bx

End Sub

程序运行结果与例8.6相同,由此程序可以看到:当可能出现的情况多于两种时,使用Select Case 语句要比使用If语句更加方便。

8.1.6 循环结构

1.For循环结构

For循环结构是一种常用的循环结构,在已知循环次数的前提下,通常使用For循环来完成操作。它的格式如下:

For <循环变量> = <初值> to <终值> [Step 步长]

循环体

Exit For

Next [循环变量]

该循环结构所执行的过程是这样的:首先将初值赋给循环变量,然后判断它是否超出了初值与终值之间的范围,如果超出了这个范围,则不执行循环体,直接跳出循环。如果没有超出这个范围,则执行循环体中的内容。执行完循环体后,将初值与步长相加后,结果赋给循环变量,然后再对当前的循环变量值进行判断,看它是否在初值与终值的范围之间。上述过程不断重复,直到循环变量的值超出了初值和终值之间的范围,跳出循环为止。

在该循环结构中,需要说明3点。

(1)当步长值为1时,可以省略步长的说明。如:

For I = 1 to 7

Print I

Next I

在此循环中,循环变量每次的增量是1,所以不需要加步长说明。

(2)步长既可以是正数,也可以是负数;既可以是整数,也可以是小数。

(3)如果想要提前跳出循环,可以使用Exit For语句。该语句通常和If语句连用。通过预先设定的条件,来判断是否提前跳出循环。

例8.8求1~100之间所有奇数之和。

程序如下:

Private Sub Command1_Click()

Dim i As Integer, S As Integer

For i = 1 To 100 Step 2

S = S + i

Next i

Me.Text1.SetFocus

Me.Text1.Text = S

End Sub

程序结果如图8-6所示。

图8-6 例8.8程序运行结果

2.Do循环条件

Do循环结构也是一种常用的循环结构。该循环结构可以在不知道循环次数的前提下,通过对循环条件的判定,来控制循环的执行。

Do循环结构的格式有如下:

格式1:Do [ While | Until <条件> ]

[<循环体>]

[Exit Do]

Loop

格式2:Do

[<循环体>]

[Exit Do]

Loop [ While | Until <条件> ]

功能:当循环“条件”为真(While条件)或直到指定的循环结束“条件”为真之前(Until<

条件>)重复执行循环体。

说明:

(1)While是当条件成立时执行循环,而Until则是在条件成立时结束循环。

(2)当只有Do和Loop两个关键字时,其格式简化为:

Do

[<循环体>]

Loop

此为永真循环,为使循环能正常结束,循环体中必须使用Exit Do语句在满足一定条件下终止循环。

例8.9将例8.8用Do循环实现。

程序如下:

Private Sub Command1_Click()

Dim i As Integer, S As Integer

i=1

Do While i<=100

S = S + i

i = i + 2

Next i

Me.Text1.SetFocus

Me.Text1.Text = S

End Sub

8.1.7 数组

数组是指若干个相同类型的元素的集合。

在VBA中,按照维数分类,数组可以分为一维数组和多维数组;按照类型分类,数组可以分为整型数组、实型数组和字符串型数组等。

(1)对于一维数组,定义格式如下:

Dim 数组名(数组下限To 数组上限)As 数组类型

Dim 数组名[类型符号](数组下限To 数组上限)

例如:

Dim a(-2 to 2)As Integer

表示该数组元素为整型,在-2~2之间有5个元素。

Dim b$(3 to 9)

表示该数组元素为字符串型,在3~9之间有7个元素。

(2)对于二维数组,定义格式如下:

Dim 数组名(一维下限To 一维上限,二维下限To 二维上限)As 数组类型

Dim 数组名[类型符号](一维下限To 一维上限,二维下限To 二维上限)当然,在其它教程中,还有如下的简略定义方式:

Dim 数组名[类型符号](n)

Dim 数组名[类型符号](m,n)

这是对一维数组和二维数组的简略定义。其中n和m都是整数,表示数组中某一维的上限,其下限默认值为0。但是如果在定义数组之前,使用了Option Base 1语句,则数组下限为1。

对于数组的使用而言,一般来说,数组通常和循环配合使用。对于数组的操作就是针

对数组中的元素进行操作。数组中的元素在程序中的地位和变量是等同的。

例8.10求数列1,1,2,3,5,8……的第40项。

解题思路:题中所给的数列很显然具有一定的规律。除了前两项外,数列的每一项都等于其前两项之和。即:a(n) = a(n -1) + a(n – 2)。在找到规律之后,就不难数用数组来解决了。

其程序如下:

Dim a(40) As Long

a(1) = 1

a(2) = 1

For i= 3 To 40

a(i) = a(i -1) + a(i– 2)

Next i

Me.Text1.Text = a(40)

程序的运行结果如图8-7所示。

图8-7 例8.10程序运行结果

8.1.8 过程与函数

1.Sub子程序

Sub子程序的功能是将某些语句集成在一起,用于完成某个特定的功能,Sub子程序也称为过程。一般来说,子程序都是要包含参数的。通常它是依靠参数的传递来完成相应的功能。当然,也有些特殊的子程序不加参数,但在这种情况下,它们所得到的结果都是固定的,不具备很强的通用性。子程序的格式如下:

[Private|Public|Static] Sub 过程名([参数[As 类型],…])

[语句组]

[Exit Sub]

[语句组]

End Sub

其中,Private和Public用于表示该过程所能应用的范围;Static用于设置静态变量;Sub 代表当前定义的一个子程序;过程名后面的参数是虚拟参数,简称虚参,有时候也称为形式参数。虚参和形参中是叫法不同,但表示的是同一个含义。虚参的作用是用来和实际参数(简称为实参)进行虚实结合。这样,通过参数值的传递来完成子程序与主程序之间的数据传递。

在参数传递过程中,涉及到值传递、地址传递的问题。值传递中,实参为常数,实参和虚参各自占用自己的内存单元。这样,实参可以影响虚参,但是虚参不能影响实参;地址传递中,实参是变量,实参和虚参共用同一个内存单元。也就是说实参和虚参可以互相影响。

2.Function函数

在VBA中,除了系统提供的函数之外,还可以由用户来自行定义函数。函数和子程序在功能上是略有不同的。主程序调用子程序后,是执行了一个过程;主程序调用Function 函数后,是得到了一个结果。Function函数的定义格式如下:

[Private|Public|Static] Function 过程名([参数[As 类型],…])[As 类型]

[语句组]

[Exit Function]

[语句组]

End Function

Function函数的定义格式中,各个关键字的含义与Sub子程序中对应的关键字的含义相同,对于初学者要特殊注意一点:由于Function函数有返回值,所以在Function函数的函数体中,至少要有一次对函数名进行赋值。这是Function函数和Sub子程序的根本区别。

3.Property过程

Property过程主要用来创建和控制自定义属性,如对类模块创建只读属性时,就可以使用Property过程。该过程的定义格式如下:

[Private|Public|Static] Property {Get|Let|Set} 属性名[参数[As 类型]]

[语句组]

End Property

关于Property过程的具体使用方法,涉及到的内容较多,本书限于篇幅,只在类这一部分中有粗略的介绍,读者如有兴趣深究,可以参阅相关开发手册。

8.1.8 文件

为了有效地存取数据,数据必须以某种特定的方式存放,这种特定的方式称为文件结构。在VBA文件中,用字段来表示一个数据项,由一组相关的字段构成一条记录,若干条记录构成了文件。

划分文件类型的原则有很多,如果按照文件的存取方式和结构来划分,文件可以分为两种类型:顺序文件和随机文件。

顺序文件的结构很简单,文件中的记录按照写入文件的顺序一个接一个地存放,但是每条记录的长度是不固定的,因此对顺序文件中的某条记录进行操作时,就需要将整个顺序文件都读入内存,修改完再重新写入磁盘。所以说,顺序文件的维护过程相当麻烦。

随机文件也叫做直接文件,在随机文件中,每一条记录的长度是固定的,记录中每个字段的长度也是固定的。而且,随机文件中每一条记录都具有一个记录号。所以在读取随机文件时,就可以直接访问文件中的某一条记录。

在VBA中,也存在对文件操作的访问。

打开文件的语句如下:

Open 文件说明For 方式As 文件号[Len = 记录长度]

格式中的Open、For 、As、Len为关键字。

文件说明:用于指明所操作的文件的路径以及文件名。

方式:用于指定对文件的输入及输出方式,可以是下述操作之一。

Output:指定顺序文件的输出方式,即对顺序文件进行写操作。在该方式下,如果对一个已有文件进行操作,首先将会清空该文件原来的内容,然后再写入新的数据;

如果对一个原本不存在的文件进行操作,则系统会自动创建一个新文件。

?Input:指定顺序文件的输入方式,即对顺序文件进行读操作。如果指定的文件名

不存在,程序将会出错。

?Append:指定顺序文件的输出方式,即对顺序文件进行写操作。它和Output方式

有所不同,Append方式只是在原来的文件末尾追加记录,不会删除该文件中原来

已有的内容。

?Random:指定随机存取方式,也是默认方式。在该方式下,如果不加其他限定,

既可以对文件进行读操作,也可以对文件进行写操作。

?Binary:指定二进制方式文件。该方式和Random方式相似。

关闭文件语句如下:

Close [文件号] [,文件号]

在关闭语句中,如果要一次关闭所有的文件,Close后面什么都不用加即可。

顺序文件读写语句如下:

Input:读入数据

Print:写入数据

Write:写入数据

随机文件读写语句如下:

Put:写入数据

Get:读入数据

有关文件方面的内容还有很多,诸如某些判定函数、文件指针等,

8.2 VBA中的面向对象编程

在上一节讲述了VBA的语法部分,这为编写正确且有效的VBA程序奠定了基础。本节将进一步深入地学习VBA,对VBA中的开发环境、面向对象编程以及VBA中的高级应用加以阐述。

8.2.1 VBA的开发环境VBE

VBE是VBA程序的开发环境,在Access中进入到VBE环境下有几种方法。

在窗体或者报表中,进入VBE环境有两种方法。一种方法是在设计视图中打开窗体或者报表,然后单击工具栏上的“代码”按钮。另一种方法是在设计视图中打开窗体或者报表,然后在某个控件上单击鼠标右键,系统将弹出“选择生成器”对话框,在该对话框中,选择其中的“代码生成器”项,然后单击“确定”按钮即可。

在窗体或者报表之外,进入VBE环境也有两种方法。一种方法是单击“工具”菜单下的“宏”命令中的“Visual Basic 编辑器”子命令。另一种方法是选择数据库窗口下的“模块”对象,然后单击“新建”按钮。

8.2.2 事件驱动程序的编写及程序的调试

1.事件驱动程序的编写

事件驱动是面向对象编程和面向过程编程之间的一大区别,在视窗操作系统中,用户在操作系统下的各个动作都可以看成是激发了某个事件。比如单击了某个按钮,就相当于激发了该按钮的单击事件。在Access系统中,事件主要有:鼠标事件、键盘事件、窗口事件、对象事件和操作事件等。

键盘事件:

(1)KeyPress事件:每敲击一次键盘,激发一次该事件。该事件返回的参数KeyAscii 是根据被敲击键的Ascii码来决定的。如回车键的Ascii是13,A和a的Ascii码分别是65和97,则敲击它们时的KeyAscii返回值不同。

(2)KeyDown事件:每按下一个键,激发一次该事件。该事件下返回的参数KeyCode 是由键盘上的扫描码决定的。如A和a的Ascii码分别是65和97,则敲击它们时的KeyAscii 返回值相同。

(3)KeyUp事件:每释放一个键,激发一次该事件。该事件的其他方面与KeyDown 事件类似。

鼠标事件:

(1)Click事件:单击事件。每单击一次鼠标,激发一次该事件。

(2)DblClick事件:双击事件。每双击一次鼠标,激发一次该事件。

(3)MouseMove事件:鼠标移动事件。

(4)MouseUp事件:鼠标释放事件。

(5)MouseDown事件:鼠标按下事件。

窗口事件:

(1)Open事件:打开事件。

(2)Close事件:关闭事件。

(3)Activate事件:激活事件。

(4)Load事件:加载事件。

对象事件:

(1)GotFocus事件:获得焦点事件。

(2)LostFocus事件:失去焦点事件。

(3)BeforeUpdate事件:更新前事件。

(4)AfterUpdate事件:更新后事件。

(5)Change事件:更改事件。

操作事件:

(1)Delete事件:删除事件。

(2)BeforeInsert事件:插入前事件。

(3)AfterInsert事件:插入后事件。

下面以VBA中的几个事件为例来完成一个小的程序。

例8.11单击“复制”按钮后,在第一个文本框中每输入一个字符,在另一个标签框显示和第一个文本框相同的内容。程序如下:

Option Compare Database

Private Start As Boolean

Private Sub Command1_Click()

Start = True

End Sub

Private Sub Form_Load()

Start = False

End Sub

Private Sub Text1_Change()

If Start = True Then

https://www.doczj.com/doc/ff10425254.html,bel1.Caption = Me.Text1.Text

End If

第八章 库存管理

第八章库存管理 一、多项选择题 1.订货成交的三个决定因素是()。 A交货期B价格C性能D质量E订货量 2.生产期的构成要素有()。 A市场调研期限B工程设计期限C物料供应期限D产品生产周期E产品销售周期 3.下列表述正确的有()。 A交货期/生产期≥1时,企业可以运作在订货生产方式下,生产系统可以灵活地适应产品结构的变化,产量的变化,以及顾客的定制要求 B交货期/生产期≥1时,企业要适应顾客要求,就只能运作在备货生产方式下,就不得不储备大量产成品存货,以应顾客订货之需 C交货期/生产期<1时,企业要适应顾客要求,就只能运作在备货生产方式下,就不得不储备大量产成品存货,以应顾客订货之需 D交货期/生产期<1时,企业可以运作在订货生产方式下,生产系统可以灵活地适应产品结构的变化,产量的变化,以及顾客的定制要求 4.库存信息主要包括()。 A现有库存量B预计入库量C提前期D订购批量 E安全库存量 二、单项选择题: 1、下列适合独立需求的库存管理系统有:() A:连续观测系统;B:MRP;C:JIT 1、存控制模型不应考虑的费用有:() A:库存物质的价值;B:库房折旧;C:销售成本 2、关型需求的库存控制方法可以是()。 A:JIT;B:连续观测系统;C:随机型控制模型;D:定时观测系统 3、下列适合独立需求的库存管理系统有:() A:连续观测系统;B:MRP;C:JIT 4、库存控制模型应考虑的费用有:() A:库存物资的价值;B:库房折旧;C:销售成本 三、判断题: 1、服务水平越高,安全库存量越小,所花的代价也越小。

2、所谓固定量系统就是订货点和订货间隔都为固定量的库存控制系统。 3、固定量系统需要随时监视库存变化,对于物资种类很多且订货费用较高的情况比较经济。 四、填空题; 1、物资储备定额由两部分构成:()和(),企业的最高储备定额是()和()之和,最低储备定额是()。 2、大量生产中,在制品占用量分为()和()两大类,前者又可分为(),后者可分为()。 五、简答题: 1、画出有两个折扣点的价格折扣模型的费用曲线图,对各段进行最小费用订货批量选择分析。 2、独立需求的本质含义? 3、推导经济订货批量计算公式。 4、试说明随机服务系统的构成 5、简述库存的连续观测系统与定期观测系统的基本概念及内容。 6、简述库存控制的方法及应用特征。 7、简述库存系统的两种观测系统 8、试说明库存的连续观测系统与定期观测系统的基本概念及内容. 9、试推导出瞬时进货的经济订货批量模型的经济批量与最小费用计算公式. 10、简述连续与定期观测系统的模型特征 11、库存控制的主要对象属什么库存类型,为什么。 12、简述安全库存与服务水平的关系。 13、简述经济批量法的基本模型和原理。 14、试推出经济制造批量的公式,并图示说明。 15、简述两种库存控制系统的基本原理。 16、什么是库存,它的作用是什么。 17、不同种类的库存问题各有什么特点。 18、哪些费用岁库存量增加而上升,哪些费用虽库存量增加而减少。 19、3中典型的库存控制系统的控制机制是什么。 20、EOQ模型有哪些假设条件。 六、计算题: 1、某公司每年要按单价10元购买5400套轴承组合件。单位维持库存费为每年每套轴承8元,每次订购费用为30元。试求经济订货批量和年订货次数。

第八章 供应链管理环境下的库存控制

第八章供应链管理环境下的库存控制 作者:马士华 供应链管理环境下的库存控制问题是供应链管理的重要内容之一,且由于企业组织与管理模式的变化,它同传统的库存管理相比有许多新的特点和要求。本章论述供应链管理环境下库存管理中出现的新问题,从系统理论、集成理论的角度出发,提出了适应供应链管理的新的库存管理策略与方法。这些策略与方法集中地体现了这么一种思想:通过加强供应链管理环境下的库存控制来提高供应链的系统性和集成性,增强企业的敏捷性和响应性。这些方法与策略体现了供应链管理的新思维和新思想,并且具有实用性和可操作性。 本章第一节介绍一些库存管理的基本原理和方法;第二节分析供应链管理模式下库存管理出现的新问题;第三节按照供应链管理的集成度演变发展过程分别提出几种库存管理的

方法和策略,如VMI管理系统、联合库存管理、多级库存优化等;第四节提出了供应链库存管理的新理念:工作流管理,它是使供应链真正实现无缝连接的战略性措施。 第一节库存管理的基本原理和方法 "库存",在英语里面有两种表达方式:Inventory和Stock,它表示用于将来目的的资源暂时处于闲置状态。一般情况下,人们设置库存的目的是防止短缺,就象水库里储存的水一样。另外,它还具有保持生产过程连续性、分摊订货费用、快速满足用户订货需求的作用。在企业生产中,尽管库存是出于种种经济考虑而存在,但是库存也是一种无奈的结果它是由于人们无法预测未来的需求变化,才不得已采用的应付外界变化的手段,也是因为人们无法使所有的工作都做得尽善尽美,才产生一些人们并不想要的冗余与囤积-不和谐的工作沉淀。 在库存理论中,人们一般根据物品需求的重复程度分为单周期库存和多周期库存。单周期需求也叫一次性订货,这种需

第七章 供应链环境下的库存控制

第八章供应链管理环境下的库存控制 供应链管理环境下的库存控制问题是供应链管理的重要内容之一,且由于企业组织与管理模式的变化,它同传统的库存管理相比有许多新的特点和要求。这些策略与方法集中地体现了这么一种思想:通过加强供应链管理环境下的库存控制来提高供应链的系统性和集成性,增强企业的敏捷性和响应性。这些方法与策略体现了供应链管理的新思维和新思想,并且具有实用性和可操作性。 第一节库存管理的基本原理和方法 一.库存的基本概念 "库存",它表示用于将来目的的资源暂时处于闲置状态。一般情况下,人们设置库存的目的是防止短缺,就象水库里储存的水一样。另外,它还具有保持生产过程连续性、分摊订货费用、快速满足用户订货需求的作用。在企业生产中,尽管库存是出于种种经济考虑而存在,但是库存也是一种无奈的结果它是由于人们无法预测未来的需求变化,才不得已采用的应付外界变化的手段,也是因为人们无法使所有的工作都做得尽善尽美,才产生一些人们并不想要的冗余与囤积-不和谐的工作沉淀。 在库存理论中,人们一般根据物品需求的重复程度分为单周期库存和多周期库存。单周期需求也叫一次性订货,这种需求的特征是偶发性和物品生命周期短,因而很少重复订货,如报纸,没有人会订过期的报纸来看,人们也不会在农历八月十六预订中秋月饼,这些都是单周期需求。多周期需求是在长时间内需求反复发生,库存需要不断补充,在实际生活中,这种需求现象较为多见。 多周期需求又分为独立需求库存与相关需求库存两种属性。所谓独立需求是指需求变化独立于人们的主观控制能力之外,因而其数量与出现的概率是随机的、不确定的、模糊的。相关需求的需求数量和需求时间与其他的变量存在一定的相互关系,可以通过一定的数学关系推算得出。对于一个相对独立的企业而言,其产品是独立的需求变量,因为其需求的数量与需求时间对于作为系统控制主体-企业管理者而言,一般是无法预先精确确定的,只能通过一定的预测方法得出。而生产过程中的在制品以及需要的原材料,则可以通过产品的结构关系和一定的生产比例关系准确确定。 独立需求的库存控制与相关需求的库存控制原理是不相同的。独立需求对一定的库存控制系统来说, 是一种外生变量,相关需求则是控制系统的内生变量。不管是独立需求库存控制还是相关需求库存控制,都要回答这些问题:(1)如何优化库存成本?(2)怎样平衡生产与销售计划,来满足一定的交货要求?(3)怎样避免浪费,避免不必要的库存?(4)怎样避免需求损失和利润损失?归根到底,库存控制要解决三个主要问题:(1)确定库存检查周期;(2)确定订货量;(3)确定订货点(何时订货)。 二、基本库存控制方法 下面针对独立需求库存和相关需求库存控制问题的特点,简要介绍各种基本库存控制方法。 (一)库存补给策略 因为独立需求库存控制采用的是订货点控制策略,因此我们首先介绍一下几种常见的库存补给策略。 订货点法库存管理的策略很多,最基本的策略有4种:①连续性检查的固定订货量、固定订货点策略,即(Q, R)策略;②连续性检查的固定订货点、最大库存策略,即(R, S)策略;③周期性检查策略,即(t, S)策略;④综合库存策略,即(t, R, S)策略。 在这4种基本的库存策略基础上,又延伸出很多种库存策略, 我们重点介绍4种基本的库存策略。 1. (Q, R)策略 图8-1为(Q, R)策略的示意图。该策略的基本思想是:对库存进行连续性检查,当库存降低到订货点水平R时,即发出一个订货,每次的订货量保持不变,都为固定值Q。该策略适用于需求量大、缺货费用较高、需求波动性很大的情形。 图8-1 连续性检查(Q, R)策略 2. (R, S)策略 该策略和(Q, R)策略一样,都是连续性检查类型的策略,也就是要随时检查库存状态,当发现库存降低到订货点水平R时,开始订货,订货后使最大库存保持不变,即为常量S,若发出订单时库存量为I,则其

职高数学基础模块下册第八章和第九章

数学竞赛二年级试卷 分值:120分 时间:120分 姓名: 班级: 一、选择题 1. 在正方体ABCD-A ’B’C’D’中,与棱AA ’异面的直线共有几条( ) A.4 B.6 C.8 D.10 2.已知直线()021:1=-++y x a l 与直线()0122:2=+++y a ax l 互相垂直,则实数 a 的值为( ) A. -1或2 B. -1或-2 C. 1或2 D. 1或-2 6.如果直线ax +2y+2=0与直线3x -y -2=0平行,则a 等于 ( ) A .-3 B .-6 C .2 3- D .3 2 3. 4张卡片上分别写有数字1,2,3,4,从这4张卡片中随机抽取2张,则取出的2张卡片上的数字之和为奇数的概率为( ) A.13 B.12 C.23 D.34 3.. 正方体ABCD-A ’B’C’D’中,异面直线CD ’和BC ’所成的角的度数是( ) A.45° B.60° C.90° D.120°

C C' D D'B' A' A B 、已知直线ax+by+c=0)0(≠abc 与圆x 2+y 2=1相切,则三条边长分别为|a|、|b|、|c|的三角形是 ( ) A 、锐角三角形 B 、直角三角形 C 、 钝角三角形 D 、不存在 67. 直线a 是平面α的斜线,b 在平α内,已知a 与b 成60°的角,且b 与a 在平α内的射影成45°角时,a 与α所成的角是( ) A.45° B.60° C.90° D.135° 5. 长方体的一个顶点上三条棱长分别是3,4,5,且它的8个顶点都在同一球面上,则这个球的表面积是( ) A .25π B .50π C .125π D .都不对 8. 如图,在正方体1111ABCD A B C D -中,E F G H ,,, 分别为1AA ,AB ,1BB ,11B C 的中点,则异面直线EF 与 GH 所成的角等于( ) A.45° B.60° C.90° D.120° 9. 已知两个平面垂直,下列命题 ①一个平面内的已知直线必垂直于另一个平面的任意一条直线; ②一个平面内的已知直线必垂直于另一个平面的无数条直线; ③一个平面内的任一条直线必垂直于另一个平面; ④过一个平面内任意一点作交线的垂线,则垂线必垂直于另一个平面. 其中正确的个数是( ) A.3 B.2 C.1 D. αb a O C B A A F D B C G E 1B H 1 C 1D 1A

CSL学习笔记第八章GPIO模块

第八章GPIO模块 8.1 概述 通过GPIO模块的设计以允许对C55x器件中可用的非复用和地址GPIO引脚的核心控制。以下三个表格列出了该模块有关的函数,寄存器和宏定义。 表8-1 GPIO函数 —————————————————————————— GPIO_pinDirection 设置GPIO引脚为输入或者输出 GPIO_pinDisable 禁止一个引脚作为GPIO引脚 GPIO_pinEnable 使能一个引脚作为GPIO引脚 GPIO_pinRead 读GPIO引脚的值 GPIO_pinWrite 向GPIO引脚写值 下面的函数是C5501和C5502器件所支持。 GPIO_colse 释放一个或多个GPIO引脚 GPIO_config 配置GPIO引脚 GPIO_open 分配一个或多个GPIO引脚到当前进程中 GPIO_pinReadAll 读一个或多个引脚的值 GPIO_pinWriteAll 写一个或多个引脚 GPIO_pinReset 复位一个或多个引脚———————————————————————————— 表8-2 GPIO寄存器 IODIR IO7DIR, IO6DIR, IO5DIR, IO4DIR, IO3DIR, IO2DIR, IO1DIR, IO0DIR IODATA IO7D, IO6D, IO5D, IO4D, IO3D, IO2D, IO1D, IO0D C5509 and C5509A支持以下. AGPIOEN IO13, IO12, IO11, IO10, IO9, IO8 AGPIODIR IO13DIR, IO12DIR, IO11DIR, IO10DIR, IO9DIR, IO8DIR AGPIODATA IO13D, IO12D, IO11D, IO10D, IO9D, IO8D C5502 和C5501支持以下. PGPIOEN0 IO15EN, IO14EN, IO13EN, IO12EN, IO11EN, IO10EN, IO9EN, IO8EN,

(库存管理)第八章仓库布置规划设计及库存控制

第八章仓库布置规划设计及库存控制 仓库是重要的物流设施,仓库的布置设计的科学合理对企业产出、改善物流、降低成本、提高客户服务水平有着十分重要的意义。 由于仓库布置规划设计是要解决货物如何存、流的问题,因此仓库的建筑形式、面积计算及指 标、一般技术要求、设备 仓储系统的必要性 仓库(w a r e h o u s e):保管、储存物品的建筑物和场所的总称。 仓储管理(w a r e h o u s e m a n a g e m e n t)通常是指对库存物品和仓库设施及其布局等进行规划、控制的活动。 企业进行仓储的四个原因:降低运输-生产成本;协调供求;辅助生产;辅助市场销售。 仓库的分类 1.按领域分:生活领域、生产领域和流通领域2.按性质分:剩余储备、保险储备和流转储备。4.按保管条件分:普通仓库、控温仓库、冷藏仓库、冷冻仓库和特种仓库。5.按机械化程度分:普通人力仓库、机械化仓库、自动化仓库。 仓储方案:所有权角度 自有仓库:企业自己拥有并管理的仓库。公共仓库:提供短期仓储服务。合同仓库:介于短期租用公共仓库和自营之间。 实际操作过程,同时拥有自有仓库和租用公共仓库能够为企业带来很多的优势。 合同仓库将自有仓库和公共仓库两方面的优势有机地结合,成本低于租赁公共仓库的成本。 仓库的功能 1.储存和保管的功能:2.调节供需和运输的功能3.集散和加工的功能:4.配送和服务的功能:仓库作业设计 作业标准设计(仓库的利用高度、设施的分层楼数以及货物存储和搬运流程)搬运过程设计(货物搬运效率、搬运过程的流畅性和移动装运的经济性)仓库布局设计(存储货物的流量、重量和体积等) 仓库作业管理 1验货收货(步骤:核对入库凭证;入库验收;记帐登录)2存货保管(步骤:堆码;养护;盘点)3发货出库(步骤:核对出库凭证;配货出库;记帐清点) 第一节普通仓库的布置设计 一、仓库的布置规划设计的含义 普通仓库一般由物料储存区、验收分发作业区、管理室和生活间及辅助设施组成。 仓库的布置规划就是对上述区域的空间面积配置做出合理安排的同时,重点对仓库的储存区域的空间及技术要求、设备选择及作业通道等进行规划设计。 1、仓库的储存区域空间规划 储存货物的空间规划是普通仓库规划的核心,储存空间规划的合理与否直接关系到仓库的作业效率和储存能力。 储存空间规划的内容包括:仓储区域面积规划、柱子间隔规划、库房高度规划、通道宽度规划。 2、仓库常用设备的选择 二、仓库储存区域空间规划 1、储存区域空间规划的影响因素 (1)存储方式(散放、堆码、货架储存)(2)货品尺寸、数量3)托盘尺寸、货架空间;(4)使用的机械设备(型号/式样、尺寸、产能、回转半径);(5)通道宽度、位置及需求空间; 一、集装箱 –(一)物流模数 –I S O(国际标准化组织)已经制定了有关物流的许多设施、设备等方面的技术标准,并且制定了国际物流基础尺寸的标准方案:

ERP第八章作业

080801024陈丽华0880808025黄瑜婷080801026游美玲 1. 在SJ/T11293-2003标准中,ERP系统可以分解为哪些功能模块?这种分解方式是否合理?为什么? 答:可以分解为环境与用户界面、系统整合、系统管理、基本信息、库存管理、采购管理、营销管理、BOM管理、车间任务管理、工艺管理、MRP、成本管理、人力资源管理、质量管理、经营决策、总账管理、自动分录、应收管理、应付管理、和固定资产管理这20个功能模块。这种分解方式是合理的。因为一般的ERP软件的财务部会分为会计核算和财务管理两块。会计核算主要是记录、核算、反映和分析资金在企业经济活动中的变动过程及其结果。它由总账、应收账、应付帐、现金、固定资产、多币制等部分构成。财务管理的功能主要是基于会计核算的数据,再加以分析,从而进行相应的预测,管理和控制活动。它侧重于财务计划、控制、分析和预测。根据会计核算和财务管理再把ERP分为20个模块。所以是合理的。 2.在SJ/T11293-2003标准中,环境与用户界面功能模块的具体功能内容是什么?在这里,功能名称和功能内容是否一致?为什么? 答:环境与用户界面功能模块又可以进一步分为3个类别,即系统环境、文档和用户界面。系统环境的主要功能有以下6个:1支持系统平台,包括Windows/Unix/Linux 2 支持的数据库,包括Oracle/SQL Server/Sybase/DB2/Informix 3 系统构架,包括多层客户机、服务器 4 自动电子信息传递,如报表可以通过E-mail传递 5异常信息检测与传递 文档的主要功能为:可以提供的文档包括在线帮助、标准作业程序书、系统关联图和使用手册等 在线帮助具有友好性 用户界面主要功能为:1使用者的界面最好是浏览器,并且可以自己配置界面 2 多样化的画面设计,如可以任意调整菜单的顺序、归类和自定义界 面风格 3 多媒体应用,可以保存多媒体数据,支持语言操作等 4资料搜寻辅助功能 5可以自定义单据格式和内容,支持单据套打 6可以审核单据 7灵活的报表执行、查询和输出等 8可以自行设计凭证 9批次作业管理 在这里功能名称和功能内容一致的。因为他们的功能内容正是由功能名称的类别不同而设置与之对应的。 3.你是如何理解SJ/T11293-2003标准中的人力资源管理模块的? 以往的ERP系统基本上都是以生产制造及销售过程(供给链)为中心的。因此,长期以来一直把和制造资源有关的资源作为企业的核心资源来进行管理。但近年来,企业内部的人力资

第八章 开关量混合模块

第8 章开关量混合模块 本章描述RX3i PACSystems的开关量混合输入/输出模块 高速计数模块: IC694APU300 高速计数模块, IC694APU300, 提供直接处理高达80KHZ的脉冲信号。 这个模块不需要与CPU进行通信就可以检测输入信号,处理输入计数信息,控制输出。高速计数器在CPU中使用16位的开关量输入存储器(%I),15字的模拟量输入存储器(%AI),和16位的开关量输出存储器(%Q)。高速计数器可以配置为: . 4 一样的独立的简单的计数器 . 2 一样的独立的较为复杂的计数器 . 1 复杂计数器 两个绿色的发光二极管指示模块的工作状态和配置参数的状态。 附加模块特性包括:: . 12个正逻辑输入点(源),输入电压范围5VDC或10~30VDC。 . 4个正逻辑(源)输出点 . 每个计数器按时基计数 . 内在模块诊断 . 为现场接线提供可拆卸的端子板

根据用户选择的计数器类型,输入端可以用作计数信号、方向、失效、边沿选通和预置的输入点。输出点可以用来驱动指示灯、螺线管、继电器和其他装置。 模块电源来自背板总线的+5V电压。输入和输出端设备的电源必须由用户提供,或者来自电源模块的隔离+24VDC的输出。这个模块也提供了可选择的门槛电压,用来允许输入端响应5VDC 或者10 ~30VDC 的信号。. 标签上的蓝条表明APU300是低电压模块。这种模块可以安装到RX3i系统中的任何I/O插槽。技术规格: APU300 输入阻抗

现场接线: APU300 APU300 接线信息如下。 高速计数器模块必须用屏蔽电缆连接。电缆屏蔽必须满足附录A中的IEC 1000-4-4标准,在模块6英寸(15.24cm)范围内必须具有高频屏蔽接地。电缆线长度最长是30米。 所有12个高速计数器输入点是单端的正逻辑(源)型输入点。带有CMOS 缓冲器输出的传感器(相当于74HC04)能用5V的输入电压直接驱动高速计数器输入。使用TTL图腾柱或者开路集电极输出的传感器必须带有一个470 欧姆的上拉电阻器(到5V)来保证高速计数器输入端的兼容性。使用高压开路集电极(漏型)型输出的传感器必须带有一个1K 上拉电阻器到+ 12V,用于兼容高速计数器10到30V的输入电压范围。 5VDC阈值的选择是通过在可分离的终端接线板连接器上的两个端子上安装跳线实现。阈值选择端子不安装跳线,设置输入在默认电压10~30VDC的范围。 每种计数器类型的端子分配 下表说明在模块配置中的计数器型号与所使用的端子.

模拟操作题之第八章模块

模拟操作题之第八章模块 1.关闭“fStudent”窗体(第五套) DoCmd.Close 2.补充窗体“fTest”上“test1”按钮(名为“bt1”)的单击事件代码,实现以下功能:打开窗体,在文本框“tText”中输入一段文字,然后单击窗体“fTest”上“test1”按钮(名为“bt1”),补充代码设置窗体上标签“bTitle”的标题为文本框“tText”输入内容与文本串“等级考试测试”的连接并消除连接串的前导和尾随空白字符。(6套2.3) bTitle.Caption=Trim(me!tText+"等级考试测试") 注意:1.me表示当前窗体,2. Trim是字符函数 3.补充窗体“fTest”上“test1”按钮(名为“bt1”)的单击事件代码,实现以下功能: 打开窗体,在文本框“tText”中输入一段文字,然后单击窗体“fTest”上“test1”按钮(名为“bt1”),程序实现将文本框内容作为窗体上的标签“bTitle”的标题显示。(31套2.3) bTitle.Caption=tText 4.在“fEmp”窗体上单击“输出”命令按钮(名为“btnP”),实现以下功能:计算Fibonacci数列第19项的值,将结果显示在窗体上名为“tData”的文本框内并输出到外部文件保存;单击“打开表”命令按钮(名为“btnQ”),调用宏对象“mEmp”以打开数据表“tEmp”。 Fibonacci数列: 调试完毕,必须单击“输出”命令按钮生成外部文件,才能得分。(8套3.4) *****Add1***** Dim f(19) As Integer *****Add1***** *****Add2***** f(i)=f(i-1)+f(i-2) *****Add2***** *****Add3***** tData=f(19) *****Add3***** 5.试根据以下窗体功能要求,对已给的命令按钮事件过程进行补充和完善。在“fEmp”窗体上单击“输出”命令按钮(名为“btnP”),弹出一输入对话框,其提示文本为“请输入大于0的整数值”。 输入1时,相关代码关闭窗体(或程序); 输入2时,相关代码实现预览输出报表对象“rEmp”; 输入>=3时,相关代码调用宏对象“mEmp”以打开数据表“tEmp”。(10套3.4) *****Add1***** k=InputBox("请输入大于0的整数") *****Add1***** *****Add2***** DoCmd.OpenReport "rEmp",acViewPreview *****Add2***** 6.试根据以下窗体功能要求,对已给的命令按钮事件过程进行补充和完善。 在“fEmp”窗体上单击“输出”命令按钮(名为“btnP”),弹出一输入对话框,其提示文本为“请输入大于0的整数值”。 输入1时,相关代码关闭窗体(或程序);

第八章模块理论练习

第八章VBA模块 一、选择题 1、在VBA 语言中,以下关于运算优先级比较,叙述正确的是()。 A.算术运算符> 关系运算符>连接运算符> 逻辑运算符 B.算术运算符> 连接运算符>关系运算符> 逻辑运算符 C.关系运算符>算术运算符>连接运算符> 逻辑运算符 D.关系运算符>连接运算符>算术运算符> 逻辑运算符 2、一般用于存放其他ACCESS数据库对象使用的公共过程称为()。 A.类模块 B.标准模块 C.宏模块 D.窗体模块 3、表示“标签”控件对象的标题属性是()。 A.caption 属性 B.reports 属性 C.docmd 属性 D.text 属性 4、布尔型数据转换为其他类型数据时,false转换为()。 A.0 B.1 C.-1 D.2 5、连接式“3+4”&”=”&”( 3+4)的运算结果为()。 A.3+4 B.&3+4 C. (3+4) & D.3+4=7 6、根据条件选择执行路径,又可称选择结构的执行语句是()。 A.顺序结构 B.条件结构 C.循环结构 D.层次结构 7、用于实现无条件转移的是()。 A.goto语句 B.if语句 C.switch 语句 D.if...else ...语句 8、执行语句:msgbox “AAAA”,VBOKCancel+vbQuestion,”BBBB”之后,弹出的信息框外观样式是()。 A.标题为“BBBB”、框内提示符为“惊叹号”、提示内容为“AAAA” B.标题为“AAAA”、框内提示符为“惊叹号”、提示内容为“BBBB” C.标题为“BBBB”、框内提示符为“问号”、提示内容为“AAAA” D.标题为“AAAA”、框内提示符为“问号”、提示内容为“BBBB” 9、能被“对象所识别的动作”和“对象可执行”的活动分别称为对象的()。 A.方法和事件 B.事件和方法 C.事件和属性 D.过程和方法 10、下列逻辑表达式中,能正确表示条件“X和Y至少有一个是偶数”的是()。 A.X Mod 2=0 OR Y Mod 2=0 B.X Mod 2=1 OR Y Mod 2=1 C.X Mod 2=0 And Y Mod 2=0 D.X Mod 2=1 And Y Mod 2=1 11、定义了二维数组A(3 to 5,6),则该数组的元素个数为()。 A.18 B.27 C.21 D.30 12、以下内容中不属于VBA提供的数据验证函数是()。 A.isdate B.isnull C.isnumeric D.istest 13、有如下程序段: Dim str As String*10 Dim i Str1="abcdefg" i=12 len1=Len(i) str2=Right(str1,4) 执行后,len1和str2的返回值分别是 A.12,abcd B.10,bcde C.2,defg D.0,cdef 14、假定有以下循环结构 Do Until 条件 循环体

第八章 信息模块的压接技术

信息模块的压接技术 1、EIA/TIA 568A和E I A / T I A 5 6 8 B的关系 信息模块的压接分E I A / T I A 5 6 8 A和EIA/TIA568B 2种方式。 E I A / T I A 5 6 8 A信息模块的物理线路分布如图所示 图1 EIA/TIA568A物理线路接线方式 图2 EIA/TIA568B物理线路接线方式 2、信息模块的压接技术 信息模块的供应商:I B M、AT & T、A M P、西蒙等国外商家,国内有南京普天等公司产品的结构都类似,只是排列位置有所不同。有的面板注有双绞线颜色标号,与双绞线压

接 时,注意颜色标号配对就能够正确地压接。AT & T公司的5 6 8 B信息模块与双绞线连接的位置如 下图7 - 4所示。 A M P公司的信息模块与双线连接的位置如下图7 - 5所示: 信息模块压接时一般有二种方式: 1) 用打线工具压接; 2) 不要打线工具直接压接。 对信息模块压接时应注意的要点: 1) 双绞线是成对相互拧在一处的,按一定距离拧起的导线可提高抗干扰的能力,减小信号的衰减,压接时一对一对拧开放入与信息模块相对的端口上。 2) 在双绞线压处不能拧、撕开,并防止有断线的伤痕。 3) 使用压线工具压接时,要压实,不能有松动的地方。 4) 双绞线开绞不能超过要求。 在现场施工过程中,有时遇到5类线或3类线,与信息模块压接时出现8针或6针模块。 例如,要求将5类线(或3类线)一端压在8针的信息模块(或配线面板)上,另一端在6针 的语音模块上,如图7 - 6。对这种的情况,无论是8针信息模块,还是6针语音模块它们在交接处是8针,只有输出时,有所不同。所以按5类线8针压接方法压接,6针语音模块将自动放弃不用的棕色一对线。

第11章__PLC的特殊功能模块.ppt.Convertor

11.1扩展设备的类型及使用 11.2模拟量输入/输出模块 11.2.1模拟量输入模块FX2N-2AD 11.2.2模拟量输出模块FX2N-2DA 11.3数据链接与通信功能模块 11.3.1FX系列PLC数据链接与通信功能概况 11.3.2FX2N-232-BD通信板简介 11.3.3FX2N-232-BD通信板的应用 11.3.4FX2N-485-BD通信板的通信功能及应用 11.4其他特殊功能模块概述11.4.1位置控制类模块简介 11.4.2人机界面(HMI)特殊模块简介 本章要点: 模拟量输入输出模块的基本功能及其应用 数据链接与通信功能模块的基本功能及其应用 本章难点: 数据链接与通信功能模块的基本功能及其应用 PLC的特殊功能模块种类繁多,功能齐全,是构成模拟量控制、位置控制、通信控制等系统的重要扩展设备。本章重点介绍FX系列PLC的A/D和D/A模块、通信板的基本功能及其应用。 11.1扩展设备的类型及使用 FX系列PLC的扩展设备有扩展单元(Extension Unit)、扩展模块(Extension Block)、特殊功能模块(Special Function Block)、功能扩展板(Extension Function Board)。 扩展单元和扩展模块用来增加I/O点数,在第6章已做介绍。特殊功能模块主要用来完成一些特殊的功能,如A/D转换、D/A转换、高速计数、定位控制等,其硬件电路完善,有的自带CPU。它们都安装在主机之外。功能扩展板安装在主机内,不占用主机外的空间,扩展主机的某些功能,如各种通信板、输入/输出扩展板、模拟量输入/输出扩展板等。 FX系列PLC的特殊功能模块大致可分为:①模拟量输入/输出模块;②高速计数器模块;③定位控制模块;④旋转角度检测模块;⑤通信接口模块;⑥人机界面等类型 11.1扩展设备的类型及使用 1.硬件系统配置 主机扩展就是在主机上安装功能扩展板、存储器卡盒等,或在主机上增加硬件单元或模块。 主机扩展时,首先要解决配置问题。配置FX2N系列PLC硬件系统时,应满足如下条件。 (1) 系统的开关量I/O点数不超过256点。 (2) 当系统中有特殊功能模块时,系统的开关量I/O点数n应满足:n≤256 –k ,式中,k为系统中所有特殊功能模块的等效I/O点数之和。 (3) 每台主机连接的特殊功能模块不超过8块。 11.1扩展设备的类型及使用 (4) 系统中所有扩展设备消耗的内部DC 5 V电源电流总量不超过主机或扩展单元内部DC 5 V电源提供的电流总量;系统中所有扩展设备消耗的外部DC 24 V电源电流总量不超过主机或扩展单元外部DC 24 V电源提供的电流总量。 11.1扩展设备的类型及使用 2.模块的连接与编号

第11章 PLC的特殊功能模块

第11章PLC的特殊功能模块本章要点 ● 模拟量输入输出模块的基本功能及其应用 ● 数据链接与通信功能模块的基本功能及其应用 本章难点 ● 数据链接与通信功能模块的基本功能及其应用 PLC的特殊功能模块种类繁多,功能齐全,是构成模拟量控制、位置控制、通信控制等系统的重要扩展设备。本章重点介绍FX系列PLC的A/D和D/A模块、通信板的基本功能及其应用。 11.1 扩展设备的类型及使用 FX系列PLC的扩展设备有扩展单元(Extension Unit)、扩展模块(Extension Block)、特殊功能模块(Special Function Block)、功能扩展板(Extension Function Board)。 扩展单元和扩展模块用来增加I/O点数,在第6章已做介绍。特殊功能模块主要用来完成一些特殊的功能,如A/D转换、D/A转换、高速计数、定位控制等,其硬件电路完善,有的自带CPU。它们都安装在主机之外。功能扩展板安装在主机内,不占用主机外的空间,扩展主机的某些功能,如各种通信板、输入/输出扩展板、模拟量输入/输出扩展板等。 FX系列PLC的特殊功能模块大致可分为:①模拟量输入/输出模块;②高速计数器模块; ③定位控制模块;④旋转角度检测模块;⑤通信接口模块;⑥人机界面等类型 1.硬件系统配置 主机扩展就是在主机上安装功能扩展板、存储器卡盒等,或在主机上增加硬件单元或模块。 主机扩展时,首先要解决配置问题。配置FX2N系列PLC硬件系统时,应满足如下条件。 (1) 系统的开关量I/O点数不超过256点。 (2) 当系统中有特殊功能模块时,系统的开关量I/O点数n应满足:n≤256– k,式中,k为系统中所有特殊功能模块的等效I/O点数之和。 (3) 每台主机连接的特殊功能模块不超过8块。 (4) 系统中所有扩展设备消耗的内部DC 5 V电源电流总量不超过主机或扩展单元内部DC 5 V电源提供的电流总量;系统中所有扩展设备消耗的外部DC 24 V电源电流总量不超过主机或扩展单元外部DC 24 V电源提供的电流总量。

第八章模块

第八章,模块 例8.1 Private Sub Command0_Click() …中间代码省略 End Sub 其中private表示私有的含义,sub表示子过程,command0是测试命令按钮的名称 基本数据类型 数据类型类型标识符字段类型 整数Integer % 长整数long & 单精度数single ! 双精度数double # 货币currency @ 字符串型string $ 布尔型Boolean 日期型date 变体类型variant 用户自定义数据类型 Type newstudnet Txtno as string *7 为定长字符串

Txtname as string Txtsex as string*1 Txtage as integer End type 如果有以下定义语句 Dim newstud as newstudent Newstud.txtno=”990” 如果对它进行取长度的话为7而不是为3因为它是定长的字符串(笔试考点) With newstud .txtsno=”980306” .txtname=”冯伟” .txtsex=”女” .txtage=20 End with 变量与常量 变量是指在程序运行时值会发生变化的数据,变量名的命名,同字段命名一样,变量名可以包含字母,汉字,数字空格和其他字符但不能以空格开头。

在VBA中变量名不区分大小写,比如NewVar 和newvar视为同一个变量 变量的声明 1.显式声明,变量先定义后使用是程序设计较好的习惯。Dim newvar_1 as integer Dim newvar %,sum ! 相当于dim newvar as integer Dim newvar as single 2.隐含声明 Dim m,n …m,n为variant变量 Newvar=528 二强制声明 Option explicit 强制声明要求所有变量必须定义才能使用 变量的作用域 1.局部范围 2.模块范围 3.全局范围

相关主题
文本预览
相关文档 最新文档