以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]帮我看看这段代码的语法哪里错了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11031)

--  作者:kensou11111
--  发布时间:2011/7/5 8:54:00
--  [求助]帮我看看这段代码的语法哪里错了

Dim StartDate,EndDate As Date
If e.Form.Controls("起始日期").value IsNot Nothing Then
    StartDate = e.Form.Controls("起始日期").value
Else StartDate = #01/01/2000#
End If
If e.Form.Controls("终止日期").value IsNot Nothing Then
    EndDate = e.Form.Controls("终止日期").value
Else EndDate = #01/01/2100#
End If

If e.Form.Controls("单选订单号").checked = True Then
    If e.Form.Controls("订单号").value IsNot Nothing Then
        Tables("清单列表显示窗口_Table1").Fill("Select * From {清单列表} where [日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "# And [订单号] Like \'" & e.Form.Controls("订单号").value & "%" & "\'","技术文件", False)
    Else
        Tables("清单列表显示窗口_Table1").Fill("Select * From {清单列表} where [日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "#","技术文件", False)
    End If
End If

 

 

 

 运行后出现提示说语法错误,究竟是哪里错了?我找了半天都没找出来


图片点击可在新窗口打开查看此主题相关图片如下:qq1.png
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2011/7/5 9:27:00
--  

打开命令窗口。在你的代码中用output.show显示一下合成的Select语句,复制到foxtable的SQL执行窗口执行,看看是不是合成的语句有问题。

 


--  作者:kensou11111
--  发布时间:2011/7/5 10:16:00
--  

终于发现了帮助里面得这句话:

 

如果数据源是SQl SERVER,日期常量用单引号而不是#号括起来,例如:

SELECT * FROM {订单} WHERE 日期 >= \'1/1/1999\' AND 日期 <= \'1/31/1999\'

 

所以上面那段代码要改成这样:

If e.Form.Controls("单选订单号").checked = True Then
   If e.Form.Controls("订单号").value IsNot Nothing Then
      Tables("清单列表显示窗口_Table1").Fill("Select * From {清单列表} where [日期] >= \'" & StartDate & "\' And [日期] <= \'" & EndDate & "\' And [订单号] Like \'" & e.Form.Controls("订单号").value & "%" & "\'","技术文件", False)
Else
      Tables("清单列表显示窗口_Table1").Fill("Select * From {清单列表} where [日期] >= \'" & StartDate & "\' And [日期] <= \'" & EndDate & "\'","技术文件", False)
End If
End If

 

 

[此贴子已经被作者于2011-7-5 10:18:48编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/7/5 10:19:00
--  

将下面这些代码中的#替换为\'即可:

 

If e.Form.Controls("订单号").value IsNot Nothing Then
      Tables("清单列表显示窗口_Table1").Fill("Select * From {清单列表} where [日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "# And [订单号] Like \'" & e.Form.Controls("订单号").value & "%" & "\'","技术文件", False)
Else
      Tables("清单列表显示窗口_Table1").Fill("Select * From {清单列表} where [日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "#","技术文件", False)
End If