当前位置: 首页 » 中职教育 » VB 大纲

VB §1

一、 基本概念:
1、 Visual Basic 1991年微软推出
VB6.0是目前流行版
有以下几种版本
A、 学习版——既演示版
B、 控件裁创建版——配有全部特性,但只用于创建可执行的activex控件
C、 专业版——创建用于windows所有类型的32位
D、 企业版——与专业版同,再加上企业范围使用的客户机/服务器应用程序所有工具
E、 应用版——vba
F、 脚本语言版——vb script
2、 企业版的几大模块
A、 VB的Database
B、 VBA
C、 VB for Win32 API
D、 VB Activex 程序的 OLE
E、 WEB
3、 VB的优点
A、 可视化编程环境——对象Object,属性Property,事件Event,方法Method,动作Action(Click、Keydown)
B、 强大的数据库支持编程——
提供数据库控件
迅速生成操作界面——用户—界面—JET—Database
C、 引入DAO、RDO、ADO
DAO:DATABASE OBJECT
RDO:Remote Database Object
ADO:Active Database Object
D、 支持全面的SQL查询——Structure Query Language
E、 VB的WEB编程
F、 事件驱动编程机制
G、 结构化设计语言
H、 充分利用Windows资源
二、 开发环境
1、 菜单2、对象窗口、对象代码3、控件工具栏》工程*部件4、属性窗口
三、 窗口界面的建立(Commandbox textbox label)

四、 语言语法
规则:必须以英文开头、不包含小数空格、长度不超过255个字符、不能使用关键字
Eg、定义:dim(public、static、const) x as integer
1、 类型:
integer:2B -32768~32768
long:4B -2147483648~2147483648
single:4B -3.402823E38~-1.401298E-45 1.401298E-45~3.402823E38
double:8B -1.79769313486232D308~-4.94065645841247D-324
4.94065645841247D-324~1.79769313486232D308
Currency:8B
Byte
String:定长0~65400 变长:20亿个
Date:8B 公元100年1月1日~9999年12月31日
格式:#January 1,1993#或#1 Jan 93#
#93/10/20# (中国)
#10/20/93# (西)
BooleanL:2B
Object:4B
Variant: 数:16B 字符:22+字符长度B
Eg、if Isempty(Z) then z=0
If isNull(x) and isNull(y) then
Z=null
Else
Z=0
End if
2、 用户自定义
type Mytype
myName as string
myBir as Date
MySex as integer
End type
3、 常量
[public | private] const x [as datatype]=表达式

系统常量 F2键
4、 数组
dim x1(9) as string
dim x2(0 to 9) as string
dim x3(1 to 9) as string

五、 语句
1、if语句
A、 IF [Condition] then [code]
B、 IF [Condition] then
Code
Elseif [Condition] then
Code
Elseif [Condition] then
Code
Else
Code
Endif

eg、
dim I as integer
private sub cmd1_click()
print “welcome”
I=I+1
End sub

Private sub cmd2_click()
If I>=3 then
Print “good bye”
Else
Print “click left again”
End if
End sub

