请教关于非常规性表格显示数据的处理办法?

yinxun 2014-03-10 01:17:58
asp+access

假设数据库里有如下数据:
ID 尺寸 位置 房间
1 42寸 电视墙左上 101室
2 32寸 电视墙左下 101室
3 42寸 电视墙右上 101室
4 32寸 电视墙右下 101室
5 42寸 电视墙左上 102室
6 32寸 电视墙左下 102室
7 42寸 电视墙右上 102室
8 32寸 电视墙右下 102室
9 42寸 电视墙中上 102室
10 32寸 电视墙中下 102室
……

如果说在asp页面上做个表格把上述数据显示出来,太简单不过了
但我现在的需求是,用实景方式把上述数据显示出来
比如101室4台电视机的排列是“田”字形,102室是6个口字型




当然,每个房间形状不一样,表格我只能写死,不可能用循环语句写出来

但是每个单元格里要显示不同的数据(可以根据ID写死,比如101房间的左上,我就定义为ID为1的那行数据中的“尺寸”,把这个值写到单元格里去,然后提供一个编辑功能,供以后有调整可以修改)

请问这样的怎么写啊,SQL和页面语句怎么弄?请大神指点,最好有个类似的源代码,大神给个链接我自己下下来看看改改也行,求教
...全文
315 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
taochunsong 2014-03-27
  • 打赏
  • 举报
回复
最简单的方法 在后面加个字段, 把位置用坐标表示出来 就是第几行第几列的标识方法 然后读取出来的数据,可以最简单用div层 位置直接可以输出,不用去拼接 表格,太麻烦 然后单独做个编辑页面,连表格的大小也用参数定义,动态显示
Go 旅城通票 2014-03-14
  • 打赏
  • 举报
回复
用6个项的数组记录你的对应位置,然后通过位置内容设置这6个项,判断下上下td不一致要如何合并,大概模式如下

<%
 
 
 
showMsg()

 
function showMsg()

set roomrs=conn.execute("select distinct fangjian from yangji_bak")'得到房间号
 
sql="select * from yangji_bak"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
 
 
dim x_chicun,x_fangjian,x_weizhi
dim arr
while not roomrs.eof'循环房间号
redim arr(5)'重新定义数组请清楚上一次的数据,用于存储位置数据,如下图
'0(左上) 1(中上) 2(右上)
'3(左下) 4(中下) 5(右下)
'下面2个变量记录上下有多少个格子,好进行合并
tdup=0
tddown=0

x_fangjian=roomrs(0)
rs.Filter="fangjian='"&x_fangjian&"'"'执行过滤得到此房间的数据
while not rs.eof'填充位置数组
   x_chicun =rs("chicun")
   x_weizhi =rs("weizhi")
   if instr(x_weizhi,"左上")<>0 then
     arr(0)=x_chicun
     tdup=tdup+1
   elseif instr(x_weizhi,"中上")<>0 then
     arr(1)=x_chicun
     tdup=tdup+1
   elseif instr(x_weizhi,"右上")<>0 then
     arr(2)=x_chicun
     tdup=tdup+1
   elseif instr(x_weizhi,"左下")<>0 then
     arr(3)=x_chicun
     tddown=tddown+1
   elseif instr(x_weizhi,"中下")<>0 then
     arr(4)=x_chicun
     tddown=tddown+1
   elseif instr(x_weizhi,"右下")<>0 then
     arr(5)=x_chicun
     tddown=tddown+1
   end if
   rs.movenext
wend 
%>
<% response.write x_fangjian %>:<br />
<table border=1 width='45%' cellspacing=1 align=left cellpadding=3 bordercolor=#ad8c42  style=BORDER-COLLAPSE: collapse;>
<tr class="title2" align="center">
<%
'用于计算上下td不一致时如何合并
upcolspan=""
downcolspan=""
if tdup<>tddown then
  if tdup=3 then'上3下2
    upcolspan=" colspan='2'"
    downcolspan=" colspan='3'"
  else'上2下3
    upcolspan=" colspan='3'"
    downcolspan=" colspan='2'"
  end if
end if
'输出上面的数据行
for i=0 to 2
  if arr(i)<>"" then response.write "<td"&upcolspan&">"&arr(i)&"</td>"
next
 %>
  </tr>
  <tr class="title2" align="center">
  <%
'输出下面的数据行
for i=3 to 5
  if arr(i)<>"" then response.write "<td"&downcolspan&">"&arr(i)&"</td>"
next
   %>
  </tr>
</table> 
<br><br><br><br><br>
<%
  roomrs.movenext
wend
roomrs.close
set roomrs=nothing
rs.close
set rs=nothing
end function
%>
Go 旅城通票 2014-03-10
  • 打赏
  • 举报
回复
选出所有的记录,然后 rs.Filter="房间='101室'" 过滤下,然后依据rs.RecordCount得到有多少个单元格,自己分配下td就好了 如果不知道有哪些房间号,再取另外一个游标获取房间号,select distinct 房间 from 表
yinxun 2014-03-10
  • 打赏
  • 举报
回复
具体怎么弄啊 并有些是四个 有些是六个 有些是五个什么 不一样
xuzuning 2014-03-10
  • 打赏
  • 举报
回复
你不是有表示方位的词:左上、中下.... 吗 按他提示的方位填充就是了

28,391

社区成员

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

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