文章編號: 232562 - 上次校閱: 2005年6月23日 - 版次: 3.0

ACC2000: 輸出的預存程序中存取用戶端/伺服器被截斷

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
進階: 須具備專家編碼、 互通性,與多使用者技能。

本文只適用於 Microsoft Access 專案 (.adp)。

在此頁中

全部展開 | 全部摺疊

徵狀

當您從 Microsoft Access 專案中執行特定預存程序時,程序輸出就會在 [資料工作表] 檢視中被截斷。如果您在其中一個 SQL Server 用戶端工具執行相同的程序則會傳回所有資料列,如預期般運作。

發生的原因

如果預存程序傳回多重結果集在其輸出,Access 專案會傳回第一個結果設定為資料工作表檢視。在 Access 專案中的使用者介面不被為了傳回多個結果集。

解決方案

使用替代工具以執行傳回 SQL Server 查詢分析或 OSQL 等的多個結果集的預存程序。

其他相關資訊

如果要判斷存取用戶端/伺服器如果可以顯示特定的預存程序的整個輸出,請依照下列步驟執行。

注意: 本文中的範例程式碼會使用 Microsoft ActiveX 資料物件。這個程式碼正常執行,您必須參考 Microsoft ActiveX 資料物件 2.x 程式庫 (其中 2.x 是 2.1 (含) 以後版本)。以執行這項操作,按一下 引用項目 在 [工具] 功能表中 Visual Basic 編輯器] 中,請確定已選取 Microsoft ActiveX 資料物件 2.x 文件庫] 核取方塊。

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。
  1. 開啟一個連接到其中包含您想要檢查之預存程序的使用者資料庫的 Access 專案。如果需要測試系統預存程序開啟任何連接到使用者資料庫的 Access 專案。
  2. 建立模組,如果它已經不存在,請宣告區段中輸入下面這一行:
    Option Explicit
    					
  3. 鍵入下列程序:
     
    Sub CheckOutput(strProcName As String)
        
       Dim conn As New adodb.Connection
       Dim com As New adodb.Command
       Dim rs As New adodb.Recordset
       Dim i
        
       On Error GoTo errorTrapper
       
       Set conn = CurrentProject.Connection
       com.ActiveConnection = conn
        
       With com
          .CommandText = strProcName
          .CommandType = adCmdStoredProc
       End With
        
       Set rs = com.Execute
           
       Do Until rs Is Nothing
          i = i + 1
          Set rs = rs.NextRecordset
          If i > 1 Then
             MsgBox "Stored Procedure " & strProcName & _
               " contains more than one resultset. " & vbCrLf & _
               "The results will therefore be truncated when displayed.", _
               vbInformation
             Exit Sub
          End If
       Loop
            
       Exit Sub
        
    errorTrapper:
       If Err.Number = 3251 Then
          MsgBox "Stored Procedure " & strProcName & _
            " contains only one resultset. " & vbCrLf & _
            "It therefore should be displayed correctly.", _
            vbInformation
       Else
          MsgBox Err.Description & Err.Number, vbCritical, "Error"
       End If
        
    End Sub
    					
  4. 開啟 [即時運算] 視窗,並輸入下列命令以預存程序,您想要檢查的名稱替換 StoredProcName 的程式碼:
    Call Checkoutput("StoredProcName")
    					
    請按 ENTER。

重製行為的步驟

  1. 開啟 Access 專案連接至範例資料庫 NorthwindCS.adp。
  2. 使用下列 SQL 來建立新的預存程序:
       CREATE PROCEDURE "TestSProc"
       AS
       EXEC sp_help 'Customers'
    					
    儲存預存程序。

  3. 執行預存程序,並請注意在 [資料工作表] 檢視中傳回一個資料列。
  4. 開啟 SQL Server 查詢分析、 連接至 NorthwindCS 資料庫在您的 SQL 伺服器上並執行下列程式碼:
    EXEC TestSproc
    					
請注意大約 23 的資料列都會被傳回。

?考

如規則]、 [SQL Server 查詢分析] 或 [OSQL 相關的詳細資訊,請參閱 SQL Server 7.0 線上叢書 》,即可供下載從下列 Microsoft 網站:
http://download.microsoft.com/download/SQL70/File/2/Win98/En-US/SQLBOL.exe (http://download.microsoft.com/download/sql70/file/2/win98/en-us/sqlbol.exe)

這篇文章中的資訊適用於:
  • Microsoft Access 2000 Standard Edition
關鍵字:?
kbmt kbdownload kbclientserver kbprb KB232562 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:232562? (http://support.microsoft.com/kb/232562/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。