讨论一个问题,ASP高手进来看看。

toprory 2004-06-22 12:52:34
有一个列表
动态从数据库里面读
显示如下

ID 属性1 属性2 属性3 属性4
1 aa bb cc dd
2 aa bb ee dd
3 ff dd rr ff
4 bb cc tt rr
5 aa bb rr ff
6 bb cc rr jj
......


现要求实现属性1和属性2的内容一致时背景一个颜色 否则背景无色
上面的实例应显示为
ID 属性1 属性2 属性3 属性4
1 aa bb cc dd 背景色
2 aa bb ee dd 背景色
3 ff dd rr ff 无
4 bb cc tt rr 背景色
5 aa bb rr ff 无
6 bb cc rr jj 背景色
......

求此输出过程

...全文
135 点赞 收藏 30
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lawdoor 2004-06-22
太容易了,循环时候判断一下不就可以了?
回复
bearzhan88 2004-06-22
哈哈,50分,谢谢
回复
bearzhan88 2004-06-22
这个问题跟原来C语言中的多重循环应该没什么问题。
另:颜色的控制不太好控制。如果需要把颜色区分开的话,也能实现,就是 表格的显示用
RESPONSE.WRITE 来控制,定义一个变量i,根据DO WHILE的循环给值,然后i的值与颜色的值
发生关系,就可以定义不同的颜色,轻松加EASY,搞定
回复
BlueDestiny 2004-06-22
楼主:

xyz8554(是对||错) ( )

不是连代码都写全了吗?
回复
toprory 2004-06-22
bearzhan88(毛毛熊)
的方法不错

但是在大数据量的时候速度会比较慢
不过也是一个可行的方法

回复
toprory 2004-06-22
不过我已经想到方法了


取数据的时候用getrows
然后创建一个数组 维数为3*记录数

然后输出
每次输出前循环数组一次,检查是否有相同的,没有的话插一个进去
有相同的,不用插,直接得到第3维的颜色

输完清空数组就OK了

不知道有没有更好的方法。
回复
bearzhan88 2004-06-22
就这么几行程序就可以搞定了,我在我这做了测试了,呵呵,不用数组。如何
回复
bearzhan88 2004-06-22
要实现你这个,有意思。
我用ROW1,ROW2代替属性1,属性2
ors.open "select * from table",ocn
do while not ors.eof
ors1.open "select * from table where row1="&ors(row1)&" and row2="&ors("row2"),ocn
if not ors1.eof then
背景有色
else
没有背景色
end if
ors1.close
ors.movenext
loop
ors.close

原理很简单,就是每次取记录的时候,用取的记录的ROW1和ROW2再去在库里SELECT,有值就表示存在你题目符合要求的记录,染色就是,没有就表示没有符合同样条件的记录。
缺点是ORS操作过于频繁哦
这就是你要的答案,散分吧
回复
good2speed 2004-06-22
SQL 解决这个问题是最高效的,请看下面的例子.在ASP中对Bgcolor进行判断一下就能达到你的要求

DECLARE @t table(
id int IDENTITY(1,1),
p1 char(2),p2 char(2),p3 char(2),p4 char(2)
)

INSERT INTO @t(p1,p2,p3,p4) SELECT 'aa','bb','cc','dd'
INSERT INTO @t(p1,p2,p3,p4) SELECT 'aa','bb','ee','dd'
INSERT INTO @t(p1,p2,p3,p4) SELECT 'ff','dd','rr','ff'
INSERT INTO @t(p1,p2,p3,p4) SELECT 'bb','cc','tt','rr'
INSERT INTO @t(p1,p2,p3,p4) SELECT 'aa','bb','rr','ff'
INSERT INTO @t(p1,p2,p3,p4) SELECT 'bb','cc','rr','jj'

SELECT id,p1,p2,p3,p4,
CASE WHEN (p1+p2)=(a1+a2) THEN 1 ELSE 0 END as Bgcolor
FROM
(
SELECT
*,
(SELECT p1 FROM @t as t1 Where id=(t2.id-1)) as a1,
(SELECT p2 FROM @t as t1 Where id=(t2.id-1)) as a2
FROM @t as t2
) as a
回复
toprory 2004-06-22
lawdoor(【风语者】)

还是没有弄明白我的意思

回复
lawdoor 2004-06-22
<%
do while not rs.eof
%>
<tr <%if rs("属性1")=rs("属性2") then response.write "bgcolor='#FF0000'" end if%>>
<td><%=rs("属性1")%></td>
<td><%=rs("属性2")%></td>
</tr>
<%
rs.movenext
i=i+1
loop
%>
回复
bearzhan88 2004-06-22
要实现你这个,有意思。
我用ROW1,ROW2
ors.open "select
回复
fashchina 2004-06-22
up
回复
zeroyou 2004-06-22
我有个想法,可以一起探讨一下,首先历遍千部记录,并将所有的属性1与属性2的值保存在数组里,保存结果如下:(aa|bb,aa|bb,ff|dd|,bb|cc,...)
然后根据数组里的每一个结果分别组合sql语句,例如:
'arrtempcount表示数组种元素个数
while arrtempcount<0
select count(属性1,属性2) as totalcount from TableExample where 属性1=数组(1) and 属性2=数组(2)
if cint(rs(totalcount))>0 then
有背景色
else
无背景色
end if
arrtempcount = arrtempcount-1
wend
回复
toprory 2004-06-22
<tr>里的

回复
lawdoor 2004-06-22
另外你的背景色是<tr>还是<td>里面的?还是简单的几个字”背景色“???
回复
toprory 2004-06-22
回 znjgress(潇湘剑客)
既然对您来说简单
何不写个出来呢?
回复
toprory 2004-06-22
回 cat_hsfz()

不好意思
可能我在写列表的时候没写清楚
5 qq bb rr ff 无
回复
lawdoor 2004-06-22
晕ing............
希望楼主将问题说的明白一些,
仅靠你的几句话我们理解能力确实有限.......
回复
尚和空四 2004-06-22
这么简单的问题也在这里讨论
几个判断都不会啊,
回复
加载更多回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-06-22 12:52
社区公告
暂无公告