Foxtable(狐表)用户栏目专家坐堂 → 试用版 动态增加列有问题?


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

主题:试用版 动态增加列有问题?

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
试用版 动态增加列有问题?  发帖心情 Post By:2014/3/2 9:10:00 [只看该作者]

各位老师好,
为什么已经动态增加列了:

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("近度级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("多久没来_月").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("近度级别").RaiseDataColChanged

但是应用窗口是却提示      列“近度级别”不属于表 VIP行为信息_VIP行为信息  呢?
代码如下:

Select Case e.DataCol.Name
    Case "多久没来_月"
        If e.DataRow.IsNull("多久没来_月") = False AndAlso e.DataRow("多久没来_月") >= 0 Then
            Select Case e.DataRow("多久没来_月")
                Case 0 To 2
                    e.DataRow("近度级别") ="活跃"
                Case 3 To 5
                    e.DataRow("近度级别") ="浅睡"
                Case 6 To 8
                    e.DataRow("近度级别") ="休眠"
                Case 9 To 11
                    e.DataRow("近度级别") ="沉睡"
                Case Else
                    e.DataRow("近度级别") ="死卡"
            End Select
        End If
End Select
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:动态增加列有问题?.rar



 回到顶部
帅哥,在线噢!
y2287958
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4760 积分:34608 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/3/2 11:47:00 [只看该作者]

窗口表为“SQLQuery”
但sql语句中并未包含你新增的列

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/2 12:27:00 [只看该作者]

不过我新增的其他列也都是这样设置的,为什么其他的可以,就是这个不行呢?

打开窗口后执行的代码:
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("结缘多久",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("首次购买日").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("多久没来_月",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("最后购买日期").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("近度级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("多久没来_月").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("次数级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("累计购买次数_次").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("实力级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("每次购买金额_元").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("客群类别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("近度级别").RaiseDataColChanged
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("次数级别").RaiseDataColChanged
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("实力级别").RaiseDataColChanged


然后DataColChanged的代码如下:

If e.DataCol.name="最后购买日期" Then
    Dim y,m,d As Integer
    Dim dt1 As Date = e.DataRow("最后购买日期")
    Dim dt2 As Date = Date.Today
    DateYMD(dt1,dt2,y,m,d)
    e.DataRow("多久没来_月")=y*12+m
End If

If e.DataCol.name="首次购买日" Then
    Dim y,m,d As Integer
    Dim dt1 As Date = e.DataRow("首次购买日")
    Dim dt2 As Date = Date.Today
    DateYMD(dt1,dt2,y,m,d)
    e.DataRow("结缘多久")=y & "年" & m & "月" & d & "天"
End If

Select Case e.DataCol.Name
    Case "多久没来_月"
        If e.DataRow.IsNull("多久没来_月") = False AndAlso e.DataRow("多久没来_月") >= 0 Then
            Select Case e.DataRow("多久没来_月")
                Case 0 To 2
                    e.DataRow("近度级别") ="活跃"
                Case 3 To 5
                    e.DataRow("近度级别") ="浅睡"
                Case 6 To 8
                    e.DataRow("近度级别") ="休眠"
                Case 9 To 11
                    e.DataRow("近度级别") ="沉睡"
                Case Else
                    e.DataRow("近度级别") ="死卡"
            End Select
        End If
End Select

Select Case e.DataCol.Name
    Case "累计购买次数_次"
        If e.DataRow.IsNull("累计购买次数_次") = False AndAlso e.DataRow("累计购买次数_次") >= 0 Then
            Select Case e.DataRow("累计购买次数_次")
                Case 0 To 2
                    e.DataRow("次数级别") ="认可"
                Case 3 To 5
                    e.DataRow("次数级别") ="喜欢"
                Case Else
                    e.DataRow("次数级别") ="忠诚"
            End Select
        End If
End Select

Select Case e.DataCol.Name
    Case "每次购买金额_元"
        If e.DataRow.IsNull("每次购买金额_元") = False AndAlso e.DataRow("每次购买金额_元") >= 0 Then
            Select Case e.DataRow("每次购买金额_元")
                Case 0 To 500
                    e.DataRow("实力级别") ="潜龙"
                Case 501 To 1000
                    e.DataRow("实力级别") ="现龙"
                Case Else
                    e.DataRow("实力级别") ="飞龙"
            End Select
        End If
End Select

'e.DataRow("客群类别")=e.DataRow("近度级别") & e.DataRow("次数级别") & e.DataRow("实力级别")


为什么其他动态增加的列的可以(如:次数级别、实力级别等),就是这个  近度级别   不可以呢?

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


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

 因为修改值的时候,近度级别还没有添加进去,改成这样

Select Case e.DataCol.Name
    Case "多久没来_月"
        If e.DataTable.DataCols.Contains("近度级别") AndAlso e.DataRow.IsNull("多久没来_月") = False AndAlso e.DataRow("多久没来_月") >= 0 Then
            Select Case e.DataRow("多久没来_月")
                Case 0 To 2
                    e.DataRow("近度级别") ="活跃"
                Case 3 To 5
                    e.DataRow("近度级别") ="浅睡"
                Case 6 To 8
                    e.DataRow("近度级别") ="休眠"
                Case 9 To 11
                    e.DataRow("近度级别") ="沉睡"
                Case Else
                    e.DataRow("近度级别") ="死卡"
            End Select
        End If
End Select


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/2 21:16:00 [只看该作者]

有点甜老师,你的这条代码有效。

不过有一个类似的问题:
e.DataRow("客群类别")=e.DataTable.DataCols.Contains("近度级别") & e.DataTable.DataCols.Contains("次数级别") & e.DataTable.DataCols.Contains("实力级别")

客群类别  这一列要怎么加进去呢?之前也是和近度级别 一样的做法。

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


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

 你是要加入一列 表达式列 ?类似

DataTables("订单").DataCols.Add("金额", GetType(Double), "[数量] * [单价] * (1 - [折扣])")


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/2 22:44:00 [只看该作者]

有点甜老师,不是表达式,是这样子,你看能否看清:

图片点击可在新窗口打开查看此主题相关图片如下:字段组合.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/2 22:46:00 [只看该作者]

已经在窗口的after load写上:
DataTables("VIP行为信息_VIP行为信息").DataCols.Add("客群类别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("近度级别").RaiseDataColChanged
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("次数级别").RaiseDataColChanged
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("实力级别").RaiseDataColChanged

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


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

 这就是表达式吖

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("客群类别",Gettype(String),32,"近度级别+次数级别+实力级别")

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/3/2 22:56:00 [只看该作者]

有点甜老师你看:

图片点击可在新窗口打开查看此主题相关图片如下:无法找到近度级别列.jpg
图片点击可在新窗口打开查看

然后提示:

图片点击可在新窗口打开查看此主题相关图片如下:客群类别 已经存在.jpg
图片点击可在新窗口打开查看


我里面的代码是这样的:
If e.DataCol.name="最后购买日期" Then
    Dim y,m,d As Integer
    Dim dt1 As Date = e.DataRow("最后购买日期")
    Dim dt2 As Date = Date.Today
    DateYMD(dt1,dt2,y,m,d)
    e.DataRow("多久没来_月")=y*12+m
End If

If e.DataCol.name="首次购买日" Then
    Dim y,m,d As Integer
    Dim dt1 As Date = e.DataRow("首次购买日")
    Dim dt2 As Date = Date.Today
    DateYMD(dt1,dt2,y,m,d)
    e.DataRow("结缘多久")=y & "年" & m & "月" & d & "天"
End If

Select Case e.DataCol.Name
    Case "多久没来_月"
        If e.DataTable.DataCols.Contains("近度级别") AndAlso e.DataRow.IsNull("多久没来_月") = False AndAlso e.DataRow("多久没来_月") >= 0 Then
            Select Case e.DataRow("多久没来_月")
                Case 0 To 2
                    e.DataRow("近度级别") ="活跃"
                Case 3 To 5
                    e.DataRow("近度级别") ="浅睡"
                Case 6 To 8
                    e.DataRow("近度级别") ="休眠"
                Case 9 To 11
                    e.DataRow("近度级别") ="沉睡"
                Case Else
                    e.DataRow("近度级别") ="死卡"
            End Select
        End If
End Select

Select Case e.DataCol.Name
    Case "累计购买次数_次"
        If e.DataTable.DataCols.Contains("次数级别") AndAlso e.DataRow.IsNull("累计购买次数_次") = False AndAlso e.DataRow("累计购买次数_次") >= 0 Then
            Select Case e.DataRow("累计购买次数_次")
                Case 0 To 2
                    e.DataRow("次数级别") ="认可"
                Case 3 To 5
                    e.DataRow("次数级别") ="喜欢"
                Case Else
                    e.DataRow("次数级别") ="忠诚"
            End Select
        End If
End Select

Select Case e.DataCol.Name
    Case "每次购买金额_元"
        If e.DataTable.DataCols.Contains("实力级别") AndAlso e.DataRow.IsNull("每次购买金额_元") = False AndAlso e.DataRow("每次购买金额_元") >= 0 Then
            Select Case e.DataRow("每次购买金额_元")
                Case 0 To 500
                    e.DataRow("实力级别") ="潜龙"
                Case 501 To 1000
                    e.DataRow("实力级别") ="现龙"
                Case Else
                    e.DataRow("实力级别") ="飞龙"
            End Select
        End If
End Select

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("客群类别",Gettype(String),32,"近度级别+次数级别+实力级别")

'DataTables("VIP行为信息_VIP行为信息").DataCols.Add("客群类别", Gettype(String), "[近度级别] & [次数级别] & [实力级别])")

'e.DataRow("客群类别") = e.DataRow("近度级别")  &  e.DataRow("次数级别")  &  e.DataRow("实力级别")

'e.DataRow("客群类别")=e.DataTable.DataCols.Contains("近度级别") & e.DataTable.DataCols.Contains("次数级别") & e.DataTable.DataCols.Contains("实力级别")

你看,都试了好几种方法,都不行。 注释掉了

我在窗口的after load代码这样写:
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("结缘多久",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("首次购买日").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("多久没来_月",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("最后购买日期").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("近度级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("多久没来_月").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("次数级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("累计购买次数_次").RaiseDataColChanged

Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("实力级别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("每次购买金额_元").RaiseDataColChanged

DataTables("VIP行为信息_VIP行为信息").DataCols.Add("客群类别",Gettype(String))
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("近度级别").RaiseDataColChanged
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("次数级别").RaiseDataColChanged
Tables("VIP行为信息_VIP行为信息").DataTable.DataCols("实力级别").RaiseDataColChanged

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