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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/23 21:31:00 [显示全部帖子]

帮助文档上写的:

 

 


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

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/23 23:22:00 [显示全部帖子]

原来如此,谢谢 有点酸 老师。搞定了!!


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/24 16:06:00 [显示全部帖子]

啊,我现在才看到jspta老师的帖子。。。对自己无语了。。。

 

我现在是用SQLLoad()方法。

Dim sql,ex1,ex2,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


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 活跃级别  "

 If Filter > "" Then

 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行为信息").SQLLoad(sql)

 

两个问题:

1.确实两个条件无法同时查询,但不是有意为之,是希望能同时查询,但是不知道是怎么回事,问题出在哪里。。。

2.长的SQL应该直接写成视图放在数据库中,调用的时候调用视图就可以了   具体要怎么做呢?

 

我看了帮助里的表视图以及论坛里的表视图有关的帖子,还是没怎么弄明白。。。

 

是不是这样就是写成了表视图了:?

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  "   

 

调用的时候要怎么调用呢?

 

 

 


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/24 17:02:00 [显示全部帖子]

jspta老师,如何在数据库创建视图,我百度了下,需要这样:

 


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

 

能不能直接在狐表创建呢。。


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/24 18:11:00 [显示全部帖子]

 

[此贴子已经被作者于2014-3-24 18:13:48编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/24 19:08:00 [显示全部帖子]

谢谢jspta  老师,我会建简单的表视图啦。

 

但是这种复杂的还不会。。。

 

dim ex1, ex2 as string

ex1="DateDiff( m,MAX(消费日期),GetDate())"

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 活跃级别  "

create view  视图1  as Select  VIP卡号 ,  " & ex1 & "  AS 几个月没来买 , " & ex2 & "  from dbo.rjsytVIP消费信息 group by VIP卡号

 

 

提示错误:

 

 


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

 


 


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/24 20:37:00 [显示全部帖子]

哈哈。确实是。现在时间比较赶,这个等后面空点再来学,先暂时用 SQLLoad 方法。

 

谢谢有点酸老师。


 回到顶部