Eg2
If B+C<>0 then
D=A/(B+C)
Else
Print “不能求值“
End if
Eg3 y=1(X>0) 0(x=0) -1(x<0) 2、 SELECT语句 Select case variable Case [result1] [code 1] Case [result2] [code 2] Case [result3] [code 3] . . Case else [code x] end select eg、select case I case 3 print “you have clicked 3 times” case 10 print “you have clicked 10 times” end select 六、tab控件 七、作业:计算器 §2 timer 1、 for 循环 for I=1 to 10 step1 code next [I] eg1: t=0 for I=2 to 10 step 2 t=t+I print next I eg2 for j=1 to 5 for I=2 to 8 …. Next j Next I Eg3:求n! Dim n as integer N=inputbox(“Enter N:”) K=1 For I=1 to n K=K*I Next Print N; “!=”;k 2、 do while [condition] (成立条件) code loop 3、 do until [condition] (不成立条件) code loop 4、 do code loop until [condition] eg、时间暂停 Public Sub PauseTimeNumber(pausetime As Single) Dim Start As Single Start = Timer Do While Timer < Start + pausetime DoEvents Loop End Sub 5、函数(自定义) public function Max1(va,va2) ’求最大值 if v1>=v2 then
max=v1
else
max=v2
end if
end function
5、 内部函数
val,str,mid,left等
6、 InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Dim Message, Title, Default, MyValue
Message = “Enter a value between 1 and 3”
Title = “InputBox Demo” ‘ 设置标题。
Default = “1” ‘ 设置缺省值。
‘ 显示信息、标题及缺省值。
MyValue = InputBox(Message, Title, Default)
7、MsgBox(prompt[, buttons] [, title] [, helpfile, context])
本示例假设 DEMO.HLP 为一帮助文件,其中有一个内容代码为 1000。
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = “Do you want to continue ?” ‘信息。
Style = vbYesNo + vbCritical + vbDefaultButton2 ‘ 定义按钮。
Title = “MsgBox Demonstration” ‘ 标题。
Help = “DEMO.HLP” ‘ 定义帮助文件。
Ctxt = 1000 ‘ 定义标题
‘ 上下文。 ‘ 显示信息。
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then
MyString = “Yes” ‘ 完成某操作。
Else ‘ 用户按下“否”。
MyString = “No” ‘ 完成某操作。
End If
7、 作业:y=ax2+bx+c P176(潭浩强)
101~1000的和

§3 picturebox Commondialog image shape line check option frame
1、PictureBox 控件可以显示来自位图、图标或者元文件(将图象作为线、圆或多边形这样的图形对象来存储,而不是存储其像素。元文件的类型有两种,分别是标准型.wmf和增强型.emf。),以及来自增强的元文件、JPEG 或 GIF 文件的图形。如果控件不足以显示整幅图象,则裁剪图象以适应控件的大小。
PictureBox 控件和 Data 控件是唯一可以放置在 MDI 窗体内部区域的标准控件

PictureBox属性自动调整大小AutoSize = True
object.Picture [= picture] 或LoadPicture([filename], [size], [colordepth],[x,y])
size 的设置值为:
vbLPSmall 0 系统小图标。
vbLPLarge 1 系统大图标,由视频驱动程序决定。
vbLPSmallShell 2 外壳小图标大小,由“控制面板”中的 Display Properties 对话框中 Appearance 选项卡上的 Caption Buttons 的大小设置决定。
vbLPLargeShell 3 外壳大图标大小,由“控制面板”中的 Display Properties 对话框中 Appearance 选项卡上的图标大小设置决定。
vbLPCustom 4 自定义大小,由 x 和 y 参数提供值。

colordepth 的设置值为:
vbLPDefault 0 如果使用指定文件,则为最佳可用匹配。
vbLPMonochrome 1 2 色。
vbLPVGAColor 2 16 色。
vbLPColor 3 256 色。

Eg
Private Sub Form_Click ()
Dim Msg as String ‘ 声明变量。
On Error Resume Next ‘ 设置错误句柄。
Height = 3990
Width = 4890 ‘ 设置高度和宽度。
Picture1.Picture = LoadPicture(“PAPER.CUR”, vbLPCustom, vbLPColor, 32, 32) ‘ 加载光标。
If Err Then
Msg = “Couldn’t find the .cur file.”
MsgBox Msg ‘ 显示错误消息。
Exit Sub ‘ 如果发生错误则退出。
End If
Msg = “Choose OK to clear the bitmap from the form.”
MsgBox Msg
Picture1.Picture = LoadPicture() ‘清除 picturebox。

End Sub

3、 Commondialog 部件:Microsoft Common Dialog control

