030101.htm

来自「提供一个VB学习教程,入门级。来源于网上」· HTM 代码 · 共 162 行 · 第 1/2 页

HTM
162
字号
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>vb study</title><style>
<!--
td {font-size: 9pt}
A:link {text-decoration: none; color: #0033cc;font-size: 9pt}
A:visited {text-decoration: none; color: #0066CC;font-size: 9pt}
A:active {text-decoration: none; color: #ff0000; font-size: 9pt}
A:hover {text-decoration: underline; color: #000000;font-size: 9pt}
-->
</style>
</head>

<body>

<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" width="98%">
    <tr>
      <td width="100%"><a href="#">你的位置</a>:<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="#">VB学习</a>--<a href="#">数据库</a></td>
    </tr>
    <tr>
      <td width="100%">
        <p align="center"><font size="2">记录集</font></td>
    </tr>
    <tr>
      <td width="100%"><br>
        <font size="2">记录集是从数据库中按一定查询条件读入到内存中的一批记录,以供快速的操作。<br>
        记录集recordset对象的属性,方法:<br>
        BOF:当记录集记录指针指到起始记录(第1条记录)再向前移(即超过第1条记录),这时返回true.常用来对付一些出错情况。注:在BOF或EOF时使用update方法会出错。<br>
        EOF:当记录指针指到最后一条记录之后(即超过了最后1条记录)时,该属性返回true.注:当一个记录集为空时,其BOF和EOF属性都为True,可据此检测一个记录集是否为空。<br>
        AbsolutePosition:返回当前记录指针,即当前记录是第几条记录,只读。<br>
        BookMark: 设置/返回当前记录指针的书签,为字符串。如:<br> 
        在当前记录处设置书签:lxn=Adodc1.Recordset.BookMark<br>
        当指针移动后回到指定书签位置:Adodc1.Recordset.BookMark=lxn.<br>
        返回记录集中记录的总数:RecordCount属性。该属性对于表形式的记录集将返回精确数目,但对于仅向前型记录集(adOpenForwardOnly),返回-1。动态记录集(adOpenDynamic)则不一定,可能返回-1,与记录集的CursorLocation有关;而对于静态记录集(adOpenStatic),也总能返回精确数目。附:在DAO中,对动态集和快照集需要先用MoveFirst和Movelast方法,再用RecordCount取得记录精确数目。<br>
        Move方法:移动记录集指针。该方法有两个参数,第一个参数指定要向前或向后移动多少条记录,第二个参数指定一个相对书签位置,表明从当前记录还是从第1条或最后1条记录开始算,缺省为0从当前记录开始移,将指针从当前位置向前(负数)或向后(正数)移动指定条记录(第二个‘按书签移动’参数设为0-adBookMarkCurrent从当前记录开始,缺省)或将指针从第1条记录算起移动指定条记录(第二个参数设为1-adBookMarkFirst从首记录)。或将指针从最后1条记录算起移动指定条记录(第二个参数设为adBookMarkLast),如:Adodc1.Recordset.Move -12,将指针从当前位置向前移动12条记录,再如Adodc1.Recordset.Move 6 , 1表示指针从首记录开始后移6条记录,即使指针移到第7条记录。Move方法有几个引申的方法,如下:<br> 
        movefirst,记录集指针移到第1条记录;<br>
        movelast,记录集指针移到最后1条记录;<br>
        moveprevious,记录集指针移到上一条记录;<br>
        movenext,记录集指针移到下一条记录。<br>
        Find方法:查找满足条件的记录。<br>
        find方法简略格式为:<br>
        adodc对象.recordset.find 查找表达式(为“字段 比较符号 值”)<br> 
        其他参数采用缺省,find工作方式是:从当前记录指针位置开始(含当前记录)向后逐条检索记录,遇到满足条件的1条记录就停下来,指针指到此记录。<br>
        因此,若要实现“继续寻找下1个”的功能,只要将记录指针移到下1条记录(用movenext一下),再照原样使用find即可。 而重新查找必须先用movefirst将指针指到开头。&nbsp;<br>
        Adodc1.Recordset.find "姓名 = '李长春'"&nbsp;<br>
        其中查找表达式的样子为“字段 比较符号 值”,比较符号不仅可以是等号,还可以是>,&lt;,&lt;=,>=,&lt;>,like等。其中Like和 = 很相近,只不过like专用于字符串比较,不区分字母的大小写可用通配符,而 = 号会区分字母大小写不能用通配符。<br> 
        一般情况下,查找表达式常采用变量表示,由用户来确定,如下:<br>
        Dim lxn As String<br> 
        Static a As String&nbsp;<br>
        a = InputBox("请输入查找姓名","查找")&nbsp;<br>
        lxn = "NAME like '" &amp; a &amp; "'"<br> 
        .Find lxn&nbsp;<br>
        <br>
        LockType属性:设置记录集中的记录锁定方式,是否可修改及修改方式:有1-adLockReadOnly(只读);2-adLockPessimistic(保守式修改),当修改记录后立即将更改保存到数据源,3-adLockOptimistic(开放式修改),当修改记录后只有调用Update方法才将更改保存到数据源;4-adLockBatchOptimistic(开放式批处理修改)。当修改记录后只有调用UpdateBatch方法才将更改保存到数据源。对于ADO对象而言,该属性的缺省值为1-adLockReadOnly只读,要编辑记录则必须加以改变。&nbsp;<br>
        Update方法:对记录集当前记录的更改进行保存到数据库。<br>
        UpdateBatch方法:成批保存更改的多条记录。只有当记录集使用锁定方式为adLockBatchOptimistic打开时该方法才有效。使用该方法,可以加快更新速度。因为一条一条更新的话,速度慢,而多条一起更新的话,其实等同于一个更新操作,因此更快。该方法有个可选参数AffectRecords提一下,它可设为:adAffectCurrent只更新当前记录;adAffectGroup只更新当前Filter属性满足的记录;adAffectAll(缺省)全部更新,包括被当前Filter属性隐藏的记录。<br>
        CancelUpdate方法:放弃保存对当前记录自上次Update后的更改,即不保存当前所作的修改。通常在WillChangeRecord事件中进行数据验证时用。当然一般是直接将事件提供的参数adStatus设为adStatusCancel即可取消保存。这里要注意,在WillChangeRecord事件中取消一个操作,将发生“操作已取消”的错误。照我的感觉,还不如直接在要Update的代码前面去验证输入的数据。<br>
        在记录集中添加新记录,用addnew方法先在缓存中添加一个新的空记录,这时它自动成为当前记录,通过修改,然后用update方法保存,data1.recordset.update,说明:如果用Movenext等方法将记录指针移开时记录集会自动保存缓存中的记录(等于调用Update方法)。<br>
        修改当前记录,只要直接给字段赋值就可以了,注意赋值后也要用Update方法将缓存中的数据保存,否则不会自动更新,除非用MoveNext等方法将指针移开让它自动调用。&nbsp;<br>
        删除当前记录用Delete方法就行了。有一点要注意,删除后,记录指针仍在被删除的记录上,因此要用MoveNext等方法将指针移开,或干脆Requery刷新一下。<br>
        Sort:指定用来对全部记录排序的参照字段。<br>
        Fields:包含记录集中各字段的集合。指定某个字段格式为:fields("字段名")。可省略。如有:m$=data1.recordset.fields("姓名").value为读当前记录(用value表示)的“姓名”字段值。还可用来在代码中修改(写)记录值(不是用绑定控件),如修改记录值为“李新能”:data1.recordset.fields("姓名").value="李新能"。也可写为data1.recordset("姓名").value,括号内写明字段名或“字段索引值”,第1个字段索引值从0开始。如data1.recordset(0).value.<br>
        关闭记录集用close方法,格式为“记录集.close”。<br>
        要读或写当前记录的某个字段值,只要用“记录集("字段名")”就可以了,Fields和Value都是缺省属性,但当值是一个记录集的除外,如数据环境中Command命令对象的子命令对象。<br>
        刷新记录集(即重新打开记录集):Requery方法。在记录集打开的情况下,迅速关闭又打开一次,以达到确保记录集始终处于激活状态。<br>
        返回/设置记录集当前编辑状态:EditMode属性。有以下三个可能返回值:adEditNone没有编辑;adEditInProgress正在编辑(即当前记录已修改但未保存);adEditAdd已经用AddNew方法添加新记录但还未存盘,在缓存中的是新记录。这个属性通常用来检测某些操作状态,比如可在窗体的Unload事件中防止修改了的记录未保存就卸载。<br>
        ★ AbsolutePage属性:指定当前记录所在的页。其值的范围在1—PageCount值之间,所谓页,是把Recordset对象按PageSize为标准分为若干页面,每一页(除最后一页)记录数相等(等于PageSize)。有三个特殊值:adPosUnkown未知位置;adPosBOF在文件头;adPosEOF在文件尾。<br> 
        ★ ActiveCommand:属性:只读属性。返回关联的Command对象,如果记录集不是由Command对象创建的,则返回Null.<br> 
        ★ ActiveConnection属性:设置/返回记录集基于哪个Connection对象,如果没有Connection对象,则直接指定一个连接字符串。<br> 
        ★ Cancel: 取消执行异步 Execute(对Connection和Command对象而言) 或 异步Open 方法调用(即通过 adAsyncConnect、adAsyncExecute 或 adAsyncFetch 参数选项调用这些方法)。<br> 
        ★ CacheSize属性:本地内存缓存的大小。<br> 
        ★ CancelBatch方法: 取消批更新模式下记录集中所有还未执行的更新。<br> 
        ★ Clone方法:复制一个记录集。格式:Set 记录集变量=记录集.Clone [adLockReadOnly]当指定可选参数adLockReadOnly表示创建只读的记录集副本。使用 Clone 方法可创建多个 Recordset 对象副本,这对于希望在给定的记录组中保留多个当前记录十分有用。使用 Clone 方法比使用与初始定义相同的定义创建和打开新 Recordset 对象要有效得多。新创建副本的当前记录将设置为首记录。无论游标类型如何,对某个 Recordset 对象所作的修改在其所有副本中都是可见的。不过一旦在原始 Recordset 上执行了 Requery,副本将不再与原始 Recordset 同步。关闭原始 Recordset 时并不关闭它的副本,而关闭某个副本也将不关闭原始 Recordset 或任何其他副本。用户只允许复制支持书签的 Recordset 对象。书签值是可交换的,也就是说,来自一个 Recordset 对象的书签引用可引用其任何副本中的相同记录。<br> 
        ★ CompareBookmarks: 比较两个书签并返回它们相差值的说明。即谁先谁后。<br> 
        ★ CursorLocation: 设置或返回游标服务的位置。游标:可以简单理解为指向若干行的指针。有三种设置值:adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现,通常不用)。adUseClient 使用由本地游标库提供的客户端游标,通常使用这种游标。adUseServer 使用数据提供者的或驱动程序提供的游标。<br> 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?