急等(100分相送):关于ASP向ACCESS表里写入一个时间段记录问题

LinuxR 2007-01-31 06:56:06
我利用一个循环向表中写入数据:一个时间段的记录(date1--date2)居然全部是date1的,且是死循环,求救各位!
<%
if Request.ServerVariables("REQUEST_METHOD")="GET" then
dim user,date1,date2,bz,mysql1,mysql2,date3,date4,dWeekday
user=Request.QueryString("user")
date1=Request.QueryString("kssj")'取一个时间控件的值,格式为yyyy-mm-dd
date3=date1'初始化date3,结果写入的全是date3的记录!!郁闷
date2=Request.QueryString("jzsj")
bz=Request.QueryString("marke")

strConnString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("reguser.mdb")
set myconn=Server.CreateObject("ADODB.Connection")
myconn.open strConnString
mysql1="select * from user where user_name='"&user&"'"
mysql2="select * from reguser where user_name='"&user&"'and user_lastlogin >= #"&Request.QueryString("kssj")&"# and user_lastlogin <= #"&Request.QueryString("jzsj")&"#" '数据库里如果是用户登录的时间到秒的,这个判断有用吗?

mysql3="insert into reguser (user_name,user_lastlogin,user_marke) values ('"&user&"','"&date3&"','"&bz&"') "

set rs1=Server.CreateObject("ADODB.RecordSet")
rs1.open mysql1,myconn,3,3
set rs2=Server.CreateObject("ADODB.RecordSet")
rs2.open mysql2,myconn,3,3
if rs1.recordcount<=0 then
%>
<br />
<%
response.Write("用户名不能为空或无此用户名,请重新输入用户名!")
else if date1>date2 then
%>
<br />
<%
response.Write("截止时间不能小于开始时间!") '对于用户自动登录的也就是时间到秒的 这个if好像不起作用,不知道为什么!
else if rs2.recordcount>0 then
%>
<br />
<%
response.Write("用户在此时间段已有登录,请重新选择时间段!")
else

do while date3<=date2
dWeekday =Weekday(date3)
if Weekday(date3)<>1and Weekday(date3)<>7then
set rs3=myconn.Execute(mysql3)
end if
date3=DateAdd("d", 1, date1)
loop '就是这个循环啊,费了我一上午,没整出来!
%>
<br />
<%
Response.Write("保存成功!")

end if
end if
end if
myconn.Close
set rs1=nothing
set rs2=nothing
set rs3=nothing
end if
%>
...全文
367 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
LinuxR 2007-02-01
  • 打赏
  • 举报
回复
另外问一下如何实现页面上多个提交或按钮事件??!!!刚开始接触ASP,不懂太多
LinuxR 2007-02-01
  • 打赏
  • 举报
回复
问题解决了,谢谢大家!散分
LinuxR 2007-02-01
  • 打赏
  • 举报
回复
do while cdate(date3)<=cdate(date2)
dWeekday =Weekday(cdate(date3))
if Weekday(date3)<>1and Weekday(date3)<>7then
set rs3=myconn.Execute(mysql3)
end if
date3=DateAdd("d", 1, cdate(date3))
Response.Write(date3)'我加了这句,页面显示的日期是递增的,为什么这个date3传不到sql3去呢,我来把sql3写到里面看看,是不是初始化就不能在循环外面?怎么写才是合理的呢?
loop
lcw321321 2007-01-31
  • 打赏
  • 举报
回复
mysql3变量 都在外面,估计是不行了,你就直接把mysql内容写进来不就行了吗?
LinuxR 2007-01-31
  • 打赏
  • 举报
回复
就差一步了 帮帮忙啊
LinuxR 2007-01-31
  • 打赏
  • 举报
回复
死循环的问题解决了 只是写入数据库的时间为什么一直是初始化的值 按理说利用date3=DateAdd("d", 1, cdate(date3))
执行SQL的时候应该日期递增啊
LinuxR 2007-01-31
  • 打赏
  • 举报
回复
这是写的第一ASP程序 细节东西懂的太少了
我依大家说的把循环改写了
do while cdate(date3)<=cdate(date2)
dWeekday =Weekday(cdate(date3))
if Weekday(date3)<>1and Weekday(date3)<>7then
set rs3=myconn.Execute(mysql3)
end if
date3=DateAdd("d", 1, cdate(date3))
loop
我选择了2007-1-29 到2007-1-31 保存后 数据库里有三条数据这是对了 但是这三条数据时间都是2007-1-29 没有递增啊!!!
Hello World, 2007-01-31
  • 打赏
  • 举报