下例显示“打开”对话框然后在信息框中显示所选的文件名:
Private Sub Command1_Click()
‘ 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
‘ 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
‘ 设置过滤器
CommonDialog1.Filter = “All Files (*.*)|*.*|Text Files” & _
“(*.txt)|*.txt|Batch Files (*.bat)|*.bat”
‘ 指定缺省的过滤器
CommonDialog1.FilterIndex = 2
‘ 显示“打开”对话框
CommonDialog1.ShowOpen
‘ 显示选定文件的名字
MsgBox CommonDialog1.filename
Exit Sub

ErrHandler:
‘ 用户按了“取消”按钮
Exit Sub
End Sub

4、image 控件用来显示图形
Image 控件使用较少的系统资源,所以重画起来比 PictureBox 控件要快,但是它只支持 PictureBox 控件的一部分属性、事件和方法。用 Stretch 属性确定是否缩放图形来适应控件大小
5、 shape 控件是图形控件,显示矩形、正方形、椭圆、圆形、圆角矩形或者圆角正方形
object.Shape [= value]
6、 Line控件
7、 checkbox option frame

作业:考试测试题

§4 listbox combo hscrollbar vscrollbar OLE控件
1、listbox、Combo
属性list、listcount、listindex、Datafield 、Datamember、Datasourse、DataFormat
object.ItemData(index) [= number] 每个项目具体的编号
eg、这个例子用员工的名字填充 ListBox 控件,并用员工的代号填充 ItemData 属性数组,并用 NewIndex 属性使代号与排序列表同步。当用户做选择时,Label 控件显示选项的名字和代号。要试用此例,r把代码粘贴到包含 ListBox 和 Label 的窗体的声明部分。设置 ListBox 的 Sorted 属性为 True
Private Sub Form_Load ()
‘ 以排序顺序将相应的项目填充t List1 和 ItemData 数组.
List1.AddItem “Judy Phelps”
List1.ItemData(List1.NewIndex) = 42310
List1.AddItem “Chien Lieu”
List1.ItemData(List1.NewIndex) = 52855
List1.AddItem “Mauro Sorrento”
List1.ItemData(List1.NewIndex) = 64932
List1.AddItem “Cynthia Bennet”
List1.ItemData(List1.NewIndex) = 39227
End Sub

Private Sub List1_Click ()
‘ 追加员工数字和员工名字.
Msg = List1.ItemData(List1.ListIndex) & ” ”
Msg = Msg & List1.List(List1.ListIndex)
Label1.Caption = Msg
End Sub
方法:Additem、RemoveItem、clear、listcount、zorder
2、hscrollbar vscrollbar
这个例子在 TextBox 控件中显示 HScrollBar(水平滚动条)控件的数值。要尝试这个例子,请将代码粘贴到包含一个 TextBox 控件和一个 HScrollBar 控件的窗体的声明部分。
Private Sub Form_Load ()
HScroll1.Min = 0 ‘ 初始化滚动条。
HScroll1.Max = 1000
HScroll1.LargeChange = 100
HScroll1.SmallChange = 1
End Sub
Private Sub HScroll1_Change ()
Text1.Text = Format (HScroll1.Value)
End Sub

3、OLE与Excel的使用
Dim Cmd, I, Q, Row, E
Q = Chr(34)
Cmd = “[Activate(” & Q & “sheet1” & Q & “)]”
Cmd = Cmd & “[select(” & Q & “R1c1:R5C2” & Q & “)]”
Cmd = Cmd & “[new(2,1)][arrange.all()]”
If Text1.LinkMode = vbLinkNone Then
E = Shell(“d:\program files\Microsoft Office\office\excel.exe”, 4)
Text1.LinkTopic = “excel|sheet1”
Text1.LinkItem = “r1c1”
Text1.LinkMode = vbLinkManual
End If
For I = 1 To 5
Row = I
Text1.LinkItem = “r” & Row & “c1”
Text1.Text = Chr(64 + I)
Text1.LinkPoke
Text1.LinkItem = “r” & Row & “c2”
Text1.Text = Row
Text1.LinkPoke
Next I
On Error Resume Next
Text1.LinkExecute Cmd
MsgBox “link excnte odt demo with wincrosoft extle fiwlink.”, 64
End
§5(2*4) 文件管理DRIVE DIR FILE TREEVIEW 、FSO
1、Drive Dir File TreeView
Private Sub Dir1_Click()
File1.Path = Dir1.Path
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
Text1.Text = Dir1.Path + “\” + File1.FileName
End Sub
2、文件读写
1)、顺序文件
打开文件
Open [“ FileName”] For Input(读) AS #1
Open [“ FileName”] For Output(写) AS #1
Close #1

