根据使用经典ASP从任何下拉列表中选择的选项,在多个下拉列表中填充字段

时间:2015-06-03 11:17:27

标签: sql asp.net sql-server vbscript

我找到了this解决方案来填充一个组合框, 但是,如果我需要更改多个组合框列表呢?

最佳表现是什么?

  1. 每次与Sql的新连接
  2. 时,在每个组合框打开时运行与所需查询相同的代码
  3. 获取所有行到vbscript数组并使用它

  4. 在一个查询中发送多个select语句

  5. article.comments.clear()

    但后来我不知道如何获得对变量或数组的响应 我收到错误

      

    Microsoft JET数据库引擎错误“80040e14”

         

    在SQL语句结束后找到的字符。

2 个答案:

答案 0 :(得分:1)

我不知道哪个是最快的...我想一次将所有查询传递给DB,然后处理返回的各种表。

就个人而言,我最担心的是维护和编辑代码的效率而不是执行,除非在特殊情况下你会发现它们之间没什么区别。

在此基础上,我会查询,获取数据并一次填充下拉列表,然后查看它是如何运行的,并等待证明无法完成此操作。

使用这种方法,您甚至可能会使用查询(或表和列)调用的子或函数将结果构建为下拉列表。

根据你的例子,我最初会做这样的事情:

<select name="First">
<%
set rsRecordSet=Server.CreateObject("ADODB.recordset")
rsRecordSet.Open "Select distinct ID,FirstThing FROM FirstTable", connection
While not rsRecordSet.EOF
    %>
    <OPTION VALUE="<%=rsRecordSet("ID")%>"><%=rsRecordSet("FirstThing")%></OPTION> 
    <% 
    rsRecordSet.MoveNext 
Wend 
rsRecordSet.Close
Set rsRecordSet= nothing 
%>
</select> 

<select name="Second">
<%
set rsRecordSet=Server.CreateObject("ADODB.recordset")
rsRecordSet.Open "Select distinct ID,SecondThing FROM SecondTable", connection
While not rsRecordSet.EOF
    %>
    <OPTION VALUE="<%=rsRecordSet("ID")%>"><%=rsRecordSet("SecondThing")%></OPTION> 
    <% 
    rsRecordSet.MoveNext 
Wend 
rsRecordSet.Close
Set rsRecordSet= nothing 
%>
</select> 

<select name="Third">
<%
set rsRecordSet=Server.CreateObject("ADODB.recordset")
rsRecordSet.Open "Select distinct ID,ThirdThing FROM ThirdTable", connection
While not rsRecordSet.EOF
    %>
    <OPTION VALUE="<%=rsRecordSet("ID")%>"><%=rsRecordSet("ThirdThing")%></OPTION> 
    <% 
    rsRecordSet.MoveNext 
Wend 
rsRecordSet.Close
Set rsRecordSet= nothing 
%>
</select> 

答案 1 :(得分:1)

方式№4。

在一个查询中运行所有内容,结果将在一个数据集中。

strSQL = "Select Distinct Make as Value, 'S1' as SelectionNumber From Cars union all Select Distinct Model as Value, 'S2' as SelectionNumber From Cars"

在这种情况下,您将知道SelectionNumber字段包含您的查询ID ...

  

最佳表现是什么?

我建议您使用SQL Server Profiler来测量查询的速度。