回复
date3=DateAdd("d", 1, date1)'------------->date3=DateAdd("d", 1, date3)这里把date1改成date3,因为你的date1一直没变,导致date3每次加1都不变了
xuStanly 2007-01-31
  • 打赏
  • 举报
回复
是个死循环 就是那个date3的变量好像没有因为循环递增啊 取的一直是第一次的值
--------
可能是因为date1不是date类型的变量
dateadd函数要求最后一个参数必须是date类型的
试试
date3=DateAdd("d", 1, cdate(date1))

另外,如果是这个原因,那应该来说到了这里会报错,
楼主看看是不是前面的代码中有
on error resume next
的语句把错误屏蔽了。
Hello World, 2007-01-31
  • 打赏
  • 举报
回复
我利用一个循环向表中写入数据:一个时间段的记录(date1--date2)居然全部是date1的,且是死循环,求救各位!
<%
if Request.ServerVariables("REQUEST_METHOD")="GET" then
dim user,date1,date2,bz,mysql1,mysql2,date3,date4,dWeekday
user=Request.QueryString("user")
date1=Request.QueryString("kssj")'取一个时间控件的值,格式为yyyy-mm-dd
date3=date1'初始化date3,结果写入的全是date3的记录!!郁闷
date2=Request.QueryString("jzsj")
bz=Request.QueryString("marke")

strConnString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("reguser.mdb")
set myconn=Server.CreateObject("ADODB.Connection")
myconn.open strConnString
mysql1="select * from user where user_name='"&user&"'"
mysql2="select * from reguser where user_name='"&user&"'and user_lastlogin >= #"&Request.QueryString("kssj")&"# and user_lastlogin <= #"&Request.QueryString("jzsj")&"#" '数据库里如果是用户登录的时间到秒的,这个判断有用吗?

mysql3="insert into reguser (user_name,user_lastlogin,user_marke) values ('"&user&"','"&date3&"','"&bz&"') "

set rs1=Server.CreateObject("ADODB.RecordSet")
rs1.open mysql1,myconn,3,3
set rs2=Server.CreateObject("ADODB.RecordSet")
rs2.open mysql2,myconn,3,3
if rs1.recordcount<=0 then
%>
<br />
<%
response.Write("用户名不能为空或无此用户名,请重新输入用户名!")
else if date1>date2 then
%>
<br />
<%
response.Write("截止时间不能小于开始时间!") '对于用户自动登录的也就是时间到秒的 这个if好像不起作用,不知道为什么!
else if rs2.recordcount>0 then
%>
<br />
<%
response.Write("用户在此时间段已有登录,请重新选择时间段!")
else

do while date3<=date2
dWeekday =Weekday(date3)
if Weekday(date3)<>1 and Weekday(date3)<>7 then
set rs3=myconn.Execute(mysql3)
end if
date3=DateAdd("d", 1, date1)'------------->date3=DateAdd("d", 1, date3)这里把date1改成date3,因为你的date1一直没变,导致date3每次加1都不变了
loop '就是这个循环啊,费了我一上午,没整出来!
%>
<br />
<%
Response.Write("保存成功!")

end if
end if
end if
myconn.Close
set rs1=nothing
set rs2=nothing
set rs3=nothing
end if
%>
LinuxR 2007-01-31
  • 打赏
  • 举报
回复
有没有人帮帮忙啊
LinuxR 2007-01-31
  • 打赏
  • 举报
回复
我把循环注释了 date1,date2,date3 都是正确的值 为什么上面的循环date3一直都是date1呢
难道是初始化有错,急啊
LinuxR 2007-01-31
  • 打赏
  • 举报
回复
是个死循环 就是那个date3的变量好像没有因为循环递增啊 取的一直是第一次的值
xuStanly 2007-01-31
  • 打赏
  • 举报
回复
else
在这里把date3,date2,date1都response.write出来看看是不是想要的值
do while date3<=date2
dWeekday =Weekday(date3)
if Weekday(date3)<>1and Weekday(date3)<>7then
set rs3=myconn.Execute(mysql3)
end if
date3=DateAdd("d", 1, date1)

另外date1,date2,date3最好Cdate()转换一下。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