读数据
Line Input #1 ,varString
文件头、尾的判断

EOF(1) BOF(1)
If EOF(1)=True then
…Endif
if BOF(1)=Tue then
… Endif
EG
Cmd1_Click
Dim Var as string
Open [“ FileName”] For Input(读) AS #1
Do Until EOF(1)
Line Input #1 ,var
Text2.text=text2.text + Var +Chr$(130+chr$(10)
Loop
Close #1
End sub
‘用Input获取长度
Var=input(chrnum,#1)
LongNo =LOF(1) ‘获取长度
If Lengno>3200 then
Msgbox “too, long”
Endif
2)、随机文件
Input #1,Var1,Var2,var3 ‘逗号表示文件的分离
Type Customer
No as integer
Name as String* 30
Amount as Integer*2
End type
Dim NewCustomer As Customer
Open “filename” for Random as #1
Len=34
Get #1,3(第3个记录) , NewCustomer ‘读
Put #1,10, NewCustomer ‘写
Close #1
3)、二进制文件
Open fielname for Binary As #1
Dim bin(1 to lof(1)) as Byte
Get #1 ,bin ‘读
Put #1 ,bin ‘写

3、FSO:引用Microsoft Scripting RunTime
Drive对象:驱动器,包括E:网络逻辑驱动器
Folder对象:创建、删除、移动文件夹,并向系统查询文件夹名称和路径
Files对象:创建、删除、移动文件,并向系统查询文件名称和路径
FileSystemObject:创建、删除、收集相关信息,以及操作驱动文件夹、文件的方法。
TextStream:允许读、写文本文件。
Eg
Dim fso as New FileSystemObject
dimFil as File
dim Ts as TextStream
Fso.createTextfile “c:\text.txt”
Seet fil=fso.getFile(“c:\text.txt”)
Set ts=fil.openASTextStream(forwriting)
Ts.Write(“I love you”)
Ts.close
Set ts= fil.openASTextStream(forRead)
STxt=ts.readline
Msgbox sTxt
Ts.close
FSO对象GET方法
GetDrive,GetFolder,GetFile,
Create方法,CreateDrive,CreateFolder,CreateFile
Eg
Dim fso as new FileSystemObject
Dim Fil as file
Set fil=fso.getFile(“c:\myfile.txt”)
Msgbox “文件最后的修改日期:” & fil.DatelastModified
DragDrop事件是鼠标拖动复制文件。
Drive对象属性
Totalsize:以字节表示驱动空间
AvailableSpace或FreeSpace 可用空间
Driveletter给驱动指定字母号
DriveType驱动类型
SerialNumber驱动序列号
FileSystem如Fat Fat32、NTFS
Isready驱动器是否可用
ShareName和VolumeName共享名称和卷标名称
Path和RootFolder驱动器路径或根文件佳

Eg
Dim fso as New FileSystemObject
Dim Drv as drive
Set drv=fso=GetDrive(fso.GetDriveName(“c:”))
Text1=”Drive” & ucase(“c:”) & “_”
Text1= Text1 & drv.volumeName & vbCrlf
Text1= Text1 & “总空间:” & formatnumber(drv.totalsize/1024)
Text1= Text1 & “字节” & vbCrlf
Text1= Text1 & “可用空间:” & formatnumber(drv.freespace/1024)
Text1= Text1 & “字节” & vbCrlf

