?? 23-3.cfm.htm
字號:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>操作記錄集的高級方法</TITLE>
</HEAD>
<BODY>
<B><FONT FACE="宋體" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">操作記錄集的高級方法</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">到現在為止,你只學習了如何用SQL來修改記錄集中的記錄。但是,你還可以使用許多記錄集方法修改記錄集中的記錄。下面列出了每種方法的簡要說明:</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<P ALIGN="JUSTIFY"><LI>AddNew。向記錄集中添加一條新記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>CancelBatch。(當記錄集處在批量更新模式時)取消一批更新。</LI></P>
<P ALIGN="JUSTIFY"><LI>CancelUpdate。(調用Update之前)取消對當前記錄所做的所有修改。</LI></P>
<P ALIGN="JUSTIFY"><LI>Delete。從記錄集中刪除一條記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>Update。保存對當前記錄所做的修改。</LI></P>
<P ALIGN="JUSTIFY"><LI>UpdateBatch。(當記錄集處于批量更新模式時)保存對一個或多個記錄的修改。</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">例如,你可以用AddNew方法向一個打開的記錄集中添加一條空記錄:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> <!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set RS=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.RecordSet</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</P>
<P ALIGN="JUSTIFY">RS.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SELECT * FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,MyConn,adOpenDynamic,adCMDText</P>
<P ALIGN="JUSTIFY">RS.AddNew</P>
<P ALIGN="JUSTIFY">RS(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>MyColumn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>A new column</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</P>
</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">RS.Update</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在這個腳本中,用AddNew方法創建了一條新記錄。接著,新記錄的MyColumn域被賦值“A new column”。最后,調用Update方法保存新記錄。要使用這些方法,記錄集必須以只讀方式以外的其它鎖定方式打開。</P>
<P ALIGN="JUSTIFY">你也可以使用SQL INSERT語句向一個表中添加新記錄,以取代AddNew方法。通常,使用SQL比使用上述的方法要好一些,因為SQL更加靈活。本書的其余部分將使用SQL來操作數據庫中的數據。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">遍歷記錄集</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">記錄集對象有許多在記錄之間移動的方法。這些方法的大部分只有在記錄集以某種特定的游標打開時才可以使用。下面列出了記錄集對象的一些方法及其功能的說明:</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<P ALIGN="JUSTIFY"><LI>Move NumRecords。在記錄集中向前或向后移動指定數目的記錄數。</LI></P>
<P ALIGN="JUSTIFY"><LI>MoveFirst。移動到記錄集的第一條記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>MoveNext。移動到記錄集的下一條記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>MovePrevious。移動到記錄集中的上一條記錄。</LI></P>
<P ALIGN="JUSTIFY"><LI>MoveLast。移動到記錄集的最后一條記錄。</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">記錄集對象還有許多屬性,對遍歷記錄集是有用處的。同樣,許多屬性需要特定的游標類型:</P>
<P ALIGN="JUSTIFY"> </P>
<UL>
<P ALIGN="JUSTIFY"><LI>AbsolutePosition。用來設置或讀取當前記錄在記錄集中的位置順序號。</LI></P>
<P ALIGN="JUSTIFY"><LI>BOF。標明當前位置在記錄集中的第一條記錄之前。</LI></P>
<P ALIGN="JUSTIFY"><LI>EOF。標明當前位置在記錄集中的最后一條記錄之后。</LI></P>
<P ALIGN="JUSTIFY"><LI>RecordCount。表示一個記錄集中的記錄總數。</LI></P></UL>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">例如,假設你想在一個記錄集中反向移動,你可以使用MoveLast和MovePrevious方法,以及BOF屬性。下面的ASP網頁演示了該如何實現:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><HTML></P>
<P ALIGN="JUSTIFY"><HEAD><TITLE> Backwards Recordset </TITLE></HEAD></P>
<P ALIGN="JUSTIFY"><BODY></P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set RS=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.RecordSet</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</P>
<P ALIGN="JUSTIFY">RS.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SELECT * FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,MyConn,adOpenStatic</P>
<P ALIGN="JUSTIFY">RS.MoveLast</P>
<P ALIGN="JUSTIFY">WHILE NOT RS.EOF</P>
<P ALIGN="JUSTIFY"> Response.Write(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><BR></FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>&RS(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>MyCOlumn</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>))</P>
<P ALIGN="JUSTIFY">WEND</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"></BODY></P>
<P ALIGN="JUSTIFY"></HTML></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在這個例子中,用靜態游標打開記錄集。記錄集打開后,通過使用MoveLast和MovePrevious方法,該記錄集中的所有記錄都被顯示,直至到達記錄集的開頭。BOF屬性用來檢測何時到達記錄集的開頭。</P>
<P ALIGN="JUSTIFY">你可以用這種方法在一個記錄集中反向移動,但是,很難想象你有什么理由需要這樣做。使用SQL語言自身對查詢結果進行排序是有效的。如果你可以,你應該用ORDER BY子句對記錄進行排序。(要了解ORDER BY子句的更多內容,請參閱第10章,“SQL基礎”)</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">返回記錄數目</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">你可以用記錄集對象的RecordCount屬性來確定一個記錄集中的記錄總數。但是,你應該慎重使用這個屬性,因為這個屬性在許多情況下效率極低。</P>
<P ALIGN="JUSTIFY">對一個用前向游標打開的記錄集,你不能使用RecordCount屬性。你必須打開一個效率較低的游標才可以使用這個屬性,如下例所示:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Set MyConn=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.Connection</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">Set RS=Sever.CreateObject(</FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADODB.RecordSet</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY">MyConn.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>FILEDSN=d:\Program Files\</P>
<P ALIGN="JUSTIFY"> Common Files\ODBC\Data Sources\MyData.dsn</P>
<P ALIGN="JUSTIFY">RS.Open </FONT><FONT FACE="Playbill,Courier New" SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SELECT Mycolumn FROM Mytable</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>,MyConn,adOpenStatic</P>
<P ALIGN="JUSTIFY">Response.Write(RS.RecrdCount)</P>
<P ALIGN="JUSTIFY">RS.Close</P>
<P ALIGN="JUSTIFY">MyConn.Close</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">這個腳本輸出表Mytable中的記錄數目,RecordCount屬性用來返回這個數字。為了能使用RecordCount屬性,記錄集用一個靜態游標打開。</P>
<P ALIGN="JUSTIFY">通常,你需要一個記錄數目的唯一原因是想確定是否至少有一條記錄滿足特定的條件。例如,你也許想檢查一下,是否一個人輸入了合法的口令。在這種情況下,你可以查詢一個保存口令的表,用RecordCount屬性確定是否有口令存在。如果RecordCount大于0,說明有口令存在,否則說明沒有,該口令是 非法的。</P>
<P ALIGN="JUSTIFY">但是,用EOF屬性檢測一個查詢是否返回了結果將會更好。當用前向游標打開了一個記錄集時,你可以使用EOF屬性。這里有一個例子:</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><!--#INCLUDE VIRTUAL=</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>ADOVBS.inc</FONT><FONT FACE="Playbill,Courier New" SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>--></P>
<P ALIGN="JUSTIFY"><%</P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -