以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按钮代码报错问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=10205)

--  作者:yingtianyiyao
--  发布时间:2011/5/25 14:49:00
--  按钮代码报错问题

我自己设计了个窗口,窗口内一个按钮的click事件如下:

以下内容为程序代码:

1 DataTables("发票发货出库跟踪表").DataRows.clear()
2 Dim SQL As String
3 SQL = " select * from V_FPFHCK_FOXTABLE "
4 SQL = SQL & " WHERE [发货日期] BETWEEN \'" & replace(e.Form.Controls("DateTimePicker1").text,"-","") & "\'"
5 SQL = SQL & " AND \'" & replace(e.Form.Controls("DateTimePicker2").text,"-","") & "\'"
6 SQL = SQL & " AND ([发货合同供方编号] in (select list from getinstr(\'" & e.Form.Controls("TextBox1").value & "\'))"
7 SQL = SQL & "OR \'" & e.Form.Controls("TextBox1").value & "\' = \'\' )"
8 SQL = SQL & " AND ([发货合同购方编号] IN(SELECT LIST FROM GETINSTR(\'" & e.Form.Controls("TextBox3").value & "\'))"
9 SQL = SQL & "OR \'" & e.Form.Controls("TextBox3").value & "\' = \'\' )"
10 \'messagebox.show(SQL)
11 DataTables("发票发货出库跟踪表").Fill(SQL,"生产机",True)

 

结果:我每次打开狐表第一下点击按钮就会报: [Select语句执行错误,请检查语法及数据源设置。] 之后再点击同一按钮第二下,结果又能正常显示.之后每次点击都不会再报错.

 每次都是这样,打开狐表第一下点击这个按钮都会报同样的错误,之后的点击又不报错了.这是什么原因啊?


--  作者:狐狸爸爸
--  发布时间:2011/5/25 14:51:00
--  
做个例子发上来。
--  作者:yingtianyiyao
--  发布时间:2011/5/25 15:09:00
--  
我是连接我本地的SQL数据库的,很难做例子哦
--  作者:狐狸爸爸
--  发布时间:2011/5/25 15:18:00
--  

打开命令窗口,然后单击按钮:

 

1 DataTables("发票发货出库跟踪表").DataRows.clear()
2 Dim SQL As String
3 SQL = " select * from V_FPFHCK_FOXTABLE "
4 SQL = SQL & " WHERE [发货日期] BETWEEN \'" & replace(e.Form.Controls("DateTimePicker1").text,"-","") & "\'"
5 SQL = SQL & " AND \'" & replace(e.Form.Controls("DateTimePicker2").text,"-","") & "\'"
6 SQL = SQL & " AND ([发货合同供方编号] in (select list from getinstr(\'" & e.Form.Controls("TextBox1").value & "\'))"
7 SQL = SQL & "OR \'" & e.Form.Controls("TextBox1").value & "\' = \'\' )"
8 SQL = SQL & " AND ([发货合同购方编号] IN(SELECT LIST FROM GETINSTR(\'" & e.Form.Controls("TextBox3").value & "\'))"
9 SQL = SQL & "OR \'" & e.Form.Controls("TextBox3").value & "\' = \'\' )"
10 Output.show(SQL)
11 DataTables("发票发货出库跟踪表").Fill(SQL,"生产机",True)

 

看看第一次和第二次合成的SQL语句有何不同。


--  作者:yingtianyiyao
--  发布时间:2011/5/25 15:32:00
--  
完全是一样的,我刚刚做了一下改动: 把 select * from V_FPFHCK_FOXTABLE  (V_FPFHCK_FOXTABLE 为视图view) 中的 V_FPFHCK_FOXTABLE 换成物理表就不报错了.这是啥原因啊
--  作者:mr725
--  发布时间:2011/5/25 15:33:00
--  
把 value 都改成 text 试试。 通常最后输入的 textbox 没有回车时,value还是原来的值。
--  作者:yingtianyiyao
--  发布时间:2011/5/25 15:39:00
--  
我 select * from V_FPFHCK_FOXTABLE  这样写的,这里的 V_FPFHCK_FOXTABLE 是个视图,我把他换成物理表就不再报错了,啥原因啊,大师们
--  作者:狐狸爸爸
--  发布时间:2011/5/25 15:41:00
--  

看不出来原因,把他整成access数据源发上来测试看看。


--  作者:yingtianyiyao
--  发布时间:2011/5/25 15:51:00
--  

你们试一下,直接做一个连接到SQL的外部数据源.然后做个按钮.click中触发:

DataTables("表A").DataRows.clear()
Dim SQL As String = ""
SQL = " select * from VIEW_NAME"
DataTables("表A").Fill(SQL,"外部数据源连接名",True)

这样点击第一下就会报错了.

(这里的VIEW_NAME是个视图)


--  作者:狐狸爸爸
--  发布时间:2011/5/25 15:59:00
--  

兄弟,Fill会自动清除以前数据的,所以你的这一行代码是多余的:

 

DataTables("表A").DataRows.clear()

 

删除吧。