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

如何实现表中比对避免重复提交

bsthq 发布于 2016-06-12 22:06, 6195 次点击
各位老师,本人菜鸟一个,拿网上的源码学习,有想法却不知道如何实现,实在搞不懂,现在请教老师们帮助。
有一个表list ,我想添加的时候避免重复提交,就是adddate(提交时间)和selpayer(订餐类型)两个字段与表单输入的做比较,如果表中有记录,就提示“记录已添加,否则就执行添加操作。

下面是添加源码。
InOut = Request("add")
If Request.form("add")=" 添 加 " Then
adddate = Request.Form("adddate")
selpayer = Request.Form("selpayer")
seltype = Request.Form("seltype")
moneys = Trim(Request.Form("moneys"))
pjna = Trim(Request.Form("pjna"))
if seltype="" then
Response.Write "<script>alert('请用管理员帐号添加订餐类型!');location='javascript:history.back(-1)';</SCRIPT>"
Response.End
end if
if not isnumeric(moneys) Then
Response.Write "<script>alert('请输入数字整数!');location='javascript:history.back(-1)'</SCRIPT>"
Response.End
end if
Set rs = Server.CreateObject("ADODB.RecordSet")
Sql = "Select * From
10 回复
#2
hu9jj2016-06-13 06:36
利用关键字段检查,不存在的就直接添加,存在的就提示用户重复。
#3
bsthq2016-06-13 09:57
不成功,请老师修改一下。


<!--#include file="heck.asp"-->
<%
InOut = Request("add")
If Request.form("add")=" 添 加 " Then
adddate = Request.Form("adddate")
selpayer = Request.Form("selpayer")
seltype = Request.Form("seltype")
moneys = Trim(Request.Form("moneys"))
pjna = Trim(Request.Form("pjna"))

if seltype="" then
Response.Write "<script>alert('请用管理员帐号添加订餐类型!');location='javascript:history.back(-1)';</SCRIPT>"
Response.End
end if
if not isnumeric(moneys) Then
Response.Write "<script>alert('请输入数字整数!');location='javascript:history.back(-1)'</SCRIPT>"
Response.End
end if
Set rs = Server.CreateObject("ADODB.RecordSet")
Sql = "Select * From
    where addTime='"&adddate&"' and PayTypeID='"&seltype&"'"
    rs.Open Sql,Conn,1,3

    If rs.eof Then
    rs.addNew
    rs("InOut") = InOut
    rs("PayTypeID") = seltype
    rs("Moneys") = moneys
    rs("Project") = checkform(pjna)
    rs("addTime") = adddate
    rs("data") = adddate
    rs("etime") = now()
    rs("user") = Request.Cookies("id")
    Response.Write "<script>alert('操作成功!');this.location.href='pay.asp';</SCRIPT>"
    rs.Update
    rs.Close
    set rs=nothing
    Else
      Response.Write "<script>alert('已经存在此条信息!');location='javascript:history.back(-1)'</SCRIPT>"
      response.end()
    End If
    End if
    %>


    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <link href="images/css.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <script>

    var ie =navigator.appName=="Microsoft Internet Explorer"?true:false;
    function $(objID)
    {

    return document.getElementById(objID);

    }


    function CheckForm() {
             if (document.form1.adddate.value=="")
               {
               alert("请选择日期!");
               return false;
               }
             if (document.form1.moneys.value=="")
               {
                alert("份数不能为空!");
                document.form1.moneys.focus();
                return false;
               }
             if (document.form1.pjna.value=="")
              {
                alert("项目名称不能为空!");
                document.form1.pjna.focus();
                return false;
               }
             if (document.form1.seltype.value=="")
               {
                alert("请选择订餐类型!如果没有请先添加!");
                return false;
               }
    }
    </script>
    <script type="text/javascript" src="images/time.js"></script>
    <table width="100%" border="0" align=center cellpadding="6" cellspacing="0">
      <form action="" method=post name=form1 onSubmit="return CheckForm()">
        <tr>
          <td height=25 colspan=5 align="center" bgcolor="#F9F9F9"><b>
    <%If InOut=1 Then
    Response.Write "<font color=blue>新增订餐</font>"
    Else
    Response.Write "<font color=red>添 加 支 出</font>"
    End if
    %>     </b></td>
        </tr>
        <tr>
          <td width="35%" align="right">选择日期:</div></td>
          <td colspan="4" ><input name="adddate"  type="text" size="20" readonly="readonly" onclick="showcalendar(event, this);" onfocus="showcalendar(event, this);if
    (this.value=='0000-00-00')this.value=''" /></td>
        </tr>
        <tr>
          <td align="right">就餐类型:</td>
          <td colspan="4"><select name="seltype">
    <%
    set rs=server.createobject("adodb.recordset")
    sql="select * from [type] Where InOut="&InOut&""
    rs.open sql,conn,1,1
    response.write "<option sel=selected value='' name=seltype>请选择</option>"
    do while not rs.eof   
    response.write "<option " & sel & " value='"+CStr(rs("ID"))+"' name=seltype>"+rs("PayType")+"</option>"+chr(13)+chr(10)
    rs.movenext
    loop
    rs.close
    %>
            </select></td>
        </tr>
        <tr>
          <td align="right">份数:</td>
          <td colspan="4" >
          <input name="moneys" type="text" size="20" maxlength="10" />
          (输入数字整数 如:2)</td>
        </tr>
        <tr>
          <td ><div align="right">项目备注:</div></td>
          <td colspan="4" ><input name="pjna" type="text" size="50" value=" 预订餐" maxlength="50" /></td>
        </tr>
        <tr>
          <td colspan="5" align="center" ><input type="submit" name="add" value=" 添 加 " /></td>
        </tr>
      </form>
    </table>
    </body>
    </html>
