📄 030105.htm
字号:
Sub Command3_Click() <BR>rp = InputBox("请输入一个正确的路径名" & Chr(13) +
Chr(10) _<BR>& "(如:d:\vb6\lxn.dmb)", "数据库备份") 备份的路径 <BR>If rp
<> "" Then<BR>On Error GoTo lxn: 这句总会执行,<BR>FileCopy
Data1.DatabaseName, rp 所以这句总觉得累赘。<BR>End If<BR>Exit Sub<BR>lxn:<BR>MsgBox
("请先关闭数据库文件,然后再启动"), , "文件未关闭"<BR>Open "lxn12f.txt" For Output As
#1 <BR>Print #1, "lxn" & Chr(13) + Chr(10) & rp
在lxn12f中记录两行信息。<BR>Close #1<BR>Unload Me 关闭程序<BR>End Sub<BR>Private Sub
Form_Load()<BR>Open "lxn12f.txt" For Input As #1
第一次运行时请先在当前目录新建,以免出错<BR>Line Input #1, a$ 顺序读第1行 也可用on
error自动新建 <BR>Line Input #1, b$ 顺序读第2行 <BR>Close #1<BR>If a$ =
"lxn" Then<BR>FileCopy Data1.DatabaseName, b$<BR>MsgBox ("好消息,文件已经备份好了。"),
, "文件备份完毕"<BR>End If<BR>Open "lxn12f.txt" For Output As #1<BR>Print #1,
"0" & Chr(13) + Chr(10) & "0" 注意:要记录"两行""字符",<BR>Close #1
以对应两个"line input"<BR>End
Sub <BR>问题:怎样在数据库记录中增加图片字段,显示不同图片?我在ACCESS的一个表中设了个"照片"字段,1,将其字段类型设为"OLE对象",2,填记录时单击选中该记录段,在"插入"菜单中选"对象",3,出现插入对象对话框,选"BMP图象",4,出现BMP编辑程序,在"编辑"菜单选"粘帖自"(也可以是自已画),从目录中选一个BMP图象,关闭编辑器。这样,就插入了一个BMP图象。<BR>[
但问题是:在VB中想用DATA对象联合image或picturebox却总是显示"无效图片",而只能在Access内的窗体中显示,为什么?]<BR>重点笔记:数据库<BR>一。数据库的功能:1,数据定义:定义什么数据可存储在数据库中,以及数据如何被格式化和检验。2,数据操作:选择您所需的数据字段,过滤数据及对数据进行分类,可把数据与其他相关信息相连接,以及求数据和。3,数据控制:修改数据,多用户分享,访问权限等。<BR>二,数据库的结构:数据库的存在方式是数据库文件;数据库文件可包含多个表;一个表可包含多个字段。<BR>表的列代表了数据的类别(也就是同一字段),每一列称为域,字段名叫域名,域中的所有数据构成域字段,它包含这一列中所有的基本数据元素。<BR>表的行代表了数据记录,每一行表示一个记录。得到焦点的那一行记录叫当前记录。<BR>三,数据列表控件(DBList)和数据组合框控件(DBCombo):<BR>它们可以采用列表框和组合框的方式显示及更新数据库字段内容。主要属性:<BR>RowSource:选择一个要显示的DATA控件,<BR>ListField:选择要显示的一个字段(由rowsource指定的DATA控件)<BR>DataSource:列表框绑定到哪个DATA控件上(可能与rowsource指定"显示"部分不同)<BR>DataField:选择和列表框绑定的一个字段(由DataSource指定的DATA控件)<BR>BoundColumn:选择rowsource指定控件中一个字段,建立绑定字段和显示字段的联系。<BR>DBlist控件和DBcombo控件在"部件"--Microsoft
data boundlist
controls中。<BR>四,数据表格控件(DBGrid):<BR>这个控件可以绑定到一个DATA控件上,也可不绑定而作为表格用于其他用途,这时需用一个属性DataMode来设置,为0时绑定,为1时不绑定。<BR>DataSource属性:指定一个要绑定的DATA对象。<BR>例如我指定datasource属性为data1并且DataMode属性为0,运行时就可显示整个表了。<BR>DBGrid控件在"部件"--microsoft
data bound grid
control中。<BR>五,可视化数据管理器:<BR>在"外接程序"菜单中选"可视化数据管理器"。可视化数据管理器可以用来打开,修改和新建一个数据库。<BR>1,打开和修改数据库:在"文件"菜单"打开数据库"选Access,然后选中一个数据库,出现"数据库窗口"与"SQL窗口",在"数据库窗口"中双击选中某个表,即可打开,进行修改更新等操作。在"数据库窗口"中单击鼠标右键选"新建表",可在已有数据库中新增表。<BR>2,创建数据库:在"文件"菜单"新建"选ACCESS,然后在出现的"数据库窗口"中单击鼠标右键选"新建表",选"添加字段"按纽开始新建表就可以了。<BR>数据库中的"关系":是建立在两个表"之间"的链接。有一对一,一对多,多对多三种关系。<BR>[问题:在数据库中删除一个记录时,并不真正将其删除,而只是打上个标记而已,如何真正删除这些记录呢?对一个打上删除标记的记录,如何恢复为原样,能显示出来呢?]<BR>数据控件DATA的属性:Options:设置可对记录集进行的操作,为1是在多用户方式下不能改变记录集记录;为2是记录集只读;为4只能添加记录,不能读取记录;为8是即使会影响其他记录,也可对记录进行更新;为16只在不影响其他记录时才能更新记录;为32是当其RecordSource属性为SQL查询时,将其发往外部服务器执行。<BR>DATA对象的EditMode属性:返回当前记录所处的状态。为0当前记录没有编辑;为1是正在编辑当前记录;为2是添加新记录。<BR>DATA控件的方法和事件:Refresh方法:在运行中需要改变DATA对象属性时(如RecordSource,DataBaseName,connect,readonly等等),要用Refresh方法才能使更改的属性设置生效(更新)。如在代码中改变DATA的databasename属性:<BR>Data1.DatabaseName
= "d:\vb6\lxn.mdb"<BR>Data1.RecordSource =
"BB"<BR>Data1.Refresh<BR>updateControls方法:当数据绑定控件中的内容进行修改后,用此方法将内容恢复原样,可防止随意改动(当然也可以在Validate事件中设save=False来实现)。如:<BR>Private
Sub Text1_LostFocus()<BR>If Text1.DataChanged = True Then<BR>MsgBox
"这项内容不能改动"<BR>Data1.UpdateControls<BR>End If<BR>End
Sub<BR>updateRecord方法:将当前内容保存到数据库中,但不触发Validate事件,<BR>Error事件:运行发生执行错误时触发。有两个参数,Dataerr返回错误号,Response设置如何处理该错误,为0是继续执行,为1显示错误信息。 <BR>Reposition事件:改变记录指针时触发(指针已移到新记录)。<BR>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等。<BR>数据绑定控件的DataFormat属性:设置数据的不同显示格式(自选)。<BR>datachanged属性:绑定控件的内容是否发生变化。<BR>一个新增添的ActiveX控件或DLL库需要经过注册才能在VB中正常使用,注册的方法是在WINDOWS文件夹下找到regsvr32.exe文件进行的。<BR>ADO控件的connectionstring属性用来连接一个数据库,除用"连接字符串"建立连接外,还可选"使用data
link文件(链接文件)"的方式建立连接,先随便在VB外创建(如桌面)一个后缀为udl的文件(只要单击鼠标右键"新建"选"Microsoft数据链接"即可),然后双击,从"提供者"卡开始完成对话框即可。有了这样一个链接文件,就可在adodc的connectionstring属性中指定这个Data
link文件。使用数据链接文件的好处是:多个不同程序的ADO可同用一个这样的链接文件。<BR>数据库的结构:<BR>容器:数据库本身就是一个大的容器,<BR>关系:表示表与表之间的联系。<BR>查询结果集、表和记录集:它们都是由字段和记录构成的一个二维表,不同的是:<BR>表是数据库中最为原始的二维数据;查询结果集是通过一个条件表达式,从一个或多个表中抽取数据的集合;而记录集是一个编程时才生成的表,可包含多个表中的数据,一个记录集就是一张活动的,由行、列组成的表。<BR>关于记录集--我们在数据库程序中,都是对记录集进行操作,通过记录集来改变原数据库文件的内容。<BR>数据库访问对象DATA控件的主要属性:<BR>除connect,databasename,recordsource属性外,还有:<BR>DefaultType:选择数据访问接口类型,1为ODBC(用于远程)数据源;2为Jet(用于本地)数据源。<BR>exclusive:是否选择单用户(true为单用户,false为多用户)。<BR>recordsettype:选择记录集recordset对象的类型(为上文提到的五种之一)。<BR>另外,recordsource属性:指明记录集是如何生成的,可以是一张表,也可以是一个查询结果集,比如一句Select语句。如下:<BR>select
* from [联系人] Order by
[联系人ID]<BR>什么意思?这是一条SQL语句,SQL--数据库的结构化"查询"语言,常用的如select语句,一个select语句生成一个记录集,格式:<BR>select
记录数量 * 表名.字段名 as 新字段名,表名.字段名 as 新字段名,……from 表名,表名,……IN 数据库名 where …group
by …having…order by…with owneraccess
option.<BR>哇,这么长,不要紧,很多都是可选项。最短为:<BR>select 字段名 from
表名<BR>用一个*号来表示选取表中所有字段,例如:<BR>select * from
个体户管理<BR>"记录数量"限制返回的记录数量,为以下值之一:all,distinct,distinctrow或top.缺省为all全部。*号为从特定表中指定全部字段,表名.字段名为数据库原表中的字段,新字段名为生成到记录集中的字段名,from表名是表示从"这"些表中得到数据,where…:操作条件,如将不同表中的不同字段按一定条件连接好;group
by…和having…:分组;order by…:排序;with owneraccess
option:是否有完全的查询权限。<BR>DATA数据库程序在开始运行时,先按databasename属性打开一个数据库,再创建database对象和recordset对象。<BR>DATA数据控件的常用事件:<BR>Validate:移动记录集记录指针时发生,该事件发生时记录指针还在原记录。它有两个参数,返回引发此事件的操作(如是movefirst(1)还是Movenext(3)还是addnew(5)…),save:返回被连接的绑定控件中数据是否被改变。如果改变则为true.<BR>Reposition:移动记录集记录指针时发生,该事件发生时记录指针已移到新记录。<BR>DATA数据控件记录集recordset对象的属性,方法:<BR>BOF:当记录集记录指针指到起始记录(第1条记录),这时返回true.<BR>EOF:当记录指针指到最后一条记录时,该属性返回true.<BR>AbsolutePosition:返回当前记录指针,第1条为0,只读。<BR>BookMark:返回当前记录指针的书签,为字符串。<BR>RecordCount:返回记录集中记录的总数。<BR>Updatable:记录集内容是否可修改。<BR>sort:指定用来对全部记录排序的参照字段。<BR>LastModified:记下上次修改过的记录位置。<BR>fields:包含记录集中各字段的集合。指定某个字段格式为:fields("字段名")。可省略。<BR>如有:data1.recordset.fields("姓名").value为当前记录(用value表示)的"姓名"字段值如可为"李新宁"。也可写为data1.recordset("姓名").value,括号内写明字段名或"字段索引值",第1个字段索引值从0开始。如data1.recordset(0).value.<BR>Update方法:对记录集的更改进行保存。<BR>MOVE方法:movefirst,记录集指针移到第1条记录;<BR>movelast,记录集指针移到最后1条记录;<BR>moveprevious,记录集指针移到上一条记录;<BR>movenext,记录集指针移到下一条记录。<BR>Find方法:findfirst,在记录集中查询符合条件的第1条记录;<BR>findlast,在记录集中查询符合条件的最后1条记录;<BR>findprevious,在记录集中查询符合条件的上一条记录;<BR>findnext,在记录集中查询符合条件的下一条记录。<BR>find方法格式为:findfirst(或findnext等)"[字段名]like
'字符'"<BR>data1.recordset.findfirst "[姓名] like
'李新宁'" <BR>查找记录还有一种seek方法,但--seek只用于Table类型的记录集中。其他四类的都要用find.<BR>在记录集中添加新记录,用addnew方法先添加一个新的空记录,这时它自动成为当前记录,通过修改,然后用update方法保存,如:data1.recordset.update<BR>修改当前记录,先用Edit方法修改记录(如data1.recordset.edit),再用update方法保存。<BR>删除当前记录用delete方法就行了。<BR>关闭记录集用close方法,格式为"记录集.close"。<BR>DBgrid控件:它用来显示recordset记录集中的数据表格,在DBGrid控件中包含多个列,每列是一个"column对象",全部列的column对象组成columns对象集合,就构成了DBGrid控件。可通过columns(index)来访问每个column对象。随便举个例子,例如我们可用DBGrid.Columns.Count得到列数,而从data1.recordset.recordcount得到记录的行数,就知道了记录集有几行几列。<BR>要求当前记录的某个字段值,只要用"记录集("字段名")"就可以了。
FORM窗体的initialize事件:是这样的,在程序启动时,首先发生窗体的initialize事件,此事件后才是FORM的LOAD事件,装载窗体内的各个控件,程序是这样启动的,这里的initialize事件有用。<BR>MSFlexGrid控件,类似DBGrid控件,但比DBGrid控件更灵活,也更复杂,使用它,可以实现数据库编程中一些复杂的事情,属性:<BR>text:当前单元的内容。<BR>wordwrap:一个单元大小是否自动匹配文本内容。<BR>cols:表格列数;<BR>rows:表格行数。<BR>远程数据访问:客户机/服务器结构--客户机就是我们的一般的计算机,可以提出数据的访问请求,这个请求传递到商业服务器,商业服务器检查用户身份,权限等,将合法请求提交给数据库服务器,数据库服务器管理了全部的数据信息,它按您的请求生成一个查询结果集,再通过商业服务器传回给我们的客户机。<BR>客户机怎样提出访问请求呢?回答是:客户机和服务器间因存在语法差别,不能直接对话,必须通过一个叫ODBC的"翻译"来转换格式,1,在ODBC中添加数据源(包括自定一个数据源名、远程数据库的服务器名称,以及登录方式、口令等):方法是在"控制面板"中"ODBC数据源"中进行添加;2,在VB程序中使用ODBC访问远程数据库,方法是只要在程序中写入刚才添加的那个"数据源名"就可以了。(数据源名是自已定的)。<BR>怎样设置Adodc对象的connectionstring属性:这是一个最基本的属性,在出现的对话框中先选择并输入一个连接资源为数据链接文件或ODBC数据资源或连接字符串,如果是在本地机上的ACCESS库,选连接字符串,单击"生成"->提供者选Jet3.51->输入数据库名称,单击"确定"就行了。<BR>接着就是设置recordsource属性了,同样会出现一个属性页对话框,命令类型有四种选项(就是commandtype属性中的几种情况),(如果记录集是由表生成的选2),然后在"表或存储过程名称"中选一个表就行了。</FONT>
<P align=center><BR>< <A
href="http://www.xxby.com/vb/030104.htm">上一页</A>--<A
href="http://www.xxby.com/" target=_blank>华生小屋</A>--<A
href="http://www.xxby.com/vb/040101.htm">下一页</A>
><BR></P></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -