|
主题: 请教?一个先选择所需的表,然后查询的问题
|
 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
|
|
 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
|
|
 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之间的所有内容就对了。
|