文件夹的操作
Fso.CreateFolder
.folder.delete或Fso.deletefolder
.folder.Move或Fso.MoveFolder
.Folder.Copy或Fso.copyFolder
.Folder.Name
.Fso.FolderExists查找一个文件夹是否在驱动器上
Fso.GetFolder
Fso.GeParentFolderName找出一个文件夹的父文件夹的名称
Fso.GeSpecialtFolderName找出系统文件夹路径。

操作文件(三种)
1、 Dim Fso, Dim Fil as File
Set fil=fso.createTextFile(“c:\Myfile.txt”)
2、 Dim TS as TextStream
Set Ts=fso.OpenTextFile(“c:\Myfile.txt”,forwriting)
ForAppending
3、 Set Ts=fil.openASTextStream(ForWriting)

TextStream对象有Write或WriteLine方法
其中 WriteLine是指字符串后加换行符。
WriteBlankLines方法 ——换空行
WriteBlankLines(2)2行空行
TextFile.Writeline(“这是一个文本“)
Read方法从一个文本读取指定数量字符。
Readline读行
ReadAll读所有内容。
Skip跳
SkipLine跳行

Eg文件管理
Sub nFileManage()
Call IntiFile
Dim fso As New FileSystemObject
Dim fil As File
fso.CopyFile “a:\B1.XLS”, “C:\wygSF\B1.XLS”
fso.CopyFolder “a:\help1.files”, “C:\wygSF\”
fso.CopyFile “a:\Help.htm”, “c:\WygSf\Help.htm”
fso.CopyFile “a:\Help1.htm”, “c:\WygSf\Help1.htm”
fso.CopyFile “a:\fire1.ico”, “c:\WygSf\”
fso.CopyFolder “a:\help.files”, “c:\WygSf\”
fso.CopyFolder “a:\help1.files”, “c:\WygSf\”
blFileManage = 1
SaveSetting “Protocol”, “Settings”, “blFileManage”, blFileManage
MsgBox “请取出协议盘”, vbOKOnly, “WYG”
End Sub

作业:

§6 菜单 Microsoft windows common control绘图操作 API 类
1、 菜单设计
MDI多文档设计

Private Sub MDIForm_Load()
glonum = 2
End Sub

Private Sub mnuFileNew_Click()
Dim new_Form1 As New Form1
new_Form1.Caption = “文档” + Str(glonum)
glonum = glonum + 1
new_Form1.Show
End Sub

Private Sub mnuFileOpen_Click()
MsgBox “对不起.现在还没有添加文件代码”, vbokon + vbInformation, “打开文件”
End Sub

Private Sub mnuWindowsArrange_Click()
MDIForm1.Arrange vbArrangeIcons
End Sub

Private Sub mnuWindowsCaseCade_Click()
MDIForm1.Arrange vbCascade
End Sub

Private Sub mnuWindowstile_Click()
MDIForm1.Arrange vbTileHorizontal
End Sub

Private Sub mnuWindowsVerticel_Click()
MDIForm1.Arrange vbTileVertical
End Sub

2、 Microsoft windows common control部件:
1) Imagelist :toolBar
2)statusbar
3)progressbar进程
3、 绘图
line: object.Line [Step] (x1,y1) [Step] (x2, y2), [color], [B][F]
line(x1,y1)-(x2,y2)
line-(x,y),color
line(x1,y1)-step(x2,y2),color或RGB
作图模式
A、 坐标,
B、 单位设置Scalemode=0~7,
C、 设置一个对象左边和上边水平 (ScaleLeft) 和垂直 (ScaleTop) 的坐标。
ScaleWidth、ScaleHeight
Private Sub Form_Load ()
Timer1.Interval = 250 ‘ 设置计时器的间隔。
Picture1.ScaleTop = -1 ‘ 为网格的顶部设置刻度。
Picture1.ScaleLeft = -1 ‘ 为网格的左部设置刻度。
Picture1.ScaleWidth = 2 ‘ 设置刻度范围 (-1 到1)。
Picture1.ScaleHeight = 2
Picture1.Line (-1, 0)-(1, 0) ‘ 画水平线。
Picture1.Line (0, -1)-(0, 1) ‘ 画垂直线。
End Sub

