Foxtable(狐表)用户栏目专家坐堂 → 语法错误


  共有3994人关注过本帖树形打印复制链接

主题:语法错误

帅哥哟,离线,有人找我吗?
nxqtxwz
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
语法错误  发帖心情 Post By:2020/4/8 17:41:00 [只看该作者]

很不好意思总是麻烦老师,下面的代码运行基本正常,只是只要输入条件(不论是一个条件还是多个条件)筛选时服务器上报错:“=”号附近有语法错误,点确定后手机上能显示结果。什么条件都不输入直接按确定按钮正常。

 


[此贴子已经被作者于2020/4/21 21:22:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/9 8:37:00 [只看该作者]

yjbb = e.PostValues(flt)

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/9 10:16:00 [只看该作者]

改为
yjbb = e.PostValues(flt)
问题依然存在。点确定按钮后出现“=”附近有语法错误。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/9 10:17:00 [只看该作者]

自己看看完整的sql:http://www.foxtable.com/webhelp/scr/1485.htm

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/9 11:42:00 [只看该作者]

Dim cmd As New SQLCommand
cmd.C '记得设置数据源名称
Dim yjbb As String          '定义一个变量,为excel报表传递查询条件
cmd.CommandText = "Select Count(*) Fro  m {控缀保学}"
'msgbox(3)
If flt > "" Then
    msgbox(flt)                     输入的筛选条件没问题,语法正确,很规范。
    cmd.CommandText = cmd.CommandText & "where" & flt
    msgbox(1)                       此处正常
    yjbb = e.PostValues(flt)
    wb.AppendCookie("yjbb",flt)                '将flt的值赋给yjbb变量
    msgbox("Select * fro  m {控缀保学} where " & e.Cookies("yjbb"))                   显示的值没有变化,一直都是一样的。
msgbox(yjbb)                                                                                                  显示为空

End If

msgbox(2)                            正常
Dim Count As Integer = cmd.ExecuteScalar() '获取总的行数                 这一行出错,=号附近有语法错误。cmd.ExecuteScalar() 不知如何用,帮助中也找不以用法。
msgbox(3)                正常
cmd.CommandText = "Select * Fro  m (Select Row_Number() Over(Order by 出生日期) As [NO.],[_Identify],学生姓名,年级,班级,年龄,家长姓名,联系电话,地址 Fro  m 控缀保学"
msgbox(4)            正常,后面都正常。
If flt > "" Then
    cmd.CommandText = cmd.CommandText & " where " & flt
    msgbox(5)
End If
'cmd.CommandText = "select top 10 * fro   m {控缀保学} where 出生日期 > " & (page * pageRows ) '内部表测试用

cmd.CommandText = cmd.CommandText & ") As a "
msgbox(6)
cmd.CommandText = cmd.CommandText & "  Where [NO.]>= " & StartRow & " And [NO.] <= " & EndRow
msgbox(7)
With wb.AddActionSheet("","menu") '设计菜单


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/9 12:00:00 [只看该作者]

Dim e As RequestEventArgs = args(0)
Dim wb As New WeUI
Dim flt As String = e.Cookies("yjbb")
If flt = "" Then
    If e.PostValues.ContainsKey("product") Then
        flt &= "年级 = '" & e.PostValues("product") & "'"
    End If
    ……原来生成条件的其他代码
    wb.AppendCookie("yjbb",flt)
End If

Dim page As Integer = 0 '默认page为0,显示第一页
Dim pageRows As Integer = 10 '每页10行
If e.GetValues.ContainsKey("page") Then  '如果地址中有page参数
    Integer.TryParse(e.GetValues("page"), page) '提取page参数
End If
Dim StartRow As Integer = page * pageRows + 1 '此页第一行
Dim EndRow As Integer = (page + 1) * pageRows '此页最后一行
''提取此页数据
Dim cmd As New SQLCommand
cmd.C '记得设置数据源名称
Dim yjbb As String          '定义一个变量,为excel报表传递查询条件
cmd.CommandText = "Select Count(*) From {控缀保学}"
''msgbox(3)
If flt > "" Then
    cmd.CommandText = cmd.CommandText & "where" & flt
End If
Dim Count As Integer = cmd.ExecuteScalar() '获取总的行数

……

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/9 13:16:00 [只看该作者]

还是老问题:

 

Dim e As RequestEventArgs = args(0)
Dim wb As New WeUI
Dim flt As String    ' = e.Cookies("yjbb")
If flt = "" Then
    If e.PostValues.ContainsKey("product") Then
        flt &= "年级 = '" & e.PostValues("product") & "'"
    End If
    If e.PostValues.ContainsKey("bj") Then
        If flt > "" Then
            flt = flt & " and  "
        End If
        flt &= "班级 = '" & e.PostValues("bj") & "'"
    End If
   
    If e.PostValues.ContainsKey("jdc") Then
        If flt > "" Then
            flt = flt & "and "
        End If
        flt &= "街道村 = '" & e.PostValues("jdc") & "'"
    End If
   
   
    If e.PostValues.ContainsKey("dqzt") Then
        If flt > "" Then
            flt = flt & " and "
        End If
        flt &= "当前状态 = '" & e.PostValues("dqzt") & "'"
    End If
   
    If e.PostValues.ContainsKey("cxyy") Then
        If flt > "" Then
            flt = flt & "and  "
        End If
        flt &= "辍学原因 = '"& e.PostValues("cxyy") & "'"
    End If
   
   
    If e.PostValues.ContainsKey("ksnl") Then
        If flt > "" Then
            flt = flt & "and "
        End If
        flt &= flt & "年龄 > '" & e.PostValues("ksnl") & "'"
    End If
   
   
    If e.PostValues.ContainsKey("jsnl") Then
        If flt > "" Then
            flt = flt & "and "
        End If
        flt &= flt & "年龄 < '" & e.PostValues("jsnl") & "'"
    End If
    msgbox(1)
    msgbox(flt)                  正确
   
    wb.AppendCookie("yjbb",flt)
End If
msgbox("Select * fro    m {控缀保学} where " & e.Cookies("yjbb"))      正确


Dim page As Integer = 0 '默认page为0,显示第一页
Dim pageRows As Integer = 10 '每页10行
If e.GetValues.ContainsKey("page") Then  '如果地址中有page参数
    Integer.TryParse(e.GetValues("page"), page) '提取page参数
End If
msgbox(2)
msgbox(flt)             弹出

Dim StartRow As Integer = page * pageRows + 1 '此页第一行
Dim EndRow As Integer = (page + 1) * pageRows '此页最后一行
msgbox(3)   '提取此页数据             弹出
Dim cmd As New SQLCommand
cmd.C        '记得设置数据源名称
Dim yjbb As String          '定义一个变量,为excel报表传递查询条件
cmd.CommandText = "Select Count(*) Fr  om {控缀保学}"
If flt > "" Then
    msgbox(4)         弹出

cmd.CommandText = cmd.CommandText & "where" & flt
End If
msgbox(5)              正常弹出
Dim Count As Integer = cmd.ExecuteScalar() '获取总的行数              cmd.ExecuteScalar()  不知怎么用。分页不正确,少于10行正确,多于10行只显示10行,且显示的内容不都是筛选的内容。
msgbox(6)           弹出前报错:“=”附近有语法错误。
cmd.CommandText = "Select * Fro   m (Select Row_Number() Over(Order by 出生日期) As [NO.],[_Identify],学生姓名,年级,班级,年龄,家长姓名,联系电话,地址 Fro  m 控缀保学"
If flt > "" Then
    cmd.CommandText = cmd.CommandText & " where " & flt
End If

cmd.CommandText = cmd.CommandText & ") As a "

cmd.CommandText = cmd.CommandText & "  Where [NO.]>= " & StartRow & " And [NO.] <= " & EndRow

With wb.AddActionSheet("","menu") '设计菜单
    .Add("mnudAdd", "增加记录").Attribute =""
    .Add("mnuEdit", "编辑记录").Attribute =""
    .Add("mnuEdit", "生成Excel报表","kcbxexcel.htm")
    .Add("mnuCancel","取消","",True)
    '.Add("mnuStatistics", "数据统计","tongji.htm")
 ....................


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/9 13:54:00 [只看该作者]

Dim flt As String
If e.Cookies.ContainsKey("yjbb")
  flt  = e.Cookies("yjbb")

End
 If
If flt = "" Then
……

 回到顶部
帅哥哟,离线,有人找我吗?
nxqtxwz
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/4/9 14:21:00 [只看该作者]

以下是引用有点蓝在2020/4/9 13:54:00的发言:
Dim flt As String
If e.Cookies.ContainsKey("yjbb")
  flt  = e.Cookies("yjbb")

End
 If
If flt = "" Then
……

问题还是依然存在,仍然是老地方出错。

上面的代码会造成进不了If flt = "" Then这个条件嵌套内,因为第一次输入条件后,flt肯定不为空。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111381 积分:566969 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/9 14:23:00 [只看该作者]

flt不为空就没有必要重新生成了,直接使用即可。

上传实例测试

 回到顶部
总数 17 1 2 下一页