Foxtable(狐表)用户栏目专家坐堂 → fill 加载表后,用LoadFilter 和Load 加载同表数据 遇到的问题


  共有5783人关注过本帖平板打印复制链接

主题:fill 加载表后,用LoadFilter 和Load 加载同表数据 遇到的问题

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
fill 加载表后,用LoadFilter 和Load 加载同表数据 遇到的问题  发帖心情 Post By:2014/3/23 20:12:00 [只看该作者]

各位老师晚上好,

 

我在窗口的after load 用fill加载表,代码如下:

Dim sql,ex1,ex2 As String
ex1 = "Round(DateDiff( m,MAX(消费日期),GetDate()),0)"
ex2 = vbcrlf  & "(Case" & vbcrlf
ex2+ ="When " & ex1 & ">= 13  Then '一星活跃'"  & vbcrlf
ex2+ ="When " & ex1 & ">= 10 and " & ex1 & " < 13 Then '二星活跃'" & vbcrlf
ex2+ ="When " & ex1 & ">= 6 and " & ex1 & " < 10 Then '三星活跃'" & vbcrlf
ex2+ ="When " & ex1 & ">= 3 and " & ex1 & " < 6 Then '四星活跃'" & vbcrlf
ex2+ = "Else  '五星活跃'" & vbcrlf
ex2+ ="End) As 活跃级别  "

 

 sql = "select  * from (Select {rjsytVIP基本信息}.归属门店代号 As 归属门店代号 , {rjsytVIP消费信息}.VIP卡号, MAX(消费日期) As 最后购买日, " & ex1 & " As 几个月没来买, " & ex2 & "   FROM "
 sql+ = "( rjsytVIP基本信息  RIGHT JOIN rjsytVIP消费信息 ON 卡号 = {rjsytVIP消费信息}.VIP卡号 ) where {rjsytVIP消费信息}.[_Identify] Is Null  GROUP BY  {rjsytVIP消费信息}.VIP卡号, {rjsytVIP基本信息}.归属门店代号) As a  "   

 DataTables("VIP行为信息_VIP行为信息").Fill(sql,"VIP数据", True)

 

然后在窗口的 一个名为 【查询】的按钮写下如下代码:

 

Dim filter As String

 

With e.Form.Controls("归属门店代号")
    If .Value IsNot Nothing Then
        Filter = "归属门店代号 = '" & .Value & "'"
    End If
End With

 

With e.Form.Controls("VIP卡号")
    If .Value IsNot Nothing Then
        Filter = "VIP卡号 = '" & .Value & "'"
    End If
End With

 

If Filter > "" Then

With DataTables("VIP行为信息_VIP行为信息")
    .LoadFilter = "" '一定要清除加载条件
    .LoadFilter = Filter
    .Load()
End With

 

应用窗口后,在“归属门店代号”控件输入 代号,点击 【查询】按钮,出现错误提示:

 

')' 附近有语法错误。

 

 

 

 

之前  【查询】按钮也是用 fill加载表的,但是看到【帮助】这样写:

 

请不要滥用Fill

通过Fill生成的Table,在打开窗口后,如果需要从同一个表加载其它数据进来,请采用LoadFilter和Load,切不可再用Fill(除非需要从另一个表加载数据),因为Fill会重新生成DataTable和Table,不仅效率低,还会导致设置好的绑定失效。

例如窗口中有个“最近七天”按钮,希望单击此按钮,加载最近七天的订单,可以将按钮的代码设置为:

Dim dt As Date = Date.Today.AddDays(-7)
DataTables
("订单").LoadFilter = "日期 > #" & dt & "#"
DataTables
("订单").Load()

总之,只有需要从不同的表中加载数据时,使用Fill方法,如果从同一个表中加载数据,应该使用LoadFilter和Load。

 

才想用这种方式

 

 

不知道是不是我理解错误了。。。。

[此贴子已经被作者于2014-3-23 21:28:48编辑过]

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