Private Sub Timer1_Timer ()
Dim I ‘ 声明变量。
‘ 在一个范围内随机地画些点。
For I = -1 To 1 Step .05
Picture1.PSet (I * Rnd, I * Rnd) ‘ 画一个点。
Next I
End Sub
D、 自动画AutoRedraw
E、 当前起点CurrentX,CurrentY
F、 DrawWidth=1~7
G、 DrawStyle=0~6

Eg1 、
Sub Form_Click ()
Dim CX, CY, F, F1, F2, I ‘ 声明变量。
ScaleMode = 3 ‘ 设置 ScaleMode 为像素。
CX = ScaleWidth / 2 ‘ 水平中点。
CY = ScaleHeight / 2 ‘ 垂直中点。
DrawWidth = 8 ‘ 设置 DrawWidth。
For I = 50 To 0 Step -2
F = I / 50 ‘ 执行中间步骤。
F1 = 1 – F: F2 = 1 + F ‘ 计算。
Forecolor = QBColor(I Mod 15) ‘ 设置前景颜色。
Line (CX * F1, CY * F1)-(CX * F2, CY * F2), , BF
Next I
DoEvents ‘ 做其它处理。
If CY > CX Then ‘ 设置 DrawWidth。
DrawWidth = ScaleWidth / 25
Else
DrawWidth = ScaleHeight / 25
End If
For I = 0 To 50 Step 2 ‘ Set up loop.
F = I / 50 ‘ 执行中间。
F1 = 1 – F: F2 = 1 + F ‘ 计算。
Line (CX * F1, CY)-(CX, CY * F1) ‘ 画左上角。
Line -(CX * F2, CY) ‘ 画右上角。
Line -(CX, CY * F2) ‘ 画右下角。
Line -(CX * F1, CY) ‘ 画左下角。
Forecolor = QBColor(I Mod 15) ‘ 每次改变颜色。
Next I
DoEvents ‘ 进行其它处理。
End Sub
Eg2、

Form_click
For I=0 to 6
Drawstyle=I
Line(1000,500+50*I)-(2000,500+50*I),RGB(0,20*i,255)
Next

2、circle(x,y),R,color,f(不填充)
3、object.Point(x, y)窗体上的一个指定点的颜色
Private Sub Form_Click ()
Dim LeftColor, MidColor, Msg, RightColor ‘ 声明变量。
AutoRedraw = -1 ‘ 打开AutoRedraw。
Height = 3 * 1440 ‘ 将高度设置为 3 英寸。
Width = 5 * 1440 ‘ 将宽度设置为 5 英寸。
BackColor = QBColor(1) ‘ 将背景设置为蓝色。
ForeColor = QBColor(4) ‘ 将前景设置为红色。
Line (0, 0)-(Width / 3, Height), , BF ‘ 红框。
ForeColor = QBColor(15) ‘ 将前景设置为白色。
Line (Width / 3, 0)-((Width / 3) * 2, Height), , BF
LeftColor = Point(0, 0) ‘ 查找左框颜色,,
MidColor = Point(Width / 2, Height / 2) ‘ 中框, 和
RightColor = Point(Width, Height) ‘ 右框。
Msg = “The color number for the red box on the left side of ”
Msg = Msg & “the form is ” & LeftColor & “. The ”
Msg = Msg & “color of the white box in the center is ”
Msg = Msg & MidColor & “. The color of the blue ”
Msg = Msg & “box on the right is ” & RightColor & “.”
MsgBox Msg ‘ 显示信息。
End Sub

