我有2臺計算機。當使用SQLFetch()和SQL_C_FLOAT時出現「數值超出範圍」錯誤
安裝了Windows Server 2003和SQL Server 2000的第一個(A)。這臺電腦上有一個數據庫。此數據庫添加到ODBC數據源與SQLServer驅動程序版本 - 2000.85.1022。
第二個(B)與Windows 7 64位。來自計算機A的數據庫也通過SQLServer Native Client添加到ODBC數據源。驅動程序版本 - 2007.100.1600.22。
我有使用ODBC數據源連接到數據庫的軟件,回收一些數據並執行計算。代碼如下所示:
wsprintf ((LPSTR)m_stmt,"select field1 from MyTable Order by field1");
float field1Val;
SQLExecDirectEx(m_hstmt,m_stmt,SQL_NTS);
SQLBindCol(m_hstmt, 1, SQL_C_FLOAT, &field1Val, 0, &cbCustID);
m_retcode = SQLFetch(m_hstmt);
當我在計算機上調用此軟件時一切正常。 當我在計算機上調用它時,B連接執行得很好,但使用SQLFetch()後,出現「數值超出範圍」錯誤(22003)。
field1在數據庫中聲明爲十進制數9(18:2)。存儲的值是「0.50」
所以現在的問題是如何使計算機B上
的DB不是由我創建工作,我不是一個數據庫專家都沒有。所以希望你能幫助我。
謝謝。
p.s.當我使用SQL_C_CHAR獲取值時,一切正常。
爲0.50只存在的價值?你可以嘗試其他值(0.00,1.00,說)? – 2011-06-05 13:31:11
沒有區別。其他值產生相同的結果 – 2011-06-05 13:49:20
SQLExecDirectEx似乎不存在,只有SQLExecDirect。你有沒有真正產生問題的示例代碼? – 2011-06-05 15:45:37