奇怪的MySQL导致ASP

奇怪的MySQL导致ASP

问题描述:

我有下面的代码:奇怪的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连接 –

尝试使用CAST在你的MySQL语句转换成十进制类型为一个数字,ASP ADODB可以理解,否则ASP不能识别从MySQL的结果,并认为这是EOF。例如:

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

我不得不施放导致varchar获得脚本工作 –

+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)”,... –