注册 登录
编程论坛 ASP技术论坛

[求助]从查询的结果中进行选择再添加到新表中该如何实现?

dip 发布于 2007-08-17 14:33, 1343 次点击

表1
id 名称 规格
1 111 111
2 222 222
3 333 333
----------------------------------
表2
id 名称 规格

----------------------------------
通过 SELECT * FROM 表1 将表1所有记录都查询出来!
然后只选择需要的一些记录并添加到表2该如何实现啊?
循环语句该如何编写?麻烦大侠教下,谢谢!
注意:上面两个表里的数据只是假设,数据可能有很多,而且选择的数据也可能多个!

[此贴子已经被作者于2007-8-17 16:26:53编辑过]

16 回复
#2
ayue2222007-08-17 14:46
set rs=conn.execute ("select id,名称,规格 from 表1 order by id")
if not rs.eof then
i=0
do while not rs.eof
if i<2 then conn.execute ("insert into 表2 (id,名称,规格) values("&rs(0)&",'"&rs(1)&"','"&rs(2)&"')")
rs.movenext
i=i+1:if i>=2 then exit for
loop
rs.close:set rs=nothing
#3
dip2007-08-17 14:51
多谢!我马上去看看!
#4
dip2007-08-17 15:31

Microsoft VBScript 编译器错误 (0x800A040F)
无效的 'exit' 语句
/jinlu/111.asp, line 12, column 24
i=i+1:if i>=2 then exit for

#5
QQQQQQQQQQQQ2007-08-17 15:41
.......
set rs=server.createobject("adodb.recordset")
rs.open"select * from 表1 where id=1 or id=2",conn,1,1 '如果ID是文本类型就加单引号
while not rs.eof
conn.execute"insert into 表2(id,名称,规格) values("&rs("id")&",'"&rs("名称")&"','"&rs("规格")&"')"
rs.movenext
wend
........
#6
dip2007-08-17 15:43
回复:(ayue222)set rs=conn.execute (
我的意思是查询出的结果要显示在页面上[上面说的3个记录只是假设,可能有上百上千的记录].
然后在前面增加一些复选框能让操作员进行选择,选择的结果是多种的可能选了几个,也可能选了几十个!
然后再把选择的数据添加到另外一张表!

[此贴子已经被作者于2007-8-17 16:00:51编辑过]

#7
ayue2222007-08-17 15:53
冷汗 .....
exit do
#8
dip2007-08-17 16:00
回复:(ayue222)冷汗 .....exit do

是我自己小白了,呵呵,sorry!

#9
dip2007-08-17 16:15
我的意思是查询出的结果要显示在页面上[上面说的3个记录只是假设,可能有上百上千的记录].
然后在前面增加一些复选框能让操作员进行选择,选择的结果是多种的可能选了几个,也可能选了几十个!
然后再把选择的数据添加到另外一张表!
#10
ayue2222007-08-17 16:33

<SCRIPT language=javascript>
function unselectall()
{
if(document.myform.chkAll.checked){
document.myform.chkAll.checked = document.myform.chkAll.checked&0;
}
}

function CheckAll(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.Name != "chkAll"&&e.disabled==false)
e.checked = form.chkAll.checked;
}
}
</SCRIPT>
<%set rs=conn.execute ("select id,名称,规格 from 表1 order by id")
if not rs.eof then
%>
<form name="myform" method="Post" action="接收并保存选择的数据文件.asp">
<table>
<tr class="title" height="22">
<td height="22" width="30" align="center"><strong>选中</strong></td>
<td height="22" width="30" align="center"><strong>名称</strong></td>
<td height="22" width="30" align="center"><strong>规格</strong></td>

</tr>
<%
i=0
do while not rs.eof
%>
<tr class="tdbg" onmouseout="this.style.backgroundColor=''" onmouseover="this.style.backgroundColor='#BFDFFF'">
<td width="30" align="center"><input name='ID' type='checkbox' onclick="unselectall()" id="ID" value='<%=rs("ID")%>'></td>
<td width="25" align="center"><%=rs("名称")%></td>
<td width="25" align="center"><%=rs("规格")%></td>

</tr>
<%rs.movenext
loop
rs.close:set rs=nothing
%>
</table>
<br>
<table width="99%" border="0" cellpadding="0" cellspacing="0" class="tdbg" align=center>
<tr>
<td width="250" height="30"> <input name="chkAll" type="checkbox" id="chkAll" onclick=CheckAll(this.form) value="checkbox">
选中本页显示的所有 <input name="save" type="submit" value="保存"></td>
</tr>
</table>
</form>

