关于比较大小的问题,比较麻烦,大侠们帮帮忙啊!!

wingq 2009-06-11 11:50:35
数据库里有这几个字段:日期 时间段序号(这个就是0到八点是1,八点到8点是16点2,16点到24点是3,数据库里就是1,2,3这些现实的)班次名称(就是对应着前面的时间段序号的有5个班)·········燃料卸煤量(就是比较这个字段)

现在,我要比较在一天里,燃料卸煤量这里数据的大小。一天只有3个班的数据,就是对应到上面的时间段序号。

比如我列几个:

2009-01-02 1 甲 5
2009-01-02 3 乙 7
2009-01-02 2 戊 2

就像以上这样的表,我要比较一天内不管是5个班里的那三个班的大小。然后给第一名3分,第二名1分,第三名不得分。

我一直纠结于,之前我是通过
bc(0)="甲"
bc(1)="乙"
bc(2)="丙"
bc(3)="丁"
bc(4)="戊"
for i=0 to 4
sql="SELECT 燃料供煤挥发份Var FROM XZB_JZJX3 WHERE (日期 = '"&dat&"') AND (班次名称 = '"&bc(i)&"')"
这个语句来读出每天的数据的,那比较岂不是要比较5个数据??但一直有两是没数据的啊!!这要如何是好啊??

大侠们来帮帮小的吧~~我从早上倒腾到现在了!
...全文
43 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2009-06-21
  • 打赏
  • 举报
回复

<%
Dim score(4), rl3(4)
rl3(0)="":rl3(1)="":rl3(2)="":rl3(3)="":rl3(4)=""
score(0)="":score(1)="":score(2)="":score(3)="":score(4)=""

'用于排序的无连接记录集
Set rs1 = CreateObject("ADODB.Recordset")
With rs1
.CursorLocation = 3
.Fields.Append "no", 3
.Fields.Append "am", 5
.Open
End With

for i=0 to 4
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="SELECT 燃料卸煤量 FROM XZB_JZJX3 WHERE 日期 = '"&dat&"' AND 班次名称 = '"&bc(i)&"' order by 燃料卸煤量 desc"
rs.open sql,conn,1,1
if not(rs.eof and rs.bof) then
if not isnull(rs.fields(0).value) then
rl3(i) = FormatNumber(rs.fields(0).value,,-1)
rs1.AddNew
rs1("no") = i
rs1("am") = rs(0).value
rs1.Update
end if
end if
rs.close
next

rs1.sort = "am DESC"
rs1.moveFirst
aSC = new Array(3,1,0)
i=0
tp = rs1("am")
rs1.moveFirst
Do While Not rs1.EOF
if rs1("am") < tp Then
i = i+1
tp = rs1("am")
End If
score(rs1("no").value) = aSC(i)
rs1.moveNext
Loop
rs1.close
set rs1 = nothing
%>
<tr bordercolor="#000000" bgcolor="#FFFFFF">
<td> <div align="center" class="STYLE1">15 </div> </td>
<td align="center"> <span class="STYLE1">燃料卸煤量 </span> </td>
<td align="center"> <span class="STYLE1">节 </span> </td>
<td align="center"> <span class="STYLE1"> </span> </td>
<td align="center"> <span class="STYLE1">2 </span> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(0)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(0)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(1)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(1)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(2)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(2)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(3)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(3)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(4)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(4)%> </div> </td>
</tr>

wingq 2009-06-14
  • 打赏
  • 举报
回复
谢谢hookee的讲解~~~倒腾了一天一夜,最后结果是,对方居然不要显示这个了~~崩溃啊!!
但分还素要给地!!谢谢咩~~~
wingq 2009-06-12
  • 打赏
  • 举报
回复
把问题再总结一下。
首先,我可以通过:
sql=SELECT 燃料卸煤量, 班次名称, 日期 FROM XZB_JZJX3 WHERE 日期 = '"&dat&"' ORDER BY 燃料卸煤量 DESC
得到三个班的排序次序。

我要把得到的三个班的,第一名的给3分,第二名的给1分,最后一名没有分的现实在页面表格上。

