标题:求助 动态SQL问题 哪出错了
只看楼主
shadowghost
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-7-2
 问题点数:0 回复次数:5 
求助 动态SQL问题 哪出错了

请教高手,哪出错了 想要实现 如果只选择 岗位 ,则查询 岗位=“岗位” 的记录 如果只选择 班次 ,则查询 班次=“班次” 的记录 如果选择 岗位 和 班次 则查询 岗位=“岗位” 班次=“班次”的记录 如果选择 岗位 班次 姓名 则查询 岗位=“岗位” 班次=“班次” 姓名=“姓名”的记录 依次类推 sql 如下: <% dim sname , sbdate , sedate , station , sclass , sbreed dim classs , toutput ,sql '------------------------------------------- classs="" toutput=0 '-------------------------------------------- sname=request("s_name") sbdate=request("s_b_date") sedate=request("s_e_date") station=request("s_station") sclass=request("s_class") sbreed=request("s_breed")

'-------------------------------------------------动态 SQL 生成 ----------------------------------------- sql="select * from output_shu where 1=1 "

if station<>"" then '-------------------加入岗位------------------------------------- sql=sql & " and 岗位='" & station & "'" end if

if sclass<>"" then '------------------加入班次--------------------------------------- sql=sql & " and 班次='" & sclass & "'" end if

if sname<>"" then '-------------------加入姓名------------------------------------ sql= sql & " and 姓名='" & sname & "'" end if

if sbreed<>"" then '-------------------加入品种-------------------------------------- sql=sql & " and 品种='" & sbreed & "'" end if

if sbdate<>"" then '------------------加入起始时间---------------------------------- sql=sql & " and 时间>=#" & sbdate & "#" end if

if sedate<>"" then '------------------加入结束时间---------------------------------- sql=slq & " and 时间<=#" & sedate & "# order by 品种" end if

rs.open sql,conn,1,3 '-------------------------------------------- if not rs.eof then %>

提示错误: 错误类型: Microsoft JET Database Engine (0x80040E14) 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。 /output/mf_sm/search_sm/search3.asp, 第 60 行

搜索更多相关主题的帖子: SQL 岗位 动态 姓名 toutput 
2005-07-22 15:12
loveguoyuan
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2005-7-13
得分:0 
你没有和数据库连接吧?先建立连接

2005-07-22 20:02
loveguoyuan
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2005-7-13
得分:0 
Dim conn
Dim StrDSN
Dim Rs
StrDSN="driver={SQLserver};server="&amp;StrServer&amp;";uid="&amp;StrUid&amp;";pwd="&amp;StrPwd&amp;";database="&amp;StrDbnName
////////*****************建立连接********************////
set Conn=Server.CreateObject("ADODB.Connection")
set Rs=Server.CreateObject("ADODB.RecordSet")
Conn.Open StrDSN

2005-07-22 20:11
shadowghost
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-7-2
得分:0 

用的是ACCESS 已建连接了: <!--#include file="conn3.asp" --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>梳棉车间个人产量统计</title> <style type="text/css"> <!-- body { background-color: #6699cc; } --> </style></head>

<body>

<div align="center">

<% dim sname , sbdate , sedate , station , sclass , sbreed dim classs , toutput ,sql ............ conn3.asp: <% serstr="Provider=Microsoft.Jet.OLEDB.4.0;data source="&server.mappath("../../data/data.mdb") set conn=server.CreateObject("ADODB.CONNECTION") conn.open serstr set rs=server.CreateObject("ADODB.RECORDSET")

'日期格式化成YYYY-MM-DD Function CFdate(udate) '去除空格,如果长度大于8,只取前8位数 udate=trim(udate) IF Len(udate)>8 Then udate=Left(udate,8) End IF '如果字符创中有非数字字符,返回空 For i=1 to Len(udate) IF Asc(Mid(udate,i,1))<48 Or Asc(Mid(udate,i,1))>57 Then CFdate="" Exit For Else '对符合条件的数字进行格式化 Select Case Len(udate) Case 4 CFdate=udate&"-01-01" Case 5 CFdate=Left(udate,4)&"-0"&Right(udate,1)&"-01" Case 6 IF Right(udate,2)>12 Then CFdate=Left(udate,4)&"-12-01" Else CFdate=Left(udate,4)&"-"&Right(udate,2)&"-01" End IF Case 7 IF Mid(udate,5,2)>12 Then CFdate=Left(udate,4)&"-12-0"&Right(udate,1) Else CFdate=Left(udate,4)&"-"&Right(udate,2)&"-0"&Right(udate,1) End IF Case 8 IF Mid(udate,5,2)>12 And Right(udate,2)>31 Then CFdate=Left(udate,4)&"-12-01" ElseIF Mid(udate,5,2)>12 And Right(udate,2)<31 Then CFdate=Left(udate,4)&"-12-"&Right(udate,2) ElseIF Mid(udate,5,2)<12 And Right(udate,2)>31 Then CFdate=Left(udate,4)&"-"&Mid(udate,5,2)&"-01" ElseIF Mid(udate,5,2)=02 And Right(udate,2)>28 Then CFdate=Left(udate,4)&"-"&Mid(udate,5,2)&"-28" Else CFdate=Left(udate,4)&"-"&Mid(udate,5,2)&"-"&Right(udate,2) End IF Case Else CFdate="" End Select End IF Next End Function %>


俺是新手,刚开始学ASP,请大家多多指教…*^_^*
2005-07-23 07:53
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
得分:0 
那块sql语句写错了 估计写成 sql=" and sdsad=sdffds"

你的语句给的不全 而且不知道60行在哪
2005-07-23 09:01
shadowghost
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-7-2
得分:0 

会不会是 if sbdate<>"" then '------------------加入起始时间---------------------------------- sql=sql & " and 时间>=#" & sbdate & "#" end if

if sedate<>"" then '------------------加入结束时间---------------------------------- sql=slq & " and 时间<=#" & sedate & "# order by 品种" end if 出的错 因为改用 Between 后,显示正常 是不是得把日期换为数值


俺是新手,刚开始学ASP,请大家多多指教…*^_^*
2005-07-24 07:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-23418-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024248 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved