主题:  请教?一个先选择所需的表,然后查询的问题

meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#12002/10/17 22:41:48
我不太懂asp,所以请教大虾

1)提交页:1个文本输入框,1个单选列表(选择所需的表),1个提交钮
2)结果页:在所选表中查询,生成记录集
有3个表,其实每张表的字段是一样的(同一张表复制做的)只是名字不同而已

我现在只会由一张表生成的查询,请问如何实现选择所需的表的功能?????
要在结果页中分别作3张表的记录集吗?



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#22002/10/18 8:33:58



meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#32002/10/19 12:35:50
还是不懂啊?!!!
没看到里面有讲关于------这个问题的



Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#42002/10/19 17:02:00
编写代码。你试试。
文本框name=textfield
列表框name=select
在结果页设置2个变量:
变量1=request.form("textfield")
变量2=request.form("select")
结果页记录集sql语句:
select * from 变量2 where 你查询的字段名='变量1'



meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#52002/10/19 17:26:40
还是不懂啊?!!! ]
select * from 是基于cn连接和rs记录集已经设好的情况
请问cn连接和rs记录集是如何进行设定、选择呢?




Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#62002/10/19 17:36:18
其实你完全可以把三张表合为一张表哦。既然字段都一样。那样还会减少数据库文件大小。你说说你的表结构,我帮你想想……



Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#72002/10/19 17:39:04
还有,cn连接和rs记录集已经设好也没有关系,你可以在代码编辑模式下手动修改啊。主要在记录集里打开高级模式,然后加变量,改sql语句即可。



meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#82002/10/19 20:05:07
谢谢你的答复!
我的表谈不上什么结构,独立的表,没有关系之间
请问能不能有选择性的建立cn连接和rs记录集,通过单选列表(选择所需的表),
这样做是不是执行的快一些?

有相关的课程马?
写代码对我来说------我不会写,看有的还能看懂



Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#92002/10/19 21:56:48
不客气。大家探讨嘛:)
其实建立cn是不用选择的。你只要正确连接数据库就可以了。关键是在查询时选择表,即记录集。我上面给你提供的方法是可行的。不过你说不会写代码,有点不好办。不过我想如果表格能三合为一就很好办了。因为你三张表一模一样。只是里面数据不一样,你可以这么办。在表里加个字段,如“tbid”。是表一的数据,在该记录的"tbid"字段输入1,表二的数据,输入2,表三的数据输入3。这样就把数据区别开了。在查询页面,文本框随便起个名字,如“textfield”,下拉选单也同样起个名字,如“select”。里面有三个选项。如:单位一,值为1,单位二,值为2,单位三,值为3。在结果页面,设定记录集,你打开数据集面板,选高级模式,在下方单击“+”号,增加2个变量,如:变量名为 a ,运行时值为request。form("textfield")
变量名为 b,运行时值为request。form("select")然后在上方sql语句里这么写
select * from 表
where 你查询的字段名='a' and tbid='b'
就ok了。不知道对你有没有帮助。
如果实在不行,我作一个给你看看,告诉我你的email



Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#102002/10/19 21:59:49
上面的运行值应为:request.form("textfield"),request.form("select")



meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#112002/10/20 11:52:50
我试着在ud里面改了一下,加了case选择,好像还是不对,帮忙看一下
<%@LANGUAGE="VBSCRIPT"%>


<%

Dim ser__MMColParam
ser__MMColParam = "1"
If (Request.Form("topic") <> "") Then
ser__MMColParam = Request.Form("topic")
End If
%>
<%
data = Request.Form("select")
select case data
case cpt
MM_cndata_STRING = MM_cncpt_STRING
bdata = cptdn
case pho
MM_cndata_STRING = MM_cnpho_STRING
bdata = phosj
end select

Dim ser
Dim ser_numRows

Set ser = Server.CreateObject("ADODB.Recordset")
ser.ActiveConnection = MM_cndata_STRING
ser.Source = "SELECT * FROM bdata WHERE topic LIKE '%" + Replace(ser__MMColParam, "'", "''") + "%' ORDER BY di DESC"
ser.CursorType = 0
ser.CursorLocation = 2
ser.LockType = 1
ser.Open()

ser_numRows = 0
%>




Untitled Document




<%=(ser.Fields.Item("topic").value)
%>


<%
ser.Close()
Set ser = Nothing
%>

编辑历史:[这消息被meanzy编辑过(编辑时间2002-10-20 16:07:33)]


meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#122002/10/20 12:00:30
我改动的地方:
1。case选择
2。<%=(ser.Fields.Item("topic").value) %>
3。<%ser.Close() Set ser = Nothing%>
返回结果是:
ADODB.Recordset 错误 '800a0bb9'

参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。

/handse/ser2.asp,行27
行27是:ser.ActiveConnection = MM_cndata_STRING

感觉还是选择case后记录集没建好 :(
麻烦你帮我做一个吧,我的email:meanzy@163.com
谢谢了

:) :) :)

编辑历史:[这消息被meanzy编辑过(编辑时间2002-10-20 16:09:49)]


meanzy

职务:普通成员
等级:1
金币:1.0
发贴:147
注册:2002/10/17 22:20:43
#132002/10/20 12:02:43
天啊!!!!!
反括号竟然变脸了



Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#142002/10/20 17:20:41
<%
Dim Recordset1__b
Recordset1__b = "1"
if (request.form("textfield") <> "") then Recordset1__b = request.form("textfield")
%>
<%
Dim a
a = request.form("select")
%>
<%
set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_selecttable_STRING
Recordset1.Source = "SELECT * FROM " + Replace(a, "'", "''") + " WHERE
*******************************
name = '" + Replace(Recordset1__b, "'", "''") + "'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 3
Recordset1.Open()
Recordset1_numRows = 0
%>

以上是我定义记录集选择表的代码,在我的机子上调试通过。:)
请注意我打星号的地方,在选择表的时候,变量a要改成上面的写法。切记



Such a lovely place

职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
#152002/10/20 17:23:07
嘿嘿,不好意思,发表过星号偏掉了;)
你把变量a改为from和where之间的所有内容就对了。