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

如何累加?????

xiongjl9555 发布于 2008-07-05 23:46, 1993 次点击
有10个同学,其中有三个同学是同一天生日,现在要写一段语句通过select 语句和循环语句将三名同学的姓名读出来且赋值给name,即name= a(0)+a(1)+a(2),再以response.write name 输出,不知用数组如何写??拜托各位了

[[it] 本帖最后由 xiongjl9555 于 2008-7-5 23:47 编辑 [/it]]
18 回复
#2
yms1232008-07-06 00:00
?为什么要累加?
用select循环直接用rs输出呢?
比如
Access数据库
Set rs=con.Execute("select name from [user] where DateDiff('d',birthday,'"&Year()&"-"&Month()&"-"&Day(Now)&")=0")
Do Until rs.EOF
   Response.Write "今天生日的用户"&rs("name")
   rs.MoveNext
Loop
#3
xiongjl95552008-07-06 00:35
回复 上面 yms123 的帖子
感谢帮忙,我还有点没弄明白
DateDiff('d',birthday,'"&Year()&"-"&Month()&"-"&Day(Now)&"')=0"
这句好像有点问题,生日相同的只有月和日,所以必须取出birthday中的月、日与今天系统的月、日相减为0才对吧,不知说的是否对,再次谢谢回帖
#4
yms1232008-07-07 10:08
Set rs=con.Execute("select name from [user] where DateDiff('d',birthday,'"&Year()&"-"&Month()&"-"&Day(Now)&")=0 And DateDiff('m',birthday,'"&Year()&"-"&Month()&"-"&Day(Now)&")=0 ")
加And连接即可
#5
xiongjl95552008-07-07 10:40
谢谢版主
再次表示感谢,我才学习不久,所以很多都不熟悉,希望以后多多指教。
但是按照这条语句进行查询,总是出现错误,说连接数据库时间超长,不知何故,望能解答。

