日期:2014-05-17  浏览次数:20785 次

★★★简单的问题,高高的分!比较判断问题!★★★
核心语句如下:
set   rs=server.createobject( "adodb.recordset ")
sql   =   "select   *   from   KaoQin   where   yue= ' "&month(Request(riqi))& " '   and   nian= ' "&year(Request(riqi))& " '   order   by   id   desc "
rs.open   sql,conn,1,3
if   rs.eof   and   rs.bof   then
          rs.addnew
end   if
          rs( "nian ")=year(Request( "riqi "))
          rs( "yue ")=month(Request( "riqi "))
rs.update
rs.close

我要判断的是,如果提交日期的“年和日”都与数据库已有信息相同,则不添加新的记录,仅仅为修改。
例如:2007年4月,发布过了,那么再提交2007年4月的信息,就是修改数据库,而不是增加数据库。
如果判断数据库中没有年为2007、月为4的记录后,则增加记录。

现在遇到的问题是,无论数据库中有没有相同的数据,程序都添加一条新记录!
也就是如下情况:

id         nian           yue           mingcheng
1           2007             4                 小明
2           2007             4                 小红
3           2007             5                 小刚
4           2007             5                 小白

标注:Request( "riqi ")的格式为2007-04-03,并不是普通的日期格式。普通的日期格式为:2007-4-3。但是通过函数year()和month()输出的结果是一样的。

------解决方案--------------------
if rs.eof and rs.bof then
rs.addnew
end if

改成
rs.addnew

你可以通過formatdatetime(Request( "riqi "),2)得到標準的格式
------解决方案--------------------
SQL语句写错了,当然不行了
改为:
sql = "select * from KaoQin where year(nian)= ' "&year(Request(riqi))& " ' and month(yue)= ' "&month(Request(riqi))& " ' order by id desc
------解决方案--------------------
把sql输出,看看是什么。
另外题外话:你如果只是实现添加,修改功能的话,灭有必要order by