2012-06-01 141 views
0

我有下面的代碼:奇怪的MySQL導致ASP

strSQL = "SELECT COUNT(*) AS anz FROM tbl_ergebnisse WHERE testavg >0" 
set rs3 = Conn.Execute(strSQL) 
Response.Write "Count(*): <br>" 
if not rs3.eof then 
    Response.Write "Anz: " & rs3("anz") 
else 
    Response.Write "EOF" 
end if 

strSQL = "SELECT testavg FROM tbl_ergebnisse WHERE testavg >0" 
set rs2 = Conn.Execute(strSQL) 

Response.Write "Entries: <br>" 
do while not rs2.eof 
    Response.Write rs2("testavg") & "<br>" 
rs2.MoveNext() 
loop 

strSQL = "SELECT AVG(testavg) AS mittelwert FROM tbl_ergebnisse WHERE testavg >0" 
set rs = Conn.Execute(strSQL) 

if not rs.eof then 
    Response.Write "Mittelwert: " & rs("mittelwert") 
else 
    Response.Write "EOF" 
end if 

這給了我一個奇怪的結果: 查詢1返回「4」(計數是正確的)。查詢2返回任何結果,也QUERY3不返回任何結果

表「tbl_ergebnisse」看起來像這樣

testavg (DECIMAL) 

與條目:3; 3; 4; 5;

從表中的數據截圖可以在這裏找到:www.trinews.at/data.png

enter image description here

任何建議,爲什麼我得到一個空的記錄?直接在數據庫上運行查詢返回正確的值。

+0

如果在分別打開rs2和rs之前關閉rs3和rs2,問題是否消失? –

+0

你使用哪種連接器? –

+0

通過版本3.51中的ODBC連接 –

回答

0

嘗試使用CAST在你的MySQL語句轉換成十進制類型爲一個數字,ASP ADODB可以理解,否則ASP不能識別從MySQL的結果,並認爲這是EOF。例如:

SELECT CAST(SUM(Entry_Data_1) as UNSIGNED) as score FROM contests_entries 
+0

我不得不施放導致varchar獲得腳本工作 –

+0

再次感謝您的接受 –

0

我重新創建與SQL Server Express與Decimal(18,0)字段類型的問題,它按預期工作。

嘗試使用CDbl將結果轉換爲雙倍,如下所示。

strSQL = "SELECT testavg FROM tbl_ergebnisse WHERE testavg >0" 
set rs2 = Conn.Execute(strSQL) 
Response.Write "Entries: <br>" 
do while not rs2.eof  
    Response.Write CDbl(rs2("testavg")) & "<br>" 
rs2.MoveNext() 
loop 



strSQL = "SELECT AVG(testavg) AS mittelwert FROM tbl_ergebnisse WHERE testavg >0" 
set rs = Conn.Execute(strSQL) 
if not rs.eof then  
    Response.Write "Mittelwert: " & CDbl(rs("mittelwert")) 
else  
    Response.Write "EOF" 
end if 
+0

我很抱歉,這並沒有工作。原因是,結果集是eof,所以「else扇區」被執行:-) 非常混亂... –

+0

可以你添加了該表和它的數據的屏幕截圖? –

+0

以下是截圖。 我試過類型「整數」,「小數(10,5)」,... –