#4
bsthq2016-06-13 16:49
不管如何操作,就是显示"已经存在此条信息",点确定,也又返回添加界面。 或者显示添加成功,看数据库又没有见数据添加。真是晕呀
#5
bsthq2016-06-13 16:54
这个是我从http://down.

下载的guke老师的源码,想学习设计过程,现在想修改里面的add.asp文件,实现提交新数据时如果与数据库list表中的addtime和paytype两个记录值相同时,提示数据重复,如果不重复就添加。可惜就是不会如何改。哪位老师帮改一下。谢谢!
#6
hu9jj2016-06-13 19:50
抱歉!那么长的代码,我没有时间慢慢检查,我仅能提供我的思路。
调试代码是件麻烦的事情,可以在需要的地方插入显示变量值的语句或提示语句,以便观察程序执行的情况,调试通过后再删除或注释掉这些语句。
#7
sylknb2016-06-15 09:06

基本思路:

set re1= server.createobject("adodb.recordset")
    rsql="select * from main where xh='"&a1&"' "
    re1.open rsql,conn,1,1
  
 IF not re1.eof then %>
  
   response.write"此序号已存在,不能添加!"&"<a href='insert.asp'>请返回重新输入</a>"-->
  或 <!--'response.Write "<script LANGUAGE='javascript'>alert('此序号已存在,不能添加!');window.location.href='insert.asp';</script>"-->

re1.close
      response.end
 ELSE
.....
end if
#8
bsthq2016-06-17 12:14
老师提供的思路,我也试了。如果是多条件的判断就不成功。总是提示信息已近存在。出现这种情况是什么原因,还需要老师指教。
目前我想对添加时间(addtime)\项目(paytypeID)\用户(USER)三个条件同时判断,如果数据表中存在相同的数据,就返回修改,否则就添加数据。list表的数据机构如下:
字段名称    字段类型
ID           自动编号
paytypeID    数字
moneys       数字
project      文本
addtime      日期/时间
user         数字
etime        日期/时间

程序代码:
<%

InOut
= Request("add")
If Request.form("add")=" 添 加 " Then
adddate
= Request.Form("adddate")
selpayer
= Request.Form("selpayer")
seltype
= Request.Form("seltype")
moneys
= Trim(Request.Form("moneys"))
pjna
= Trim(Request.Form("pjna"))
user
= Request.Cookies("id")
set rs=server.createobject("adodb.recordset")
sqltext
="select * from list where addTime='"&adddate&"' and PayTypeID='"&seltype&"' and user='"&user&"'"
rs.open sqltext,conn,
3,3
if not rs.Eof then
response.write
"<SCRIPT language=JavaScript>alert('已经有"&adddate&","&seltype&","&user&"信息!');javascript:history.back(-1)</SCRIPT>"
Response.End
end if
if seltype="" then
Response.Write
"<script>alert('请用管理员帐号添加费用类型!');location='javascript:history.back(-1)';</SCRIPT>"
Response.End
end if
if not isnumeric(moneys) Then
Response.Write
"<script>alert('请输入数字整数金额!');location='javascript:history.back(-1)'</SCRIPT>"
Response.End
end if
Set rs = Server.CreateObject("ADODB.RecordSet")
Sql
= "Select * From
    "
    rs.Open Sql,Conn,
    1,3
    rs.addNew
    rs(
    "InOut") = InOut
    rs(
    "PayTypeID") = seltype
    rs(
    "Moneys") = moneys
    rs(
    "Project") = checkform(pjna)
    rs(
    "addTime") = adddate
    rs(
    "data") = adddate
    rs(
    "etime") = now()
    rs(
    "user") = Request.Cookies("id")
    rs.Update
    rs.Close
    Response.Write
    "<script>alert('操作成功!');this.location.href='pay.asp';</SCRIPT>"
    End if

    %>
#9
hu9jj2016-06-18 07:26
调试时可以将判断的内容显示出来,注意看看是否一致,前后是否会有空格符。
#10
bsthq2016-06-19 09:49
请问老师,在哪个地方加入什么语句,可以使查询的结果显示出来。
#11
hu9jj2016-06-20 22:04
以下是引用bsthq在2016-6-19 09:49:39的发言:

请问老师,在哪个地方加入什么语句,可以使查询的结果显示出来。

在合适的位置添加显示文件信息或者某个变量值,当这个信息显示出来了,就说明程序运行到了这里。这是排除程序代码错误的方法之一。
1