![]() |
|
作者信息 | 主题: ASP和SQL语句学习笔记7487 | ||||
|
发表时间:
2009-4-9 22:25:46
特别提示:本帖子在 2011-7-18 13:38:58 由用户
白瑞德
编辑过
【7.18】 浪漫烛光 www.langmanzg.com 今天在ASP程序中做了一个记录批量删除的功能,最后在用Delete * from ... in ... 语句批量删除时,记录集rs.open sql,db,1,1 如果后面的参数这样写的话,会提示“数据库中的记录无法删除”,而吧两个参数都改为3就正常了,但问题是这个是以前做过的程序基础上改进的,为什么在原来的代码中就一切正常呢,不得而知。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【2.1】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 对于判断日期差值的问题DATEDIFF是个很重要的函数,要注意格式,比如说DATEDIFF("h",起始日期,终止日期),表示的就是起始日期和终止日期之间相差的时间,这点是毋宁质疑的。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 我们通常会将“终止时间”设定为当前时间,要注意,如果终止时间我们用的是Date()函数的话,如果前面的时间间隔参数我们用的又是"m"或者是"s",那么它的差值永远都是0.所以,在这种情况下,还是使用now()函数好一些。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【12.1】 浪漫烛光 www.langmanzg.com 1,今天还是遭遇了这个“8002009错误”所不同的是,这一次都没有显示错误原因(可能是空间不够),测试是发现是因为记录集的执行,rs的游R6hQ:\uKJ+ L#FC标已经到了记录集末尾,显然rs.eof为“真”了,重新rs.movefirst一下就成,但是……这种办法太原始了吧。学习中 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 2,通常在SQL语句中我们使用SELECT比较多,但是这次使用UPDATE批量更改数据记录的时候,却发现,总是出现错误提示“SQL语句结束位置缺少分号”,原来,是UPDATE语句不能跟ORDER BY子句。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【10.23】 浪漫烛光 www.langmanzg.com “8002009错误”主要是数据库记录集对象的EOF所造成的,因此检查这个方面基本可以解决问题。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【10.14】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 1,关于form表单提交页面的问题,发现了一个很有意思的现象: 浪漫烛光 www.langmanzg.com 如果我将action的值设置为""的话,那么无法提交,但是如果将其值设置为当前页面时,会出现不同的问题。 浪漫烛光 www.langmanzg.com 但是今天测试的时候却没有出现类似的问题,看来仍需考虑。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 2,如果数据操作提示“没有动作被执行”,那么有可能是表单元素中填充的值超出了数据库中字段类型的容许范围,比如设置一个varchar为10字节,那么超过10字节的提交存储显然就会出现上述错误提示。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【10.6】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 1,用户权限的瓶颈终于出现了,今天在为用*jMF7d]K )1户添加论坛所有权限的时候,发现错误提示,c_member_right,原来权限只能容纳50个字节,而每个权限值要占4个字节,这样只能添加12个权限。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 2,另外在相对引用一个URL的时候,如果是同级目录下面的子目录,那么设置相对路径时,子文件夹前面无需加\. 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【9.25】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com ASP中的错误提示 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 比如说今天我弄的时候,在那个新增编辑公用的页面上,根据地址返回的参数进行查询的时候,因为对于返回参数判断错误,no参数无论添加还是编辑都有,对于“回复帖子”来说,所以就应该使用restoreno变量,而在出错的时候显示“类型不匹配”Type Mismatch”不得不说这是一个非常难以理解的错误代号。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 但是在另外一种情况之下,比如另外一个实例,那个所谓的rs根本就没有定义,但此时却提示“对象关闭时,不允许操作”。这个问题是很怪的。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com “至少有一个参数没有被指定值”,显然表明你的SQL语句中对于某个字段的赋值出现了错误。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【9.21】 浪漫烛光 www.langmanzg.com 要注意逻辑关系! 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 比如说今天在讲“新增”与“修改”两个功能合并到一个页面的时候出现了问题,逻辑上是这样判断的,如果返回%=1y N/!Tjlht的帖子编号不为空(通过QueryString来传递参数),那么就执行另外一条SQL语句,但是在HTML页面中都对应的是一个文本框,也就是说,如果那个值不为零,那么就从编号为对应的记录中取出相应的字段值并写入文本框,可是今天在执行的时候却发生了Type Mismatch的错误,提示为rs(我的一个记录集对象),那么肯定是新增的功能出错了。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 其实在网页编程中,能精简的页面还是要尽量精简的,但是也不能太过了,当然今天我做的这个应该算是在合理的范畴之内的。关键性的逻辑错误在与IF THEN 判断嵌套的问题,在“新增”分支中,打开记录集的操作可以放在任何嵌套的内部,但是在“修改”分支中却出现了错误,因为这个返回的编号值,既有可能是FORM表单自执行提交的时候需要的,更有可能是在这个页面首次生成的时候就要用到的,而此时,将打开记录集的操作设置在“如果提交按钮的返回值为真”的条件嵌套里面,显然会产生如上所述的错误。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 很简单,很强大,但是又很奇怪的一个东西。从明天开始总结吧。 浪漫烛光 www.langmanzg.com 首先是DISTINCT关键字。 ![]() 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com "select * from t_message a "&_ 浪漫烛光 www.langmanzg.com "inner join "&_ 浪漫烛光 www.langmanzg.com "(select distinct(t_message.c_message_restoreno),t_message.c_message_delno "&_ 浪漫烛光 www.langmanzg.com "from t_message inner join t_member on t_member.c_member_no=t_message.c_member_no "&_ 浪漫烛光 www.langmanzg.com "where (t_message.c_message_delno is null or (t_message.c_message_delno is not null and t_message.c_message_delno=0)) "&_ 浪漫烛光 www.langmanzg.com "and t_member."&Search_Type1&" Like '%"&Search_keyword&"%' and t_message.c_message_restoreno>0) b1 "&_ 浪漫烛光 www.langmanzg.com "on a.c_message_no=b1.c_message_restoreno" 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 内联嵌套以前一直没用过,只能用两个SQL语句,还要调用两个记录集,现在好啦。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 注意临时表变量a和b1不能在本SQL语句以外引用,就像在SQL语句中定义的临时变量一样? 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 先运行本条SQL语句再显示distinct功能?也就是说,这个distinct适用的范围是同一个restoreno的帖子中,多条回复用户ID相同的记录。这个记录的提取必须要满足where后面的条件…… 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【5.4】一个ASP变量的问题。 浪漫烛光 www.langmanzg.com 似乎cookie返回的值在ASP中都默认为“字符串”类型的?这样就必须使用cint函数对返回值进行转换。 浪漫烛光 www.langmanzg.com 还要注意一个常犯的错误,比如说在一个if then语句中,如果在条件中出现提示“变量类型错误”,那么往往是因为你试图用一个“Null”值进行比较或者赋值的缘故。比如说命名在这个条件下根本没有rs2("c_member_type")这个变量,那么显然就会产生错误。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【6.8】用了rsv.movefirst方法后就无法分页? 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com Dim rs,sql 浪漫烛光 www.langmanzg.com Set rs=server.CreateObject("adodb.recordset") 浪漫烛光 www.langmanzg.com sql="select * from t_member" 浪漫烛光 www.langmanzg.com rs.open sql,db,3,3 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com Dim rs1,sql1 浪漫烛光 www.langmanzg.com Set rs1=server.CreateObject("adodb.recordset") 浪漫烛光 www.langmanzg.com sql1="select * from t_message" 浪漫烛光 www.langmanzg.com rs1.open sql1,db,3,3 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 'do while not rs.eof 浪漫烛光 www.langmanzg.com 'if rs("c_member_postnum") =0 or isnull(rs("c_member_postnum"))=true then 浪漫烛光 www.langmanzg.com 'rs("c_member_postnum")=0 浪漫烛光 www.langmanzg.com 'do while not rs1.eof 浪漫烛光 www.langmanzg.com 'if rs("c_member_no")=rs1("c_member_no") then 浪漫烛光 www.langmanzg.com 'response.Write rs("c_member_accounts") 浪漫烛光 www.langmanzg.com 'rs("c_member_postnum")=rs("c_member_postnum")+1 浪漫烛光 www.langmanzg.com 'end if 浪漫烛光 www.langmanzg.com 'rs1.movenext 浪漫烛光 www.langmanzg.com 'loop 浪漫烛光 www.langmanzg.com 'rs1.movefirst 浪漫烛光 www.langmanzg.com 'end if 浪漫烛光 www.langmanzg.com 'rs.movenext 浪漫烛光 www.langmanzg.com 'loop 浪漫烛光 www.langmanzg.com 'rs.movefirst 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 。。。。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com if not rs.bof or not rs.eof then 浪漫烛光 www.langmanzg.com If Request("PageNo_Url")="" then 浪漫烛光 www.langmanzg.com PageNo=1 浪漫烛光 www.langmanzg.com else 浪漫烛光 www.langmanzg.com PageNo=Cint(Request("PageNo_Url")) 浪漫烛光 www.langmanzg.com end if 浪漫烛光 www.langmanzg.com 'response.Write PageNo 浪漫烛光 www.langmanzg.com rs.pagesize=50 浪漫烛光 www.langmanzg.com I=rs.pagesize '设置循环变量 浪漫烛光 www.langmanzg.com if PageNo>rs.pagecount then PageNo=rs.pagecount '注意rs.pagecount的位置 浪漫烛光 www.langmanzg.com rs.absolutepage=PageNo '设置当前页的值 浪漫烛光 www.langmanzg.com j=1 浪漫烛光 www.langmanzg.com %> 浪漫烛光 www.langmanzg.com <% 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com do while not rs.eof and I>0%> 浪漫烛光 www.langmanzg.com 。。。。。。 浪漫烛光 www.langmanzg.com <% 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com rs.movenext 浪漫烛光 www.langmanzg.com I=I-1 浪漫烛光 www.langmanzg.com j=j+1 浪漫烛光 www.langmanzg.com loop 浪漫烛光 www.langmanzg.com %> 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【8.10】将按照用某种符号区分的字符串变量拆分成字符串数组。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 首先写入,用某个特殊符号,比如说"|", 浪漫烛光 www.langmanzg.com 然后用Split拆分并写入一个变量(默认为数组) 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 如: 浪漫烛光 www.langmanzg.com f_marray=split(marray,"|",-1,1) 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com for i=0 to ubound(f_marray)-1 浪漫烛光 www.langmanzg.com ........ 浪漫烛光 www.langmanzg.com next 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【8.16】批量上传做好了,但是发现了一个奇怪的问题,就是每次上传显示的5张图片中,第二张和第三张是一样的,经测试判断是第三张显示出现两次。最终发现,和程序函数有关。原来的fname变量是在函数中使用的,它在函数开始时被赋值,在函数终止时无效。但在主程序中,fname变量显然是在整个页面程序都有效。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 在VB中给一个变量重新赋值,会发生什么结果,比如说一个字符串变量赋值 令: 浪漫烛光 www.langmanzg.com abc="111" 浪漫烛光 www.langmanzg.com abc="222" 浪漫烛光 www.langmanzg.com 那么abc输出的结果有时什么呢? 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 其实明白程序原作者的“苦心”了,哎,真是SB啊。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 全错全错!都是随机数惹得祸。。。。 浪漫烛光 www.langmanzg.com fname = int(fname) + int((100-1+1)*Rnd + 1) 浪漫烛光 www.langmanzg.com 传一张自然没有问题,但是传多张如果在“10”以内取随机数就很可能重复,现在取100内的随机数会好些吧?当然此问题难以从根本上避免,老白痛苦中。。。 ![]() 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【8.28】将板块内帖子加入特定标签中显示错误,要注意将帖子加入标签和退出标签,关键的变量也就是标签ID号c_message_classno的传递方式是不同的,前者通过form中sltClassName下拉列表项传递,而后者则通过网址变量来传递。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 另外,储存模式也有限制,因每个c_message_classno项可能会存储以逗号分隔的多个ID,而默认字段只允许存储50个字节... 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 如果要使用“清空”按钮功能,请记得将隐藏变量c_board_id激.@+)PY`L /uIN活。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【2010.4.16】 浪漫烛光 www.langmanzg.com 今天又碰到了个奇怪的问题,某个asp页面打开后一片空白,但是查询却又找不到明显的错误,费劲周折,结果发现问题出在标签中的VBS代码的问题 浪漫烛光 www.langmanzg.com
|
||||
每当你几乎快被困难击倒,丧失斗志的时候,你就想想背后还有无数等你倒下捅刀子的SB,就充满了力量。
|
作者信息 | 主题: ASP和SQL语句学习笔记19017 | ||||
|
发表时间:
2010-7-1 10:17:15
特别提示:本帖子在 2010-9-17 16:59:22 由用户
白瑞德
编辑过
【9.17】 浪漫烛光 www.langmanzg.com 在Access中插入一条记录的SQL语句是"insert into t_area(c_area_name) values('')" 注意“表名”(t_area)和values与后面的括号是不空格的,而上述两者之间则要空格。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【9.3】 浪漫烛光 www.langmanzg.com 昨天做程序,发现我定义的一个变量类型atc classno,在点击列表下一页时总是提示Type mismatch,然后SQL语句中 request(classno)的值编程了“,”,这点非常奇怪,后来发现,我是在QueryString中将classno写了两遍,相同的变量在QueryString被多次赋值,结果是用","间隔的一个字符串……在本例中,默认classno 的返回值为空,自然返回的就是","了…… 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 注意!QueryString返回的值默认应该是String型,这个可用varType函数来判断,返回值为8表明就是字符串类型,但是如果这个变量在数据库中的变量类型为数值型,那么一般也无需再SQL引用之前用Cint转换,貌似在ASP中它是可以被默认转换的? 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 【7.1】 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 1,今天更改新主页,又碰到了新问题,还是有关Distinct和Top保留字的,这两个可真是一对冤家啊,水火不容,有你没我,但是有没有一种折中方案呢? 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com 2,另外在select子句中,比如说 Select * from abc where a_1 not in (select……)这样的形式中,后面子句中的select如果采用distinct,那么在select后面就只能允许这一个值存在?虽然说这一点并不影响where子句中的判断,但是如果后面需要对这个记录集按照其他字段进行排序,这么做就不行了,如何解决,仍没有头绪。 浪漫烛光 www.langmanzg.com 浪漫烛光 www.langmanzg.com
3,用With...AS...据说可以生成一个临时表,并在接下来的查询(Select)子句中使用,但是用Access数据库好像总有问题,这个需要加强学习…… |
||||
每当你几乎快被困难击倒,丧失斗志的时候,你就想想背后还有无数等你倒下捅刀子的SB,就充满了力量。
|
新用户注册 返回首页 | ||||||||