4、画圆或弧Pset
4、 API
Windows API即Application Program Interface(应用程序接口)——Windows系统提供给用户进行系统编程和外设控制的强大的函数库,可以实现所有WINDOWS下可以实现的功能。然而对于初学者来说,”浩瀚”的API函数总是显得那么神奇与不可琢磨,因此在实际应用过程中不能够灵活应用。本专题将系统地对各种API函数进行分类,并结合实例来示范VB中调用各API函数的步骤和实现的功能。例子均在WINDOWS98,VB6.0编译通过。
Private Declare Function GetDriveType Lib “kernel32” Alias “GetDriveTypeA” (ByVal nDrive As String) As Long

Private Const DRIVE_CDROM = 5

Private Const DRIVE_FIXED = 3

Private Const DRIVE_RAMDISK = 6

Private Const DRIVE_REMOTE = 4

Private Const DRIVE_REMOVABLE = 2

Private Sub Form_Load()
Dim a As Long
Dim n As String
Dim drive As Long
For i = 0 To 25
n = Chr(65 + i) & “:/”
drive = GetDriveType(n)
If (drive = DRIVE_CDROM) Then
Text1.Text = Text1.Text + n
End If
If (drive = DRIVE_FIXED) Then
Text2.Text = Text2.Text + n
End If
If (drive = DRIVE_RAMDISK) Then
Text3.Text = Text3.Text + n
End If
If (drive = DRIVE_REMOTE) Then
Text4.Text = Text4.Text + n
End If
If (drive = DRIVE_REMOVABLE) Then
Text5.Text = Text5.Text + n
End If
Next i
End Sub

5、类模块

§7(2*4节) 数据库、多媒体、打包

1、 数据库
用户<>界面<>Jet<>Database
DAO:Database Object
RDO:Remote Database Object
ADO:Active Database Object
2、 可视化数据管理,database控件
3、 DAO引用使用
Dim db As Database
Dim rs As Recordset
Dim bAddnew As Boolean
Dim bEdit As Boolean

Private Sub cmdAddNew_Click()
bAddnew = True
txtName.Text = “”
TxtSex.Text = “”
TxtAge.Text = “”
End Sub

Private Sub cmdDel_Click()
If rs.RecordCount = 0 Then Exit Sub
rs.Delete
rs.MoveNext
Call ShowRecord(rs)
End Sub

Private Sub CmdEdit_Click()
bEdit = True
End Sub

Private Sub cmdFirst_Click()
rs.MoveFirst
Call ShowRecord(rs)
End Sub

Private Sub cmdlast_Click()
rs.MoveLast
Call ShowRecord(rs)

End Sub

Private Sub cmdNext_Click()
rs.MoveNext
Call ShowRecord(rs)
End Sub
Private Sub cmdPre_Click()
rs.MovePrevious
Call ShowRecord(rs)
End Sub
Private Sub CmdUpdate_Click()
If bAddnew = True Then
rs.AddNew
rs.Fields(0) = txtName.Text
rs.Fields(1) = TxtSex.Text
rs.Fields(2) = TxtAge.Text
rs.Update
bAddnew = False
End If
If bEdit = True Then
rs.Edit
rs.Fields(0) = txtName.Text
rs.Fields(1) = TxtSex.Text
rs.Fields(2) = TxtAge.Text
rs.Update
bEdit = False
End If

End Sub

