Foxtable(狐表)用户栏目专家坐堂 → [求助]关于SQL的代码


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

主题:[求助]关于SQL的代码

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]关于SQL的代码  发帖心情 Post By:2015/3/1 17:27:00 [只看该作者]

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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/1 17:30:00 [只看该作者]

改成 Filter = "1=1"

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2015/3/1 17:59:00 [只看该作者]

原来可以这样写,明白这个意思了。
另一个问题,就是执行效率问题,我发现我写的代码,无论数据是否已经载入过,点了节点后就会重新载入一次,理想情况下,我点了一次加载所有数据后,再点下面的节点,数据应该是立即更新,不应该再从新加载。
有何方法可以做到 如果已经加载的数据与后台数据没有发生变化,就不重新加载,如果发生变化了,就重新加载一次。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/1 18:03:00 [只看该作者]

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

 

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

 


 回到顶部