文章編號: 906771 - 上次校閱: 2007年5月11日 - 版次: 1.4

您不能使用 Visual Basic 2005 來從檔案讀取貨幣資料型別值

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

考慮下列案例:
  • 您使用使用者定義的結構內的 貨幣 資料型別值。
  • 您可以使用 Microsoft Visual Basic 6.0 中來寫入檔案的 貨幣 資料型別值。
在這種情況下您不能使用 Microsoft Visual Basic 2005 從檔案讀取 貨幣 資料型別值。

發生的原因

貨幣 資料類型升級成 Visual Basic 2005 中 小數位數 的資料型別,就會發生這個問題。針對獨立 Decimal 資料型別、 Visual Basic 2005 I/O 讀取和寫入 Decimal 資料如果鍵入的值為原本 OA 貨幣 資料型別值的順序。貨幣 資料型別值,是使用者定義結構內 Visual Basic 2005 I/O 讀取並寫入 Decimal 資料型別,而不嘗試將它們轉換成 OA 貨幣 資料型別。這會使 Visual Basic 2005 無法正確讀取您藉由使用 Visual Basic 6.0 中所撰寫的檔案。

其他可行方案

如果要解決這個問題而定,使用 [下列的其中一個方法]。

方法 1

使用 Visual Basic 2005 讀取 貨幣 資料型別值回從檔案分別,代替讀取使用者定義結構。比方說使用在下列程式碼。
Dim currencyValue As Decimal 
FileGet(1, currencyValue) 
MsgBox(currencyValue)

方法 2

使用使用者定義結構內的 Int64 值。然後,使用 Decimal.FromOACurrency 方法從 Int64 值擷取 Decimal 資料型別值。要這麼做,請您執行下列步驟:
  1. 使用下列程式碼建立使用的結構的 Int64 值。
    Private Structure TypeWithCurrency
    	Public c As Int64
    End Structure
  2. 使用下列的程式碼,在檔案中讀取,並且再從擷取 Decimal 資料型別值
    Dim t1 As TypeWithCurrency
    
    FileGet(1, t1)
    FileClose(1)
    
    Dim currencyValue As Decimal = Decimal.FromOACurrency(t1.c)
    MsgBox(currencyValue)
    Int64 值。
附註您不能使用 Visual Basic 2005 來寫入檔案中的值,然後讀取重新值開機從檔案使用方法 2。 如果使用 Visual Basic 2005 值寫入至檔案值便為 Decimal 資料型別中而非在 貨幣 資料型別。 方法 2 只可用來修改檔案一次。

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

其他相關資訊

如需詳細資訊請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
FileGet 函式
http://msdn2.microsoft.com/en-us/library/3acfheek(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/3acfheek(vs.71).aspx)

在 Visual Basic 中的結構宣告變更
http://msdn2.microsoft.com/en-us/library/030kb3e9(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/030kb3e9(vs.71).aspx)

將 VB6 程式碼遷移至 VB.NET
http://msdn2.microsoft.com/en-us/library/aa239677(VS.60).aspx (http://msdn2.microsoft.com/en-us/library/aa239677(VS.60).aspx)

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