这样就传递了所有所选ID的 数组 (id1,id2,id3,...idN)
接收的时候split (id,",")然后循环保存到数据库就好了 ..

#11
dip2007-08-17 16:44
回复:(ayue222)...

哇,谢谢大哥!我也下班了,回家看了!再次感谢!!!

#12
ayue2222007-08-17 16:45
倒 ...这么早就下班老 ??
羡慕ing ...
#13
thintear2007-08-17 19:35

好厉害

#14
dip2007-08-21 12:54
回复:(ayue222)...

大侠,你给我的代码还是有问题!!!再麻烦帮忙看看,谢谢拉!
111.asp:

<SCRIPT language=javascript>
function unselectall()
{
if(document.myform.chkAll.checked){
document.myform.chkAll.checked = document.myform.chkAll.checked&0;
}
}

function CheckAll(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e=form.elements[i];
if (e.Name != "chkAll"&&e.disabled==false)
e.checked = form.chkAll.checked;
}
}
</SCRIPT>
<!--#include virtual="/jinlu/conn.asp"-->
<%set rs=conn.execute ("select a1,a2,a3 from a order by a1")
if not rs.eof then
%>
<form name="myform" method="Post" action="../../222.asp">
<table>
<tr class="title" height="22">
<td height="22" width="30" align="center"><strong>选中</strong></td>
<td height="22" width="30" align="center"><strong>名称</strong></td>
<td height="22" width="30" align="center"><strong>规格</strong></td>

</tr>
<%
i=0
do while not rs.eof
%>
<tr class="tdbg" onmouseout="this.style.backgroundColor=''" onmouseover="this.style.backgroundColor='#BFDFFF'">
<td width="30" align="center">
<input name='a1' type='checkbox' onclick="unselectall()" id="a1" value='<%=rs("a1")%>'></td>
<td width="25" align="center"><%=rs("a2")%></td>
<td width="25" align="center"><%=rs("a3")%></td>

</tr>
<%rs.movenext
loop
rs.close:set rs=nothing
end if
%>
</table>
<br>
<table width="99%" border="0" cellpadding="0" cellspacing="0" class="tdbg" align=center>
<tr>
<td width="250" height="30"> <input name="chkAll" type="checkbox" id="chkAll" onclick=CheckAll(this.form) value="checkbox">
选中本页显示的所有 <input name="save" type="submit" value="保存"></td>
</tr>
</table>
</form>
----------------------------------------------------------------------------------------------------
222.asp:

<!--#include virtual="/jinlu/conn.asp"-->
<%
a1=request.form("a1")
a2=request.form("a2")
a3=request.form("a3")
aa1=split(a1,",")
aa2=split(a2,",")
aa3=split(a3,",")

Response.Write("返回值是否为数组:"&IsArray(aa1)&"<br>")
For i=LBound(aa1) To UBound(aa1)
exec="insert into b(b1,b2,b3)values('"+aa1(i)+"','"+aa2(i)+"','"+aa3(i)+"')"
conn.execute exec
Next
conn.close
set conn=nothing
%>
------------------------------------------------------------------------------------------------------
如果:
表a:
a1 a2 a3
1 11 111
2 22 222
3 33 333
4 44 444
5 55 555
表b:
b1 b2 b3

-------------------------------------------------------------------------------------------------------
问题是:
1:如果选择了3.4两条记录准备插入表b,但实际插入表b的是1.2两条记录=.=!插入的数量是对的,但是具体内容却永远是按照次序排下来的!!!
2:每次插入多条记录的时候,从第二条记录开始每个值前面都加了个空格=.=!比如插入1.2.3三条记录,但插入表b的结果是
1 11 111
_2 _22 _222
-3 _33 _333
第二条记录开始就这样.........=.=!
-------------------------------------------------------------------------------------------------------
在线等待.....大侠请多指教!!!多谢了!!!

[此贴子已经被作者于2007-8-21 12:55:06编辑过]

#15
ayue2222007-08-21 13:07
这里传递的a1最好为表中的ID值,即AC中的自动递增字段(int类型),其他的字段在接收页面再从数据库取出来就好了 。。。也就是说点击全选之后仅仅传递a1的值,并不传递a2、a3的值 。。
#16
dip2007-08-21 14:44

呵呵,根据所选的id再进行,再把查询的结果插入表b.可以了!
多谢这位朋友,你给了我很大的帮助!!!

#17
hehe3652007-08-21 15:57
编程要有好的逻辑啊!想下就知道了
1