| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖
标题:菜鸟小问题,请大家帮助!
只看楼主 加入收藏
yizhifan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-11-1
收藏
 问题点数:0 回复次数:3 
菜鸟小问题,请大家帮助!

我的问题是:
有个数据库表aa如下:
id t1 t2 t3 t4 t5 t6 t7
1 o 1 22 o 1 52 4
2 14 25 o 14 22 o 14
"o"表示无数据,我想求出左右相邻数据的个数和上下相邻数据的个数!
例如:id=1 左右相邻数据的个数为4个,id=2左右相邻数据个数为5个;上下相邻数据个数为3个!!先谢谢大家了!

2007-02-27 09:02
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 
设左右相临个数为X 上下相临个数为Y
打开RS select * from aa '参数设指针为自由移动型
这里给出ID不为第一或末尾的思路。 这两个你举一反三一下,用IF语句特殊处理。

求X:
指针指向ID行
设x=0
if rs(2)<>"" then ’判断ID列是否为左右相临
x=x+1
end if
for TX=2 to 8 '判断第二到第七列是否左右相临
设 TS=TX-1 TA=TX+1
if rs("&TS&")<>"" or rs("&TA&")<>"" then '判断是否有相临数据
x=x+1
next
if rs(7)<>"" then '判断T7是否左右相临
x=x+1
end if

求Y:
设Y=0
for TX=1 to 8 '直接判断所有列
rs.MovePrevious
if rs("&TX&")<>"" then '判断是否上相临
TS=1
end if
rs.Move 2
if rs("&TX&")<>"" then ‘判断是否下相临
TA=1
end if
if TS=1 or TA=1 then
Y=Y+1
end if
rs.MovePrevious
next

[此贴子已经被作者于2007-2-27 11:48:15编辑过]


2007-02-27 11:46
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 

其实呢,用rs.MovePrevious是个不太好的习惯。
我想到的第二个解决办法是,用一个数组来表示整个表
比如Dim A(N,7) ’N+1行,8列 数组下标是从0开始计算的
X行Y列有数据,则A(X-1,Y-1)=1 否则 =0

打开rs , select * form aa 参数默认1,1
do while not rs.eof
hang=rs("ID") '确定(行)数
for TX=1 to 8
if rs("&TX&")<>"" then '判断该行,各列是否有数据,并写入数组
A(hang-1,TX-1)=1
else
A(hang-1,TX-1)=0
end if
next
loop

这样就可以确定数组A了


2007-02-27 12:01
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 
确定数组A后的计算:
设hang=行数 lie=列数 X=0、Y=0分别为左右、上下相临数量

我们的目标是 第<hang>行数据的X和Y值
<%
for lie=1 to 8
if A(hang-1,lie-2)=1 or A(hang-1,lie)=1 then ‘判断左右相临
X=X+1
end if
if A(hang-2,lie-1)=1 or A(hang,lie-1)=1 then '判断上下相临
Y=Y+1
end if
next
response.write "第"&hang&"行的相临数据为"&X&"and"&Y
%>

2007-02-27 12:52
快速回复:菜鸟小问题,请大家帮助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017726 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved