查看: 4115|回复: 12

[问与答] asp表单提交access数据库遇到问题,求助

[复制链接]
金洋 发表于 2018-7-1 18:02:09 | 显示全部楼层 |阅读模式
无标题.jpg
我用dw建了个表单,用于每天三个楼层的考勤员分别录入本层非正常下班的同事下班时间,数据提交到我电脑的access数据库里再进行统计计算
但是我只会一行一行的往数据库里提交,而且不会判断他们填了几行,空行提交会报类型不匹配错的,麻烦大咖帮我改改,谢谢!
我的数据库名是user.mdb,里面有个jb表,表中有四项dat,nam,bc,tim

下面是我的代码:

  1. ‘调用user.mdb数据库,定义日期、姓名、班次、加班时间4个字段
  2. <%
  3. set conn=server.createobject("adodb.connection")
  4. conn.open "driver={microsoft ACCESS driver (*.mdb)};dbq="&server.mappath("user.mdb")
  5. %>
  6. <%  
  7. dat=request.form("dat") '
  8. nam=request.form("nam") '  
  9. bc=request.form("bc") '  
  10. tim=request.form("tim") '  
  11.   
  12. ’提交第一行数据到jb加班表中的4个字段中
  13. Dim rsadd  
  14. set rsadd=server.CreateObject("adodb.recordset")  
  15. rsadd.Open "select * from jb",conn,1,3  
  16. rsadd.AddNew
  17. rsadd("dat")=dat
  18. rsadd("nam")=nam
  19. rsadd("bc")=bc
  20. rsadd("tim")=tim

  21. rsadd.Update  
  22. rsadd.Close  
  23. set rsadd=nothing%>   

  24. ’定义第二行并提交第二行数据到jb加班表中的4个字段中
  25. <%  
  26. dat=request.form("dat2") '
  27. nam=request.form("nam2") '  
  28. bc=request.form("bc2") '  
  29. tim=request.form("tim2") '  
  30.   
  31. Dim rsadd2  
  32. set rsadd2=server.CreateObject("adodb.recordset")  
  33. rsadd2.Open "select * from jb",conn,1,3  
  34. rsadd2.AddNew
  35. rsadd2("dat")=dat
  36. rsadd2("nam")=nam
  37. rsadd2("bc")=bc
  38. rsadd2("tim")=tim

  39. rsadd2.Update  
  40. rsadd2.Close  
  41. set rsadd2=nothing%>


  42. ’定义第三行并提交第三行数据到jb加班表中的4个字段中

  43. <%  
  44. dat=request.form("dat3") '
  45. nam=request.form("nam3") '  
  46. bc=request.form("bc3") '  
  47. tim=request.form("tim3") '  
  48.   
  49. Dim rsadd3  
  50. set rsadd3=server.CreateObject("adodb.recordset")  
  51. rsadd3.Open "select * from jb",conn,1,3  
  52. rsadd3.AddNew
  53. rsadd3("dat")=dat
  54. rsadd3("nam")=nam
  55. rsadd3("bc")=bc
  56. rsadd3("tim")=tim

  57. rsadd3.Update  
  58. rsadd3.Close  
  59. set rsadd3=nothing%>

  60. <%
  61. response.write "记录添加成功!"
  62. %>
复制代码
xuanxiao 发表于 2018-7-2 08:37:11 | 显示全部楼层
我用dw建了个表单,用于每天三个楼层的考勤员分别录入本层非正常下班的同事下班时间,数据提交到我电脑的 ...
金洋 发表于 2018-7-1 18:02
代码打包发送到support@ttasp.COM
帮你调试看看
xuanxiao 发表于 2018-7-2 08:37:13 | 显示全部楼层
我用dw建了个表单,用于每天三个楼层的考勤员分别录入本层非正常下班的同事下班时间,数据提交到我电脑的 ...
金洋 发表于 2018-7-1 18:02
代码打包发送到support@ttasp.COM
帮你调试看看
 楼主| 金洋 发表于 2018-7-2 09:33:50 | 显示全部楼层
代码打包发送到
帮你调试看看
xuanxiao 发表于 2018-7-2 08:37



   谢谢老师,发过去了
半个专家 发表于 2018-7-2 22:37:26 | 显示全部楼层
my GOD  你的表单页代码不会写了几十条重复代码来定义这么多行表格吧,不然你的提交页也不用一个一个去定义提交了
半个专家 发表于 2018-7-2 22:39:48 | 显示全部楼层
看看管理员蜀黍有什么好办法吧,我也不太明白怎么弄循环然后遍历提交
 楼主| 金洋 发表于 2018-7-3 10:32:57 | 显示全部楼层
my GOD  你的表单页代码不会写了几十条重复代码来定义这么多行表格吧,不然你的提交页也不用一个一个去定义 ...
半个专家 发表于 2018-7-2 22:37



   是啊,你看出来了,领导着急要,我只能先把数据库里各个字段都改成文本类型,至少提交不会报类型不匹配的错
 楼主| 金洋 发表于 2018-7-3 22:28:02 | 显示全部楼层
代码打包发送到
帮你调试看看
xuanxiao 发表于 2018-7-2 08:37



    老师,我那个代码测试得咋样了?是不是不好弄啊?都没信儿了
xuanxiao 发表于 2018-7-4 09:36:16 | 显示全部楼层
医院交班系统_ttasp_20180704.rar (242.13 KB, 下载次数: 0, 售价: 10 个ASP币) 回复 8# 金洋


1.jpg
创建input对象,循环就行

2.jpg
模拟ajax,你可以再完善下
后台处理可以更细化下:
  1. dat=request("dat") '
  2. nam=request("nam") '  
  3. bc=request("bc") '  
  4. tim=request("tim")

  5. IF dat<>"" and nam<>"" and bc<>"" and tim<>"" THEN  '不能为空值  
  6.   
  7.                 Dim rsadd  
  8.                 set rsadd=server.CreateObject("adodb.recordset")  
  9.                 rsadd.Open "select * from jb",conn,1,3
  10.                  '这里最好加上重复添加检测
  11.                 rsadd.AddNew
  12.                 rsadd("dat")=dat
  13.                 rsadd("nam")=nam
  14.                 rsadd("bc")=bc
  15.                 rsadd("tim")=tim
  16.                  
  17.                
  18.                 rsadd.Update  
  19.                 rsadd.Close  
  20.                 set rsadd=nothing   
  21.                  
  22.                 response.write "记录添加成功!"
  23. END IF               
复制代码
xuanxiao 发表于 2018-7-4 09:43:31 | 显示全部楼层
my GOD  你的表单页代码不会写了几十条重复代码来定义这么多行表格吧,不然你的提交页也不用一个一个去定义 ...
半个专家 发表于 2018-7-2 22:37

他就是这样写的
xuanxiao 发表于 2018-7-4 09:44:12 | 显示全部楼层
看看管理员蜀黍有什么好办法吧,我也不太明白怎么弄循环然后遍历提交
半个专家 发表于 2018-7-2 22:39

已经给了个示范,抛砖引玉吧。
  1. <%
  2. dim conn,rs,sql
  3. dim m,n
  4. set conn=server.createobject("adodb.connection")
  5. conn.open "driver={microsoft ACCESS driver (*.mdb)};dbq="&server.mappath("user.mdb")
  6. %>
  7.   <h1>   </h1>
  8.   <h2>   ——————— <strong>加班弹休登记表  </strong>——————— </h2>
  9.   
  10. <table width="549" border="1" cellpadding="5" cellspacing="1">
  11.   <tr>
  12.     <td width="129"><div align="center">日 期</div></td>
  13.     <td width="127"><div align="center">姓 名</div></td>
  14.     <td width="129"><div align="center">班 次</div></td>
  15.     <td width="136"><div align="center">下班时间</div></td>
  16.   </tr>
  17.   <% for m=1 to 10 %>
  18.   <tr>
  19.     <td width="129"><div align="center">
  20.         <label for="dat"></label>
  21.         <select name="dat_<%=m%>" id="dat_<%=m%>"  onBlur="checkName();" >
  22.           <option>请选择日期</option>
  23.           <option>18-6-29</option>
  24.           <option>18-6-30</option>
  25.           <option>18-7-1</option>
  26.           <option>18-7-2</option>
  27.           <option>18-7-3</option>
  28.           <option>18-7-4</option>
  29.           <option>18-7-5</option>
  30.         </select>
  31.     </div></td>
  32.     <td width="127"><div align="center">



  33.   <select name="nam_<%=m%>" id="nam_<%=m%>">
  34.   <option value="">请选择人员</option>      
  35. <%
  36. sql="select * from ry"
  37. Set rs=conn.execute(sql)
  38. while not rs.eof
  39. %>
  40. <option value="<%=rs("nam")%>"><%=rs("nam")%></option>
  41. <%
  42. rs.movenext
  43. wend
  44. rs.close
  45. %>
  46. </select>
  47.       
  48.          
  49.          
  50.     </div></td>
  51.     <td><div align="center">
  52.         <label for="bc"></label>
  53.         <select name="bc_<%=m%>" id="bc_<%=m%>">
  54.           <option>请选择班次</option>
  55.           <option value="8-12">半天</option>
  56.           <option value="8-14">喂奶8-2</option>
  57.           <option value="8-16">8-4</option>
  58.           <option value="8-18">8-6</option>
  59.           <option value="10-18">10-6</option>
  60.           <option value="12-20">12-8</option>
  61.           <option value="15-23">3-11</option>
  62.         </select>
  63.     </div></td>
  64.     <td width="136">
  65.           <div align="center">
  66.          
  67.         <input name="tim_<%=m%>" type="text" id="tim_<%=m%>" size="20" maxlength="5" onBlur="Chk_Update(<%=m%>);"/>
  68.     </div></td>
  69.   </tr>
  70.   <% next %>
  71. </table>
复制代码
 楼主| 金洋 发表于 2018-7-4 10:23:44 | 显示全部楼层
回复  金洋



创建input对象,循环就行


模拟ajax,你可以再完善下
后台处理可以更细化下:
xuanxiao 发表于 2018-7-4 09:36



   谢谢老师!辛苦您啦~
何俊波 发表于 2019-1-5 16:40:59 | 显示全部楼层
这个应该很好解决的。
现在解决了吗?
不行吱一声,我帮你写一段。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号