Private Sub Form_Load()
Set db = DBEngine.Workspaces(0).OpenDatabase(“e:\12345.mdb”)
Dim str As String
str = “select 姓名,性别,年龄 from kwwl”
Set rs = db.OpenRecordset(str, dbOpenDynaset)
Call ShowRecord(rs)
End Sub
Sub ShowRecord(rs As Recordset)
If rs.RecordCount = 0 Then Exit Sub
If rs.EOF = True Then rs.MoveLast
If rs.BOF = True Then rs.MoveFirst
txtName.Text = rs.Fields(0)
TxtSex.Text = rs.Fields(1)
TxtAge.Text = rs.Fields(2)
End Sub
4、 DAO引用创建
‘定义,
Dim ws as workspace
Dim DB as database
Dim rs as recordset
Dim td as tabledef
Dim f1 as field,f1 as field
‘利用Set语句
Set ws=DBengine.workspace(0)
Set db=ws.CreateDataBase(“xd.mdb”,DblongGernal)
Set td=db.createTableDef(“person”)
Set f1=td.createfield(“name”,DBText,50)
Set f2=td.createfield(“Job”,DBText,50)
打开数据
set db=ws.opendatabase(“c:\d.mdb”)
set td=db.opentableDef(“表名”)
set ts=db.openrecordset(“SQL”,Dbopendynase
dbOnlyreading只读Dbsnapshot影射
DBForwardonly只能往前走
Set myQuery=”delete * from table Where Name=’na’
MyQuery.excute
‘创建数据库
sData = “c:\wygGalaxy\Data\” & “Star.mdb”
Set db = DBEngine.CreateDatabase(sData, dbLangGeneral, dbEncrypt)
Dim sTable As String
sTable = “create table [user] ”
sTable = sTable & “(用户 string,身份证 long,开始时间 date,结束时间 date,时间差 date, 备注 demo,操作者 string)”
db.Execute sTable
5、 ADO 与SQL和DataGrid控件
6、 多媒体
Private Sub Check1_Click()
If Check1.Value = 1 Then
MMControl1.Command = “play”
End If
End Sub

Private Sub fileopen_Click()
CommonDialog1.Filter = “*.mp3|*.mp3|MIDI*.mid|*.mid| *.wav|*.wav| *.avi|*.avi|*.*”
CommonDialog1.ShowOpen
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.DeviceType = “” ‘ 系统默认设备
MMControl1.FileName = CommonDialog1.FileName
MMControl1.Command = “open”
‘fileclose.Enabled = True
‘Slider1.Visible = True
‘Dim start As Single
‘start = Timer
‘Do
‘DoEvents
‘Loop Until Timer > start + 1
‘MMControl1.FileName = “d:\mp3\大海1.mp3”
‘MMControl1.Command = “open”
‘fileclose.Enabled = True

End Sub

Private Sub Form_Unload(Cancel As Integer)
MMControl1.Command = “Close”
End Sub

Private Sub MMControl1_Done(NotifyCode As Integer)
MMControl1.UpdateInterval = 100

End Sub

Private Sub MMControl1_StatusUpdate()
On Error GoTo erropen

‘设置文件长度以毫秒形式返回
MMControl1.TimeFormat = 0
Slider1.Max = MMControl1.Length / 1000
If MMControl1.Position <> MMControl1.Length Then
Slider1.Value = MMControl1.Position / 1000
Else
MMControl1.Command = “prev”
Slider1.Value = 0
End If

‘调用tsrting函数
StatusBar1.Panels(2) = Tstring(MMControl1.Length – MMControl1.Position)
StatusBar1.Panels(4) = Tstring(MMControl1.Length)
Label1.Caption = “00:00″
Label2.Caption = Tstring(MMControl1.Length / 2)
Label3.Caption = Tstring(MMControl1.Length)

Select Case MMControl1.Mode
Case 524
StatusBar1.Panels(5) = ” 未打开“”
Case 525
StatusBar1.Panels(5) = “stop status”
Case 526
StatusBar1.Panels(5) = “playing” & CommonDialog1.FileTitle
Case 527
StatusBar1.Panels(5) = “Recording…”
Case 528
StatusBar1.Panels(5) = “finding…”
Case 529
StatusBar1.Panels(5) = “pause…”
Case 530
StatusBar1.Panels(5) = “setinng”
End Select
erropen:

End Sub
Private Function Tstring(sm As Long) As String
Dim s, m
s = (sm / 1000 / 60) Mod 60
m = (sm / 1000) Mod 60
Tstring = Format(s, “00”) & “;” & Format(m, “00”)
End Function

Private Sub Timer1_Timer()
MMControl1.PlayEnabled = True
MMControl1.Command = “play”
End Sub
7、 打包

§8(2*4复习) 考核