| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1046 人关注过本帖, 1 人收藏
标题:求助:实现ASP——ACCESS的复合查询。
只看楼主 加入收藏
atian
Rank: 1
等 级:新手上路
帖 子:268
专家分:0
注 册:2006-1-24
结帖率:60%
收藏(1)
已结贴  问题点数:20 回复次数:7 
求助:实现ASP——ACCESS的复合查询。
求助:
表结构如下:
代码(A)    名称(B)    上级代码(C)      级别(D)
1002         银行存款          0 表示无上级   1
1002001      工商银行          1002           2
1002001001   广东分行          1002001        3
1002001002   江西分行          1002001        3
1002002      农业银行          1002           2
1002002001   广东分行          1002002        3
1002002002   福建分行          1002002        3


如何写一查询语句,得到这种效果:

输入A字段代码,B字段名称显示为多级的,例如

      A                      B

若输入:1002001      则显示为 银行存款-工商银行
若输入:1002002002   则显示为 银行存款-农业银行-福建分行
若输入:1002         则显示为银行存款
若输入:1002001001   则显示为银行存款-工商银行-广东分行

请贴相关代码。多谢。

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 atian 于 2010-5-15 17:25 编辑 ]
搜索更多相关主题的帖子: ASP 复合 查询 
2010-05-15 12:22
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
收藏
得分:7 
a=1002001
b=""
i=2
dim rootRs
Do While i>1
sql="SELECT * FROM 表名 WHERE 代码(A)="&a
Set rootRs=Server.CreateObject("ADODB.RecordSet")
rootRs.Open sql,conn,1,1
If rootRs.Bof OR rootRs.Eof Then
else
   i=rootrs("级别(D)")
   b=rootrs("名称(B)")&"-"&b
   a=rootrs("上级代码(C)")
end if
Loop
if len(b)>1 then b=Left(b,len(b)-1)
response.write b

俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-05-15 15:28
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:7 
   ABCD前面的中文是字段名吗?还有你就一个表,而且表结构就4个字段,总感觉这样设计很不合理!复合多表,至少也有2个表的数据,而你只有一个表!
如果要实现你的效果,并且只用一个表,也可达到你要的效果!
   思路规律就是:对从客户端输入的字符串1002001001进行分组:1002,1002001,1002001001分成这样3个数字组!然后分别在数据库里查找代码A字段等于这3个数字组的名称B字段,最后把结果进行组合就是你要的效果!
获取字符分组的FUN如下:
function splitt(str)
length=len(str)
select case length
case 4: splitt=str
case 7:
  dim arr(2)
  arr(0)=left(str,4)
  arr(1)=right(str,3)
  splitt=arr
case 10:
   dim arr1(3)
  arr1(0)=left(str,4)
  arr1(1)=mid(str,5,3)
  arr1(2)=right(str,3)
  splitt=arr1
end select
end function
mname=request.form("mname")'这个是从客户端表单查询文本框里获取的数据!下面是处理!
mname=splitt(mname)
if isarray(mname) then
for i=0 to ubound(mname)
response.write(mname(i)&"<br>")
执行SQL语句。。。省略,看数组程度,至少执行2次!
next
else
response.write mname
执行SQL语句。。。省略,仅执行1次!
end if

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-05-15 15:34
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
补充:客户端JS需要做一个限制,只允许输入,4。7。10位的数字!如下:
<input name="mname" type="text" id="mname" onblur="check(this.value)">
<script>
function check(str)
{
var re=/^(\d{4}|\d{7}|\d{10})$/g;
var cj=re.test(str);
if (!cj)
{alert("输入的非数字或不满足4,7,10位的查询要求!");
return false;
}
}
</script>


Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-05-15 15:43
hams
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:18
帖 子:912
专家分:3670
注 册:2008-7-30
收藏
得分:0 
也许人家输入的不止4。7。10位的数字呢

查表好了,没有就结束

俺不高手,俺也是来学习的。
俺的意见不一定就对,当你不认同时请点忽视按钮。
当走到十字路口不知该如何走时,可在论坛问下路,但你若希望别人能一路把你送到目的地,显然是不现实的,因为别人也有自己要走的路。
2010-05-15 17:22
atian
Rank: 1
等 级:新手上路
帖 子:268
专家分:0
注 册:2006-1-24
收藏
得分:0 
还是没有实现这种效果。我贴图在一楼

认认真真的工作,开开心心的娱乐......
2010-05-15 17:32
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
还是那句老话,如果还看不懂或者搞不定,就发源文件上来,并在里面建立一个TXT文件,详细说明你的要求和问题!谁有时间改好了就再发上来并标注在哪有改动即可!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-05-15 18:44
atian
Rank: 1
等 级:新手上路
帖 子:268
专家分:0
注 册:2006-1-24
收藏
得分:0 
那个属不属于多级联动的呀。或都有没有多级联动的代码。要ASP的,不要JS的

认认真真的工作,开开心心的娱乐......
2010-05-16 14:51
快速回复:求助:实现ASP——ACCESS的复合查询。
数据加载中...
 
   



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

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