在数据库中的到 甲的值是2,乙是10,戊是4,显示在web页面表格就是以下:

我的表格是通过一个个点相对应的到数据的,上面有五个班,如
甲 乙 丙 丁 戊
燃料卸煤量 0 3 1

以上这样显示,问题来了,就是,每一天的班次都是不定的,我也不知道今天会是哪个班,我就把每一个班下面都放上
<%response.Write(xm(0)%>这样的语句,有就显示,没有就不显示,那以上的表格样式就会显示了。

wingq 2009-06-12
  • 打赏
  • 举报
回复
这个我理解了,但问题是我的页面表格,我是一个班一个格,一一对应的填数据的啊。这样order by 出来的我无法判读是那个班而去填数据啊,难道是我表格的问题??我不想来个大整顿啊!!!泪~~~

SELECT 燃料卸煤量, 班次名称, 日期 FROM XZB_JZJX3 WHERE 日期 = '"&dat&"' ORDER BY 燃料卸煤量 DESC

这样就可以得出来一天的三名排序了,但我要加分啊~~泪流~~~
zc90909090 2009-06-12
  • 打赏
  • 举报
回复
查询空数据 用select * from 。。 where 燃料卸煤量 is null and 。。。
你要查有数据的不妨加上 where 燃料卸煤量 is not null
再在后面排个序 order by 燃料卸煤量 desc
wingq 2009-06-12
  • 打赏
  • 举报
回复
好地~~我来试试!!
mjb001 2009-06-12
  • 打赏
  • 举报
回复
用dateadd()函数可以统计出某时间段的燃料卸煤量,然后取头三名的班次就可以了,函数具体用法可以找来看看。
hookee 2009-06-12
  • 打赏
  • 举报
回复
你既然用数组rl3保存卸煤量,那就再用一个数组保存分数score()就可以了
先初始化
然后用你上面的程序


<%
Dim score(4), rl3(4)
rl3(0)="":rl3(1)="":rl3(2)="":rl3(3)="":rl3(4)=""
score(0)="":score(1)="":score(2)="":score(3)="":score(4)=""

'用于排序的无连接记录集
Set rs1 = CreateObject("ADODB.Recordset")
With rs1
.CursorLocation = 3
.Fields.Append "no", 3
.Fields.Append "am", 5
.Open
End With

for i=0 to 4
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="SELECT 燃料卸煤量 FROM XZB_JZJX3 WHERE 日期 = '"&dat&"' AND 班次名称 = '"&bc(i)&"' order by 燃料卸煤量 desc"
rs.open sql,conn,1,1
if not(rs.eof and rs.bof) then
if not isnull(rs.fields(0).value) then
rl3(i) = FormatNumber(rs.fields(0).value,,-1)
rs1.AddNew
rs1("no") = i
rs1("am") = rs(0).value
rs1.Update
end if
end if
rs.close
next

rs1.sort = "am DESC"
score(rs1("no").value) = 3
rs1.moveNext
score(rs1("no").value) = 1
rs1.moveNext
score(rs1("no").value) = 0
rs1.moveNext
rs1.close
set rs1 = nothing
%>
<tr bordercolor="#000000" bgcolor="#FFFFFF">
<td> <div align="center" class="STYLE1">15 </div> </td>
<td align="center"> <span class="STYLE1">燃料卸煤量 </span> </td>
<td align="center"> <span class="STYLE1">节 </span> </td>
<td align="center"> <span class="STYLE1"> </span> </td>
<td align="center"> <span class="STYLE1">2 </span> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(0)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(0)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(1)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(1)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(2)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(2)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(3)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(3)%> </div> </td>
<td> <div align="center"> <span class="STYLE1">
<%=rl3(4)%>
</span> </div> </td>
<td> <div align="center"> <span class="STYLE1"> </span> <%=score(4)%> </div> </td>
</tr>


wingq 2009-06-12
  • 打赏
  • 举报
回复
不用,只要天对应三个班,时间段我用一个自定义函数计算了,不用管时间段,就是一天三班的排序,但是我这出来的是五班的,永远有两班是空的,还有就是输出问题了,怎么能让他对应班次输出得分,是不是这样不好得啊?上去解决不了,我就等挨经理骂了····
mjb001 2009-06-12
  • 打赏
  • 举报
回复
看岔题了,不用判断时间段吗?

wingq 2009-06-12
  • 打赏
  • 举报
回复
<%response.Write(这里输出得分> 这里就是要对应前三名来给他们来评分~~
wingq 2009-06-12
  • 打赏
  • 举报
回复
bc(0)="甲"
bc(1)="乙"
bc(2)="丙"
bc(3)="丁"
bc(4)="戊"
for i=0 to 4
set rs=server.CreateObject("ADODB.RecordSet")
set rs.ActiveConnection=conn
rs.CursorType=3
sql="SELECT 燃料卸煤量 FROM XZB_JZJX3 WHERE (日期 = '"&dat&"') AND (班次名称 = '"&bc(i)&"') order by 燃料卸煤量 desc"
rs.open sql,conn
if rs.eof and rs.bof then
else
if not isnull(rs.fields(0).value) then
rl3(i)=FormatNumber(rs.fields(0).value,,-1)
else
end if
end if
rs.close
next


上面就是我查询数据的代码,数据查出来是五个班的,下面是输出

<tr bordercolor="#000000" bgcolor="#FFFFFF">
<td><div align="center" class="STYLE1">15</div></td>
<td align="center"><span class="STYLE1">燃料卸煤量</span></td>
<td align="center"><span class="STYLE1">节</span></td>
<td align="center"><span class="STYLE1"></span> </td>
<td align="center"><span class="STYLE1">2</span></td>
<td><div align="center"><span class="STYLE1">
<%response.Write(rl3(0))%>
</span></div></td>
<td><div align="center"><span class="STYLE1"></span><%response.Write(这里输入得分></div></td>
<td><div align="center"><span class="STYLE1">
<%response.Write(rl3(1))%>
</span></div></td>
<td><div align="center"><span class="STYLE1"></span><%response.Write(这里输入得分></div></td>
<td><div align="center"><span class="STYLE1">
<%response.Write(rl3(2))%>
</span></div></td>
<td><div align="center"><span class="STYLE1"></span><%response.Write(这里输入得分></div></td>
<td><div align="center"><span class="STYLE1">
<%response.Write(rl3(3))%>
</span></div></td>
<td><div align="center"><span class="STYLE1"></span><%response.Write(这里输入得分></div></td>
<td><div align="center"><span class="STYLE1">
<%response.Write(rl3(4))%>
</span></div></td>
<td><div align="center"><span class="STYLE1"></span><%response.Write(这里输入得分></div></td>
</tr>




就像上面这样的,的分时第一名3分,第二名1分,第三名没分,像我这样写的可不可以得出啊?我考虑的是因为每天只有3个班存在数据,而我要输出五个班的数据,那还有两个改怎么办?这五个数据改怎么比较?
wingq 2009-06-12
  • 打赏
  • 举报
回复
hookee 的说法我看不太明白,学的比较差啊,因为我程序做的很死,就是一个萝卜一个坑那种,现在就是关于五个数比较,比较出来要在表格里面显示,我该怎么对应,就是五个班,每天三个班的都不一样,我做的数据查询就是所有的都设了<%response.Write(xm(0)%>,有数据就显示,没数据就不显示,这样比较改怎么显示?
hookee 2009-06-12
  • 打赏
  • 举报
回复
可以用字典对象
Set dic = CreateObject("Scripting.Dictionary")
Do WHile Not RS.EOF
dic.Add 名字, 分数
RS.MoveNext
Loop

然后按名字顺序输出表格
比如
arr = Array("甲","乙","丙","丁","戊","戌")

For i=0 To UBound(arr)
If dic.Exists(arr(i)) Then
Response.Write dic.Item(arr(i))
Else
Response.Write ""
End If
Next

wingq 2009-06-11
  • 打赏
  • 举报
回复
而且就算是我比较五个吧,我也被一堆if给打败了~~~

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