vb数据库编程(五)--DAO对象

VB基础 专栏收录该内容
5 篇文章 0 订阅

1,DAO对象的引用:在"工程"菜单"引用"中选Microsoft DAO 3.51 Object Library即可。
2,DAO中包含多个对象,以层次关系组合在一起,顶层对象是DBEngine.在它的下面包含三类子集,(1),错误对象子集,(2),属性集:DBEngine.Properties,(3),工作区集:DBEngine.Workspaces。
引擎DBEngine对象:
DBEngine对象的属性:DefaultType属性,指明创建的workspace对象的类型。可在CreateWorkspace方法创建Workspace对象时用Type参数指明类型,缺省为dbUseJet(值2),表明使用Jet Engine数据源。
DefaultUser属性:指定Workspace初始化时使用的缺省用户名。
DefaultPassword属性:指定workspace初始化时使用的缺省密码。
方法:
CompactDatabase方法:永久删除数据库中的记录(删除已打上删除标记的记录),以压缩数据库。格式:
DBEngine.CompactDatabase 旧数据库路径名称,新库路名,国别,选项,密码。
DBEngine.CompactDatabase "c:/a.mdb","d:/s.mdb",dbLangChineseSimplified, _
dbDncrypt+dbVersion30.
其中国别,选项和密码参数都是可选参数,国别有dbLangGeneral(英语)以及
dbLangChineseSimplified(中文)等;选项参数包含"是否加密"和数据库版本. 是否加密有dbEncrypt(加密)和dbDncrypt(不加密)。Jet版本有dbVersion10、dbVersion30等。
RepairDatabase方法:修复数据库,格式:
DBEngine.RepairDatabase 数据库路径和名称。
DBEngine.RepairDatabase "c:/windows/desktop/db1.mdb"
CreateWorkspace方法:建立一个新的workspace对象。格式:
Set workspace对象变量=DBEngine.CreateWorkspace(name,user,password,type)
参数说明:name指定该工作区workspace对象的名称,user设置该工作区的用户名,password是使用者的密码,type指定类型,有Jet型(dbUseJet)和ODBC型(dbUseODBC).
-----
工作区WorkSpace对象:在DBEngine对象中有一个workspace对象的集合,引用一个workspace对象:DBEngine.WorkSpaces(下标或对象名),如DBEngine.Workspaces(0),下标从0开始,或DBEngine.WorkSpaces("lxn").lxn为一个workspace对象的名字。
workspace对象的属性:Name属性:工作区对象的名称。Type属性:该workspace对象的类型。UserName属性:使用者的名称。
workspace对象的方法:事务处理方法:所谓事务,就是对数据库的一系列的操作,如修改等等。
(1),BeginTrans方法:开始一个事务.
(2),CommitTrans方法:提交事务(即对数据库的操作成功,数据库内容更改) (3),RollBack方法:滚回事务(即事务中的所有操作取消)。
首先开始1个事务,事务的内容保存在硬盘缓冲区中,只有当用户使用了提交事务的命令后,才将缓冲区中对数据库的修改永久地写入数据库,如果使用了事务滚回命令,那么缓冲区中对数据库的操作将被清除,数据库不会被修改。 CreateDatabase方法:创建一个空数据库。格式:
set 数据库对象变量=Workspace对象.CreateDatabase(新数据库名,国别,选项)
其中国别和选项参数同compactdatabase方法的一样。
OpenDatabase方法:打开一个已有数据库,格式:
Set.database对象变量=Workspace对象.OpenDatabase
(databasename,options,read_only,connect)
其中有几个参数:databasename是1个有效的JET数据库文件或ODBC数据源名(DSN),options参数:对JET数据库文件--true为独占方式,false为共享方式;而对ODBC数据源--建立连接的方式,即是否提示用户和何时提示用户。read_only为是否以只读方式打开数据库,connect参数:连接方式和密码,可用来设置要打开外部数据库的类型。
close方法:关闭1个workspace对象。格式:workspace对象.Close
------
数据库Database对象:在1个workspace对象中包含一个database对象集合,1个database对象代表了1个打开的数据库,每1个database对象又包含了五个对象集,即表TableDef对象集合,查询QueryDef对象集合,容器Container对象集合,记录集Recordset对象集合和关系Relation对象集合,
database对象属性:name属性:标识1个数据库对象。
Updatable属性:该数据库对象内容是否可以更改(true时可以,false为只读)
RecordAffected属性:返回在数据库对象中删除,插入,更改的记录个数。
Transactionds属性:是否允许使用事务处理方法。
方法:
CreateQueryDef方法:创建1个新的查询对象,格式:
set 对象变量=database对象.CreateQueryDef(查询对象名,SQL命令)
CreateTableDef方法:创建1个TableDef对象
OpenRecordset方法:创建1个新的recordset对象,格式:
set 对象变量=database对象.OpenRecordset(数据源,类型,选项,开放权限)
其中,数据源可是1个表,也可是1条SQL语句,类型就是记录集的五种类型(table,
dynaset,snapshot等)之一,选项是对记录集对象的一些特色设置,如只能添加或禁止其他用户读写等。
CreateRelation方法:创建新的关系对象。
Execute方法:执行1个动作查询。
close方法:关闭数据库database对象.
-------
表TableDef对象:表的结构。1个数据库database对象中包含了1个TableDef对象集合,有多个tabledef对象,属性:
LastUpdatabled属性:表最后1次修改的日期。
DataCreated属性:该对象对应表的创建日期。
SourceTableName属性:链接表或基表的名称。
Updatable属性:该对象是否可以更新。
recordcount属性:返回表中记录的个数。
Attributes属性:返回对应的表的状态。
ValidationRule属性:设置有效性规则。以进行有效性检查。
ValidationText属性:当表的内容不符合有效性规则时,显示的警告信息。
方法:
CreateField方法:创建1个字段field对象。格式:
Set 字段对象变量=tabledef对象.CreateField(字段名,数据类型,大小)
OpenRecordset方法:打开对应的表记录集。格式:
Set 记录集对象变量=tabledef对象.OpenRecordset(类型,选项,只读)
其参数和上面数据库database对象的openrecordset方法的一致。
-----------
记录集recordset对象:在前面讲过许多属性,现补充如下:
Restartble属性:是否可以使用Requery方法重新查询返回不同记录集。
filter属性:指定条件,使记录集只返回符合条件的记录。相当于SQL语言中的where关健字。如:
Dim c as Database
Dim d as Recordset
Set d = c.OpenRecordset("select * from BB")
d.Filter = "垫付(元) > 0"
Set d = d.OpenRecordset()
注:对filter属性重新赋值后,要用openrecordset()方法重新打开,才能起作用。
LastModified属性:返回最后一个被修改或最新添加的记录的书签。
LockEdits属性:当更改数据时进行锁定,避免多个用户同时对同1记录修改而产生冲突。
-----
查询QueryDef对象:可在其中进行SQL查询。包含两个对象集合:Parameter对象集和Field对象集。Parameter包含所有变量对象的集合,Field包含字段对象集合。
属性:SQL属性;用来使用SQL语句,格式: querydef对象.SQL="SQL语句"
例:
Dim e As Database
Dim f As QueryDef
Dim g As Recordset
Set e = DBEngine.Workspaces(0).OpenDatabase("c:/windows/desktop/lxn.mdb")
Set f = e.CreateQueryDef("lxnn")
f.SQL = "select * from BB where 姓名<>'吴莲秀'"
Set g = f.OpenRecordset()
Execute方法:对数据库执行1个动作查询。格式:
querydef对象.Execute options
OpenRecordset方法:按查询对象querydef内容返回1个记录集。格式与tabledef对象的openrecordset方法一致。
-----
字段Field对象:在表TableDef对象中包含1个field对象集合,其中由多个field对象组成,每个field对象对应数据库表中1个字段。可通过field对象对当前记录的某字段进行修改。引用格式如:recordset对象.Fields("姓名"),或缺省为recordset("姓名")
属性:name属性:字段名称。
CollatingOrder属性:文本排序的规则。
OrdinalPosition属性:1个字段field对象在field对象集合中的下标。
size属性:字段的最大字节数。
value属性:返回或设置当前记录指定字段值。是field对象的缺省属性,可省略,如:g.fields("id").value=94114,也可写为g.fields("id")=94114.
sourcefield,sourcetable属性:1个字段field对象中数据来源的字段或表的名称。我们知道,记录集可能作为一个查询结果集,是建立在几个不同表上的,且字段名也可能被更改了。如果希望知道1个字段来源于哪个表的哪个字段,可用此两个属性。
方法:
AppendChunk方法:
GetChunk方法:用于对大型字段的数据进行分段读取。格式:
field对象.GetChunk 开始拷贝读取的位置,读取的字节数。
----
索引index对象:index对象是TableDef对象的index对象集合中的成员。使用索引index对象,可以在表中根据1个或多个关健字段对记录进行排序,并可加快查找速度。索引的关健字段在index对象的Fields属性中定义。属性:
name属性:对象名称。
Primary属性:确定1个索引是否是唯一的,即主索引,主索引必须是唯一的,且不能有null值。
Unique属性:一个索引是否允许有相同的关健字段值的记录存在。
CreateField方法:指定index对象的索引字段。格式同表对象的createfield方法一致,不过没有类型,大小参数。
当一个表具有索引后,记录将按索引进行排序。
========
附:在数据库程序中,常常使用的是DBEngine.WorkSpaces(0),即缺省的工作区对象,也就是说,我们通常只操作工作区以下的
对象群,因此,在代码中"DBEngine.WorkSpaces(0)"可省略,如:
dim c as database
set c=DBEngine.WorkSpaces(0).OpenDatabase("c:/a.mdb",false,false)
可写为
set c=OpenDatabase("c:/a.mdb",false,false)
数据库:
注:在VB6中不能直接识别ACCESS2000格式数据库,要先将ACCESS2000库转换为以前版本,方法是在ACCESS2000的"工具"菜单"数据库实用工具"选"转换数据库""到旱期版本"。
数据库程序中的Recordset(记录集)对象,它不需要另行创建,recordset代表在程序中使用的数据库部分的对象。可用来查找,排序,添加和删除记录。
查找记录,如下例:
Private Sub mnuchazhao_Click()
search$ = InputBox("请输入你要查找的姓名", "查找指定人")
On Error GoTo lxn:
Data1.Recordset.Index = "姓名"
Data1.Recordset.Seek "=", search$
If Data1.Recordset.NoMatch = True Then
Data1.Recordset.MoveFirst
End If
lxn:
End Sub
说明如下:
一,index属性:要使用的数据库字段;
二,seek方法:查找记录,可用=,<,>等关系运算符比较字符串。
三,nomatch属性:值为true时表示未查找到匹配项;
四,movefirst方法:移动到第一条记录。
还有一种原始但实用的方法,就是用循环语句逐条检索,如下:
Private Sub mnuchazhao_Click()
search$ = InputBox("请输入你要查找的姓名", "查找指定人")
On Error GoTo lxn:
Do While Text1.Text <> search$
Data1.Recordset.MoveNext 移到下一条记录
Loop
lxn:
End Sub
怎么样,简洁易懂。
向数据库中添加记录:
一,将DATA1对象的readonly属性设为false。
二,用addnew方法向库中添加新记录;只要用了data1.recordset.addnew,就会立刻创建出一条新的空白记录等你填。例下:
Private Sub Command1_Click()
rp = MsgBox("你要添加记录吗?", vbOKCancel, "添加记录")
If rp = vbOK Then
Text1.SetFocus 等一下空记录诞生要从第一个文本框开始填入,先激活。 Data1.Recordset.AddNew
End If
End Sub
添加的记录自动存入档案,上例有一个通用方法setfocus,功能:立刻激活某个对象并赋予其焦点。
删除记录:1。把要删除的记录成为当前记录;
2。用recordset对象的delete方法删除一条记录:Data1.recordset.delete
3.用mnvenext方法移动当前记录到下一条,防止"空页"现象。例:
Data1.recordset.movenext
举一个例如下:
Private Sub Command2_Click()
rp = MsgBox("你真的要删除当前记录吗?", vbOKCancel, "删除记录")
If rp = vbOK Then
Data1.Recordset.Delete
Data1.Recordset.MoveNext
End If
End Sub
数据库的备份: filecopy 源路径及文件名,目标路径及文件名
注:源文件正打开时不能进行备份。一般用在本程序FORM LOAD事件,如下例:
rp = InputBox("请输入一个正确的路径名" & Chr(13) + Chr(10) _
& "(如:d:/vb6/lxn.dmb)", "数据库备份")
If rp <> "" Then
FileCopy Data1.DatabaseName, rp
End If
只在程序开始时备份总觉得拘束,可否在窗体中用一个菜单或按纽随时备份呢,我是采用关掉程序(这样来关数据库)再启动的办法,并创建一个能"跨程序"传递信息的文本文件(例中的lxn12f.txt):
Private Sub Command3_Click()
rp = InputBox("请输入一个正确的路径名" & Chr(13) + Chr(10) _
& "(如:d:/vb6/lxn.dmb)", "数据库备份") 备份的路径
If rp <> "" Then
On Error GoTo lxn: 这句总会执行,
FileCopy Data1.DatabaseName, rp 所以这句总觉得累赘。
End If
Exit Sub
lxn:
MsgBox ("请先关闭数据库文件,然后再启动"), , "文件未关闭"
Open "lxn12f.txt" For Output As #1
Print #1, "lxn" & Chr(13) + Chr(10) & rp 在lxn12f中记录两行信息。
Close #1
Unload Me 关闭程序
End Sub
Private Sub Form_Load()
Open "lxn12f.txt" For Input As #1 第一次运行时请先在当前目录新建,以免出错
Line Input #1, a$ 顺序读第1行 也可用on error自动新建
Line Input #1, b$ 顺序读第2行
Close #1
If a$ = "lxn" Then
FileCopy Data1.DatabaseName, b$
MsgBox ("好消息,文件已经备份好了。"), , "文件备份完毕"
End If
Open "lxn12f.txt" For Output As #1
Print #1, "0" & Chr(13) + Chr(10) & "0" 注意:要记录"两行""字符",
Close #1 以对应两个"line input"
End Sub
问题:怎样在数据库记录中增加图片字段,显示不同图片?我在ACCESS的一个表中设了个"照片"字段,1,将其字段类型设为"OLE对象",2,填记录时单击选中该记录段,在"插入"菜单中选"对象",3,出现插入对象对话框,选"BMP图象",4,出现BMP编辑程序,在"编辑"菜单选"粘帖自"(也可以是自已画),从目录中选一个BMP图象,关闭编辑器。这样,就插入了一个BMP图象。
[ 但问题是:在VB中想用DATA对象联合image或picturebox却总是显示"无效图片",而只能在Access内的窗体中显示,为什么?]
重点笔记:数据库
一。数据库的功能:1,数据定义:定义什么数据可存储在数据库中,以及数据如何被格式化和检验。2,数据操作:选择您所需的数据字段,过滤数据及对数据进行分类,可把数据与其他相关信息相连接,以及求数据和。3,数据控制:修改数据,多用户分享,访问权限等。
二,数据库的结构:数据库的存在方式是数据库文件;数据库文件可包含多个表;一个表可包含多个字段。
表的列代表了数据的类别(也就是同一字段),每一列称为域,字段名叫域名,域中的所有数据构成域字段,它包含这一列中所有的基本数据元素。
表的行代表了数据记录,每一行表示一个记录。得到焦点的那一行记录叫当前记录。
三,数据列表控件(DBList)和数据组合框控件(DBCombo):
它们可以采用列表框和组合框的方式显示及更新数据库字段内容。主要属性:
RowSource:选择一个要显示的DATA控件,
ListField:选择要显示的一个字段(由rowsource指定的DATA控件)
DataSource:列表框绑定到哪个DATA控件上(可能与rowsource指定"显示"部分不同)
DataField:选择和列表框绑定的一个字段(由DataSource指定的DATA控件)
BoundColumn:选择rowsource指定控件中一个字段,建立绑定字段和显示字段的联系。
DBlist控件和DBcombo控件在"部件"--Microsoft data boundlist controls中。
四,数据表格控件(DBGrid):
这个控件可以绑定到一个DATA控件上,也可不绑定而作为表格用于其他用途,这时需用一个属性DataMode来设置,为0时绑定,为1时不绑定。
DataSource属性:指定一个要绑定的DATA对象。
例如我指定datasource属性为data1并且DataMode属性为0,运行时就可显示整个表了。
DBGrid控件在"部件"--microsoft data bound grid control中。
五,可视化数据管理器:
在"外接程序"菜单中选"可视化数据管理器"。可视化数据管理器可以用来打开,修改和新建一个数据库。
1,打开和修改数据库:在"文件"菜单"打开数据库"选Access,然后选中一个数据库,出现"数据库窗口"与"SQL窗口",在"数据库窗口"中双击选中某个表,即可打开,进行修改更新等操作。在"数据库窗口"中单击鼠标右键选"新建表",可在已有数据库中新增表。
2,创建数据库:在"文件"菜单"新建"选ACCESS,然后在出现的"数据库窗口"中单击鼠标右键选"新建表",选"添加字段"按纽开始新建表就可以了。
数据库中的"关系":是建立在两个表"之间"的链接。有一对一,一对多,多对多三种关系。
[问题:在数据库中删除一个记录时,并不真正将其删除,而只是打上个标记而已,如何真正删除这些记录呢?对一个打上删除标记的记录,如何恢复为原样,能显示出来呢?]
数据控件DATA的属性:Options:设置可对记录集进行的操作,为1是在多用户方式下不能改变记录集记录;为2是记录集只读;为4只能添加记录,不能读取记录;为8是即使会影响其他记录,也可对记录进行更新;为16只在不影响其他记录时才能更新记录;为32是当其RecordSource属性为SQL查询时,将其发往外部服务器执行。
DATA对象的EditMode属性:返回当前记录所处的状态。为0当前记录没有编辑;为1是正在编辑当前记录;为2是添加新记录。
DATA控件的方法和事件:Refresh方法:在运行中需要改变DATA对象属性时(如RecordSource,DataBaseName,connect,readonly等等),要用Refresh方法才能使更改的属性设置生效(更新)。如在代码中改变DATA的databasename属性:
Data1.DatabaseName = "d:/vb6/lxn.mdb"
Data1.RecordSource = "BB"
Data1.Refresh
updateControls方法:当数据绑定控件中的内容进行修改后,用此方法将内容恢复原样,可防止随意改动(当然也可以在Validate事件中设save=False来实现)。如:
Private Sub Text1_LostFocus()
If Text1.DataChanged = True Then
MsgBox "这项内容不能改动"
Data1.UpdateControls
End If
End Sub
updateRecord方法:将当前内容保存到数据库中,但不触发Validate事件,
Error事件:运行发生执行错误时触发。有两个参数,Dataerr返回错误号,Response设置如何处理该错误,为0是继续执行,为1显示错误信息。
Reposition事件:改变记录指针时触发(指针已移到新记录)。
Validate事件:改变记录指针时触发(指针还在原记录),以及删除,卸载,更新,关闭等操作之前也会触发。它有两个参数:save返回数据绑定控件中的内容是否被改变,设置是否要对数据库进行更新。Action返回当前进行的操作:为0是取消操作;为1,2,3,4分别表示使用movefirst,moveprevious,movenext,movelast方法引起Validate事件,为5是使用Addnew方法引发,为6是update方法,为7是delete方法,为8是find方法,为9是设置bookmark属性,为10是使用close方法,为11使用unload方法。这么多,应该用英文常数来记:vbDataActionAddnew,vbDataActionFind等。
数据绑定控件的DataFormat属性:设置数据的不同显示格式(自选)。
datachanged属性:绑定控件的内容是否发生变化。
一个新增添的ActiveX控件或DLL库需要经过注册才能在VB中正常使用,注册的方法是在WINDOWS文件夹下找到regsvr32.exe文件进行的。
ADO控件的connectionstring属性用来连接一个数据库,除用"连接字符串"建立连接外,还可选"使用data link文件(链接文件)"的方式建立连接,先随便在VB外创建(如桌面)一个后缀为udl的文件(只要单击鼠标右键"新建"选"Microsoft数据链接"即可),然后双击,从"提供者"卡开始完成对话框即可。有了这样一个链接文件,就可在adodc的connectionstring属性中指定这个Data link文件。使用数据链接文件的好处是:多个不同程序的ADO可同用一个这样的链接文件。
数据库的结构:
容器:数据库本身就是一个大的容器,
关系:表示表与表之间的联系。
查询结果集、表和记录集:它们都是由字段和记录构成的一个二维表,不同的是:
表是数据库中最为原始的二维数据;查询结果集是通过一个条件表达式,从一个或多个表中抽取数据的集合;而记录集是一个编程时才生成的表,可包含多个表中的数据,一个记录集就是一张活动的,由行、列组成的表。
关于记录集--我们在数据库程序中,都是对记录集进行操作,通过记录集来改变原数据库文件的内容。
数据库访问对象DATA控件的主要属性:
除connect,databasename,recordsource属性外,还有:
DefaultType:选择数据访问接口类型,1为ODBC(用于远程)数据源;2为Jet(用于本地)数据源。
exclusive:是否选择单用户(true为单用户,false为多用户)。
recordsettype:选择记录集recordset对象的类型(为上文提到的五种之一)。
另外,recordsource属性:指明记录集是如何生成的,可以是一张表,也可以是一个查询结果集,比如一句Select语句。如下:
select * from [联系人] Order by [联系人ID]
什么意思?这是一条SQL语句,SQL--数据库的结构化"查询"语言,常用的如select语句,一个select语句生成一个记录集,格式:
select 记录数量 * 表名.字段名 as 新字段名,表名.字段名 as 新字段名,……from 表名,表名,……IN 数据库名 where …group by …having…order by…with owneraccess option.
哇,这么长,不要紧,很多都是可选项。最短为:
select 字段名 from 表名
用一个*号来表示选取表中所有字段,例如:
select * from 个体户管理
"记录数量"限制返回的记录数量,为以下值之一:all,distinct,distinctrow或top.缺省为all全部。*号为从特定表中指定全部字段,表名.字段名为数据库原表中的字段,新字段名为生成到记录集中的字段名,from表名是表示从"这"些表中得到数据,where…:操作条件,如将不同表中的不同字段按一定条件连接好;group by…和having…:分组;order by…:排序;with owneraccess option:是否有完全的查询权限。
DATA数据库程序在开始运行时,先按databasename属性打开一个数据库,再创建database对象和recordset对象。
DATA数据控件的常用事件:
Validate:移动记录集记录指针时发生,该事件发生时记录指针还在原记录。它有两个参数,返回引发此事件的操作(如是movefirst(1)还是Movenext(3)还是addnew(5)…),save:返回被连接的绑定控件中数据是否被改变。如果改变则为true.
Reposition:移动记录集记录指针时发生,该事件发生时记录指针已移到新记录。
DATA数据控件记录集recordset对象的属性,方法:
BOF:当记录集记录指针指到起始记录(第1条记录),这时返回true.
EOF:当记录指针指到最后一条记录时,该属性返回true.
AbsolutePosition:返回当前记录指针,第1条为0,只读。
BookMark:返回当前记录指针的书签,为字符串。
RecordCount:返回记录集中记录的总数。
Updatable:记录集内容是否可修改。
sort:指定用来对全部记录排序的参照字段。
LastModified:记下上次修改过的记录位置。
fields:包含记录集中各字段的集合。指定某个字段格式为:fields("字段名")。可省略。
如有:data1.recordset.fields("姓名").value为当前记录(用value表示)的"姓名"字段值如可为"李新宁"。也可写为data1.recordset("姓名").value,括号内写明字段名或"字段索引值",第1个字段索引值从0开始。如data1.recordset(0).value.
Update方法:对记录集的更改进行保存。
MOVE方法:movefirst,记录集指针移到第1条记录;
movelast,记录集指针移到最后1条记录;
moveprevious,记录集指针移到上一条记录;
movenext,记录集指针移到下一条记录。
Find方法:findfirst,在记录集中查询符合条件的第1条记录;
findlast,在记录集中查询符合条件的最后1条记录;
findprevious,在记录集中查询符合条件的上一条记录;
findnext,在记录集中查询符合条件的下一条记录。
find方法格式为:findfirst(或findnext等)"[字段名]like '字符'"
data1.recordset.findfirst "[姓名] like '李新宁'"
查找记录还有一种seek方法,但--seek只用于Table类型的记录集中。其他四类的都要用find.
在记录集中添加新记录,用addnew方法先添加一个新的空记录,这时它自动成为当前记录,通过修改,然后用update方法保存,如:data1.recordset.update
修改当前记录,先用Edit方法修改记录(如data1.recordset.edit),再用update方法保存。
删除当前记录用delete方法就行了。
关闭记录集用close方法,格式为"记录集.close"。
DBgrid控件:它用来显示recordset记录集中的数据表格,在DBGrid控件中包含多个列,每列是一个"column对象",全部列的column对象组成columns对象集合,就构成了DBGrid控件。可通过columns(index)来访问每个column对象。随便举个例子,例如我们可用DBGrid.Columns.Count得到列数,而从data1.recordset.recordcount得到记录的行数,就知道了记录集有几行几列。
要求当前记录的某个字段值,只要用"记录集("字段名")"就可以了。 FORM窗体的initialize事件:是这样的,在程序启动时,首先发生窗体的initialize事件,此事件后才是FORM的LOAD事件,装载窗体内的各个控件,程序是这样启动的,这里的initialize事件有用。
MSFlexGrid控件,类似DBGrid控件,但比DBGrid控件更灵活,也更复杂,使用它,可以实现数据库编程中一些复杂的事情,属性:
text:当前单元的内容。
wordwrap:一个单元大小是否自动匹配文本内容。
cols:表格列数;
rows:表格行数。
远程数据访问:客户机/服务器结构--客户机就是我们的一般的计算机,可以提出数据的访问请求,这个请求传递到商业服务器,商业服务器检查用户身份,权限等,将合法请求提交给数据库服务器,数据库服务器管理了全部的数据信息,它按您的请求生成一个查询结果集,再通过商业服务器传回给我们的客户机。
客户机怎样提出访问请求呢?回答是:客户机和服务器间因存在语法差别,不能直接对话,必须通过一个叫ODBC的"翻译"来转换格式,1,在ODBC中添加数据源(包括自定一个数据源名、远程数据库的服务器名称,以及登录方式、口令等):方法是在"控制面板"中"ODBC数据源"中进行添加;2,在VB程序中使用ODBC访问远程数据库,方法是只要在程序中写入刚才添加的那个"数据源名"就可以了。(数据源名是自已定的)。
怎样设置Adodc对象的connectionstring属性:这是一个最基本的属性,在出现的对话框中先选择并输入一个连接资源为数据链接文件或ODBC数据资源或连接字符串,如果是在本地机上的ACCESS库,选连接字符串,单击"生成"->提供者选Jet3.51->输入数据库名称,单击"确定"就行了。
接着就是设置recordsource属性了,同样会出现一个属性页对话框,命令类型有四种选项(就是commandtype属性中的几种情况),(如果记录集是由表生成的选2),然后在"表或存储过程名称"中选一个表就行了。

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值