?? d971228.gb_
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>資料庫篇: 為什麼會出現「沒有設定物件變數或 With 區域變數」的錯誤訊息?</TITLE>
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (Win95; I) [Netscape]">
<META NAME="Author" CONTENT="KJ Wang">
</HEAD>
<BODY TEXT="#202020" BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#000080" ALINK="#FF0000">
<H2 ALIGN=CENTER><A HREF="vbdb.htm">VB5 與資料庫程式設計</A></H2>
<H3 ALIGN=CENTER><A HREF="../vbweeks.htm">每周一問</A>: 挑戰您的 VB 功力 (資料庫篇, 97/12/28)</H3>
<H2>
<HR WIDTH="100%"></H2>
<CENTER><TABLE>
<TR VALIGN=TOP>
<TD NOWRAP>Q:</TD>
<TD>利用 Data 控制元件所撰寫的資料庫程式中, 在「<FONT COLOR="#FF0000">設計階段</FONT>」已經設定
"stock01.mdb" 檔案給 Database 屬性, 并且在 Form_Load 事件程序中撰寫以下程式:<FONT COLOR="#008000">(以下的
"股票行情表" 是 stock01.mdb 資料庫的一個資料表)</FONT>
<UL>
<PRE><FONT SIZE=+1>Private Sub Form_Load()
Dim rs As Recordset
Set rs = <FONT COLOR="#FF0000">Data1.Database.OpenRecordset</FONT>("股票行情表")
End Sub </FONT></PRE>
</UL>
<P>結果程式執行之後, 卻出現 「沒有設定物件變數或 With 區域變數」的錯誤訊息,
為什麼呢? 又如何更正程式?</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD>A:</TD>
<TD>由於我們在<FONT COLOR="#FF0000">設計階段</FONT>設定 DatabaseName 屬性給
Data 控制元件, 所以進入<FONT COLOR="#FF0000">執行階段</FONT>且當 Form
被載入時, Data 控制元件即會自動開啟 DatabaseName 屬性的資料庫檔案, 并且將開啟之
Database 物件設定給 Data1.Database 屬性, 因此以上程式利用 <FONT COLOR="#FF0000">Data1.Database.OpenRecordset</FONT>
開啟 Recordset 應該是正確的, 為什麼會錯誤?
<P>雖然說 Data 控制元件會在 Form 載入時自動開啟 Database 屬性的資料庫,
但實際上, 發生 Form_Load 事件時* Data 控制元件卻還沒有開啟 Database 屬性的資料庫,
正確的開啟時間應該是 Form_Load 事件之後。這使得 Form_Load 事件發生時,
Data1.Database還不是有效的物件, 以致 <FONT COLOR="#FF0000">Data1.Database.OpenRecordset
</FONT>無法正確執行。</P>
<P>解決方法是在 <FONT COLOR="#0000FF">Set rs = Data1.Database.OpenRecordset("股票行情表")</FONT>
之前加上:</P>
<UL>
<P><B><FONT COLOR="#FF0000">Data1.Refresh</FONT></B></P>
</UL>
<P>以上敘述的作用是強制 Data1 立刻開啟資料庫(表), 若資料庫(表)已開啟,
則重新開啟, 目的是讓 Data1.Database 變成合法的物件, 而使得 Data1.Database.OpenRecordset
能後正確地執行。</P>
<P><FONT COLOR="#008000">注:課本的 p.171 及 p.244 都曾經應用 Data1.Refresh
來解決類似的問題。</FONT></P>
</TD>
</TR>
</TABLE></CENTER>
<P>
<HR WIDTH="100%"></P>
</BODY>
</HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -