sauce(思归)请进!
----------------------------------------------------------------
把你的编码以及数据库表的格式贴出来
/--------------------
order.htm页面:
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<H3><CENTER><FONT face="黑体" COLOR="">教室预定申请表单</FONT></CENTER></H3>
<HR>
<FONT SIZE=smaller COLOR="blue">请填写申请表单</FONT>
<center>
<FORM ACTION="submit.asp" METHOD=post>
<caption><b>申请表</b></caption>
<TABLE border=0>
<TR>
<TD align=right>申请人</TD>
<TD><INPUT TYPE="text" NAME="txtuser"></TD>
<td><FONT COLOR="red">* 必填</FONT></td>
</TR>
<TR>
<TD align=right>申请教室</TD>
<TD><SELECT NAME="optclsroom"><option>计算机教室(机房) <option>语音教室
<option>多功能教室 <option>生物实验室 <option>化学实验室 <option>物理实验室
</SELECT></TD>
</TR>
<TR>
<TD align=right>科目</TD>
<TD><INPUT TYPE="text" NAME="txtsubject"></TD>
<td><FONT COLOR="red">* 必填</FONT></td>
</TR>
<TR>
<TD align=right>使用时间</TD>
<TD><INPUT TYPE="text" NAME="txtusingtime">
<td><FONT COLOR="red">* 必填 (yyyy-m-dd请按此格式填写)</FONT></td>
</TR>
<TR>
<TD align=right>星期</TD>
<TD><SELECT NAME="optweek"><option>一 <option>二<option>三
<option>四 <option>五 <option>六 <option>日
</SELECT>
</TD>
</TR>
<TR>
<TD align=right>第几节课</TD>
<TD><INPUT TYPE="text" NAME="txtclass"></TD>
<td><FONT COLOR="red">* 必填</FONT></td>
</TR>
<TR>
<TD align=right>使用设备</TD>
<TD><INPUT TYPE="text" NAME="txtdevice"></TD>
</TR>
<TR>
<TD align=right>实验课题或内容</TD>
<TD><INPUT TYPE="text" NAME="txtitle"></TD>
</TR>
<TR>
<TD align=right><INPUT TYPE="submit" value="提交"></TD>
<TD><INPUT TYPE="reset" value="重填"></TD>
</TR>
</TABLE>
</FORM>
</center>
</BODY>
</HTML>
/--------------------
submit.asp页面:
<% on error resume next
set cn=server.createobject("adodb.connection")
cn.open "DSN=webdb"
set rs=server.createobject("adodb.recordset")
while not rs.eof
if request("optclsroom")=rs("classroom") and request("txtusingtime")=rs ("usingtime") and request("txtclass")=rs("class") then
response.write"该教室已预定!"
rs.movenext
else
'插入数据
data=" ' " &request.Form("txtuser")&" ',' " &request.Form("optclsroom")&_
" ',' " &request.Form("txtsubject")&_
" ',' " &request.Form("txtusingtime")&_
" ',' " &request.Form("optweek")&" ',' " &request.Form("txtclass")&_
" ',' " &request.Form("txtdevice")&" ',' " &request.Form("txtitle")&_
" ',' " &now&" ' "
strsql="insert into tbl_application(User,Classroom,Subject,UsingTime,Week,Class,Device,Title,Apptime) values("&data&") "
cn.execute(strsql)
end if
wend
%>
<HTML>
<HEAD>
<TITLE> 教室预定 </TITLE>
</HEAD>
<BODY>
<FONT SIZE=smaller COLOR="blue">预定成功!</FONT>
<a href="show.asp">查看</a>
</BODY>
</HTML>
<%
cn.close
%>
数据库格式:
字段 数据类型 说明
User 文本 用户
主键Classroom 文本 要使用的教室
Subject 文本 科目
主键UsingTime 时间 使用时间
主键Class 文本 在usingtime的第几节课使用
device 文本 设备
title 文本 课题
week 文本 星期几
apptime 时间 申请时间
/----------
设置三个主键是约束记录的唯一性,
以上的代码基本实现了功能,但报错时是“Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft][ODBC Microsoft Access Driver] 由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。
”,而不是我写的response里的内容。
多谢你了!你真的很热心!下次的MVP一定投你一票。
问题点数:100、回复次数:13Top
1 楼jxwangzhigang(一棵草)回复于 2002-05-22 16:27:08 得分 10
这条strsql="insert into tbl_application(User,Classroom,Subject,UsingTime,Week,Class,Device,Title,Apptime) values("&data&") "
sql语句就不正确!Top
2 楼jxwangzhigang(一棵草)回复于 2002-05-22 16:30:19 得分 0
这条strsql="insert into tbl_application(User,Classroom,Subject,UsingTime,Week,Class,Device,Title,Apptime) values("&data&") "
sql语句就不正确!Top
3 楼marf_cn(吗啡)回复于 2002-05-22 16:54:58 得分 0
jxwangzhigang(一棵草):
可是可以加入数据的啊,不知哪不对,请指明!多谢了。Top
4 楼jxwangzhigang(一棵草)回复于 2002-05-22 16:59:13 得分 0
哦!
你的rs对象好像连数据集都没有打开!Top
5 楼jxwangzhigang(一棵草)回复于 2002-05-22 17:02:09 得分 0
哦!
对了!你的rs对象好像连数据集都没有打开吧!
怎么能判断rs.eof呢?Top
6 楼marf_cn(吗啡)回复于 2002-05-22 17:15:01 得分 0
我没用sql语句,只是在if中判断,所以没有写。
请问你有什么好的解决方法吗?Top
7 楼jxwangzhigang(一棵草)回复于 2002-05-22 17:21:29 得分 0
你要判断的话也要先打开数据集的嘛!
要不然的话
sql=select * from table where classroom='"&request("optclsroom")&"'and usingtime='"&request("txtusingtime")&"' and class='"&request("txtclass")&"'
set rs=server.createobject("adodb.recordset")
set rs=cn.execute(sql)
if not rs.eof then
'添加数据
else
'显示已经存在
end ifTop
8 楼beyond_xiruo(CorruptionException)回复于 2002-05-22 17:44:52 得分 5
假如重复数据,你必须使所有字段的类型同意并且类型要符合插入数据类型!Top
9 楼beyond_xiruo(CorruptionException)回复于 2002-05-22 17:45:48 得分 0
加入重复数据,你必须使所有字段的类型统一并且类型要符合插入数据类型!Top
10 楼marf_cn(吗啡)回复于 2002-05-23 10:09:55 得分 0
jxwangzhigang(一棵草) :
你的代码可以加入数据库,但不显示页面。(记录不重复不显示,重复也不报错)Top
11 楼marf_cn(吗啡)回复于 2002-05-23 10:14:49 得分 0
beyond_xiruo(希偌):
你说 的“必须使所有字段的类型统一并且类型要符合插入数据类型!
”该如何作?Top
12 楼jxwangzhigang(一棵草)回复于 2002-05-23 10:18:08 得分 0
if rs.recordcount=0 then
'添加数据
else
'显示已经存在
end if
试试Top
13 楼saucer(思归)回复于 2002-05-23 10:49:21 得分 85
你的问题大了
首先,你不应该用,
on error resume next
用了此语句,你有问题也不知道出在哪了
第二,你不查询,你怎么知道纪录存在不存在?
第三,你的while 语句也有问题
试试
<%
set cn=server.createobject("adodb.connection")
cn.open "DSN=webdb"
set rs=server.createobject("adodb.recordset")
rs.open "select * from tbl_application",cn
bExist = false
do while not rs.eof
if request("optclsroom")=rs("classroom") and cdate(request("txtusingtime")) = rs("usingtime") and request("txtclass")=rs("class") then
bExist = true
exit do
end if
rs.movenext
loop
rs.close
set rs = nothing
if bExist then
%>
该教室已预定!
<%
else
data=" '" & request.Form("txtuser")& "','" &request.Form("optclsroom") &_
"','" &request.Form("txtsubject") &_
"','" &request.Form("txtusingtime") &_
"','" &request.Form("optweek")&"','" & request.Form("txtclass")&_
"','" &request.Form("txtdevice") & "','" &request.Form("txtitle")&_
"','" &now &"' "
strsql="insert into tbl_application(User,Classroom,Subject,UsingTime,Week,Class,Device,Title,Apptime) values(" & data & ") "
cn.execute(strsql)
end if
cn.close
set cn=nothing
%>
<HTML>
<HEAD>
<TITLE> 教室预定 </TITLE>
</HEAD>
<BODY>
<FONT SIZE=smaller COLOR="blue">预定成功!</FONT>
<a href="show.asp">查看</a>
</BODY>
</HTML>
但这答案还不太好,你应该这么做
<%
set cn=server.createobject("adodb.connection")
cn.open "DSN=webdb"
set rs=server.createobject("adodb.recordset")
sql = "select count(*) as count from tbl_application "
sql = sql & " where classroom = '" & replace(request("optclsroom"),"'","''") & "' "
sql = sql & " and usingtime = #" & replace(request("txtusingtime"),"'","''") & "# "
sql = sql & " and class = '" & replace(request("txtclass"),"'","''") & "' "
rs.open sql, cn
bExist = false
if rs("count") > 0 then
bExist = true
end if
rs.close
set rs = nothing
if bExist then
%>
该教室已预定!
<%
else
data=" '" & request.Form("txtuser")& "','" &request.Form("optclsroom") &_
"','" &request.Form("txtsubject") &_
"','" &request.Form("txtusingtime") &_
"','" &request.Form("optweek")&"','" & request.Form("txtclass")&_
"','" &request.Form("txtdevice") & "','" &request.Form("txtitle")&_
"','" &now &"' "
strsql="insert into tbl_application(User,Classroom,Subject,UsingTime,Week,Class,Device,Title,Apptime) values(" & data & ") "
cn.execute(strsql)
end if
cn.close
set cn=nothing
%>
<HTML>
<HEAD>
<TITLE> 教室预定 </TITLE>
</HEAD>
<BODY>
<FONT SIZE=smaller COLOR="blue">预定成功!</FONT>
<a href="show.asp">查看</a>
</BODY>
</HTML>
但考虑你的三个参数是主键,最简单的方法是这么做
<%
set cn=server.createobject("adodb.connection")
cn.open "DSN=webdb"
data=" '" & request.Form("txtuser")& "','" &request.Form("optclsroom") &_
"','" &request.Form("txtsubject") &_
"','" &request.Form("txtusingtime") &_
"','" &request.Form("optweek")&"','" & request.Form("txtclass")&_
"','" &request.Form("txtdevice") & "','" &request.Form("txtitle")&_
"','" &now &"' "
strsql="insert into tbl_application(User,Classroom,Subject,UsingTime,Week,Class,Device,Title,Apptime) values(" & data & ") "
on error resume next
cn.execute(strsql)
cn.close
set cn=nothing
if err.number <> 0 then
%>
该教室已预定!
<%
end if
%>
<HTML>
<HEAD>
<TITLE> 教室预定 </TITLE>
</HEAD>
<BODY>
<FONT SIZE=smaller COLOR="blue">预定成功!</FONT>
<a href="show.asp">查看</a>
</BODY>
</HTML>
Top
14 楼marf_cn(吗啡)回复于 2002-05-23 14:38:54 得分 0
问题已经按saucer的方法解决,太好了!
这个问题已经困扰我好几天了,终于完成了。非常感激你,saucer,真不知该说什么好。
也非常感谢大家的帮助!!!
要不是可用分不多了,一定多放一些。Top