[[it] 本帖最后由 xiongjl9555 于 2008-7-7 12:48 编辑 [/it]]
#6
孤独冷雨2008-07-07 16:54
Set rs=con.Execute("select name from [user] where DateDiff('d',birthday,'"&Year(now())&"-"&Month(now())&"-"&Day(Now())&")=0 And DateDiff('m',birthday,'"&Year(now*()&"-"&Month(now())&"-"&Day(now)&")=0 ")

Do while not rs.EOF
   Response.Write "今天生日的用户"&rs("name")
   rs.MoveNext
Loop
#7
xiongjl95552008-07-07 17:34
回复 6# 孤独冷雨 的帖子
谢谢,谢谢,我在一次感到了大家积极帮助的火热的心,只用一句话总结,世上还是好人多呀,再次表示感谢,等我测试完一定再回复。
#8
yms1232008-07-07 20:56
楼主的代码怎么写的?
#9
xiongjl95552008-07-07 22:15
原语句及出现的错误提示
语句如下:(数据库连接文件已经在上面了)
<%
set rs=server.createobject("adodb.recordset")
sql="select * from member where DateDiff('d',birthday,'"&Year(now())&"-"&Month(now())&"-"&Day(Now())&")=0 And DateDiff('m',birthday,'"&Year(now*()&"-"&Month(now())&"-"&Day(now)&")=0 "
rs.Open sql,conn,1,1
Do while not rs.EOF
   Response.Write "今天生日的用户"&rs("membername")
   rs.MoveNext
Loop
%>

错误提示:
错误类型:
Microsoft VBScript 编译器错误 (0x800A03EA)
语法错误
/0315/admin/case_tj/dealcount.asp, line 960, column 145
sql="select * from member where DateDiff('d',birthday,'"&Year(now())&"-"&Month(now())&"-"&Day(Now())&")=0 And DateDiff('m',birthday,'"&Year(now*()&"-"&Month(now())&"-"&Day(now)&")=0 "



上面错误提示说明以下这句话是错的.
sql="select * from member where DateDiff('d',birthday,'"&Year(now())&"-"&Month(now())&"-"&Day(Now())&")=0 And DateDiff('m',birthday,'"&Year(now*()&"-"&Month(now())&"-"&Day(now)&")=0 "

[[it] 本帖最后由 xiongjl9555 于 2008-7-7 22:27 编辑 [/it]]
#10
yms1232008-07-07 23:51
sql="select * from member where DateDiff('d',birthday,'"&Year(now())&"-"&Month(now())&"-"&Day(Now())&")=0 And DateDiff('m',birthday,'"&Year(now()&"-"&Month(now())&"-"&Day(now)&")=0 "
多了一个*号
#11
xiongjl95552008-07-08 08:59
回复 yms123 的帖子
你写的这句话在测试时显示是错误的。
#12
yms1232008-07-08 10:30
member
这个表字段是那些都是什么类型的?
#13
xiongjl95552008-07-08 11:43
回复 12# yms123 的帖子
表单member中有membername(文本),birthday(日期型,默认Date()),num(文本)..等字段,谢谢,我有一个想法,即弹出窗口仍然用脚本语言写,在readtc.asp中加入判断,如果有日期相同的就将这些成员的姓名通过累加赋值给一个变量,如果没有满足条件的就关闭弹出窗口,暂时只能这样将就一下,如果能在该窗口不弹出之前就关闭就好了。
另外上面的select语句我想暂时也不用深究,可以转换一下,将数据库中所有人的生日的年全部换成当前年就可以使用了。
谢谢帮助,如能改进不胜感激。
#14
yms1232008-07-08 11:50
显示的什么错误信息?
#15
xiongjl95552008-07-08 12:34
显示脚本运行时间超长,或者明明数据库中有与当月、当日相同的成员也无法读取出来。具体的讲当Year()中没有加入Now()时就显示脚本运行时间超长,加上后就无法找出设想符合条件的成员,如果讲成员生日按照我的想法处理显示真正起作用的就1条DateDiff语句。

[[it] 本帖最后由 xiongjl9555 于 2008-7-8 12:40 编辑 [/it]]

[[it] 本帖最后由 xiongjl9555 于 2008-7-8 12:45 编辑 [/it]]

[[it] 本帖最后由 xiongjl9555 于 2008-7-8 12:52 编辑 [/it]]
#16
孤独冷雨2008-07-08 15:12
<%
set rs=server.CreateObject("adodb.recordset")
constr="DRIVER={Microsoft Access Driver (*.mdb)};dbq="&server.MapPath("user.mdb")

sql="select * from member where DateDiff('d',birthday,Year(now())&'-'&Month(now())&'-'&Day(Now()))=0 And DateDiff('m',birthday,Year(now())&'-'&Month(now())&'-'&Day(now()))=0 "
rs.Open sql,constr,1,1

Do while not rs.EOF
   Response.Write "今天生日的用户:"&rs("membername")&"<br>"
   rs.MoveNext
Loop
%>

你birthday字段里面的格式是:2008-8-7这样的吧?要是这样的肯定不会错的!不行的话你把我这段代码复制一下,数据库自己改一下名字和路径!
#17
xiongjl95552008-07-08 15:26
回复 孤独冷雨 的帖子
先谢过,我这就去测试,一定回复
还是不对,生日的格式是1971-7-8形式,今天是2008-7-8日,按照上面你写的语句就无法查询出生日为1971-7-8的成员。谢谢

[[it] 本帖最后由 xiongjl9555 于 2008-7-8 15:40 编辑 [/it]]
#18
孤独冷雨2008-07-08 17:02
兄弟你多少也自己动一下脑子啊,你不能老这样没完没了的问啊!这里只能给你一个思路!算了帮忙帮到家吧!!!!下面的应该是你要的了!

<%
set rs=server.CreateObject("adodb.recordset")
constr="DRIVER={Microsoft Access Driver (*.mdb)};dbq="&server.MapPath("user.mdb")

sql="select * from member order by id desc "
rs.Open sql,constr,1,1

ms=cstr(month(now()))
ds=cstr(day(now()))


do while not rs.eof
m=replace(mid(rs("birthday"),6,2),"-","")
d=replace(mid(rs("birthday"),8,2),"-","")
if m=ms and d=ds then
         Response.Write "今天生日的用户:"&rs("membername")&"<br>"
end if
   rs.MoveNext
 loop

%>
#19
xiongjl95552008-07-08 17:10
回复 孤独冷雨 的帖子
谢谢,你这样说我就明白了,其实之前我也是这么写的,但是有兄弟引入了DateDiff,所以我以为直接用selece...where就能搞定,不想最终还是要回到转换、替换、判断上来,谢谢,谢谢,以后还会麻烦你们的
1