以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于SQL的代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=64773)

--  作者:huangfanzi
--  发布时间:2015/3/1 17:27:00
--  [求助]关于SQL的代码
SQL语句实在不懂,下面代码请指导一下:
Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[牌号] = \'" & dr("牌号") & "\'"
        Case 1
            Filter ="[牌号] = \'" & dr("牌号") & "\' And [母卷号] = \'" & dr("母卷号") & "\'"
        Case 2
            Filter ="[牌号] = \'" & dr("牌号") & "\' And [母卷号] = \'" & dr("母卷号") & "\'And [卷号] = \'" & dr("卷号") & "\'"           
    End Select
End If
Dim tb1 As WinF orm.Table = e.F orm.Controls("Table_查询表")
tb1.Table.Fill("select * f rom {工序合并表} where " & filter,"ShcsMain",True)

执行以上代码时,如果点了“加载所有数据”,就提示SQL语句错误,问题我知道是出在了 select 语句后面的 where那,请老师改下。
[此贴子已经被作者于2015/3/1 17:27:27编辑过]

--  作者:有点甜
--  发布时间:2015/3/1 17:30:00
--  
改成 Filter = "1=1"
--  作者:huangfanzi
--  发布时间:2015/3/1 17:59:00
--  
原来可以这样写,明白这个意思了。
另一个问题,就是执行效率问题,我发现我写的代码,无论数据是否已经载入过,点了节点后就会重新载入一次,理想情况下,我点了一次加载所有数据后,再点下面的节点,数据应该是立即更新,不应该再从新加载。
有何方法可以做到 如果已经加载的数据与后台数据没有发生变化,就不重新加载,如果发生变化了,就重新加载一次。

--  作者:有点甜
--  发布时间:2015/3/1 18:03:00
--  

 简单一点,你记录下表格的行数,然后,点击节点的时候,查询后台的行数是多少,如果行数不匹配,就重新加载。

 

http://www.foxtable.com/help/topics/2897.htm