以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 试用版 动态增加列有问题? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=46961) |
-- 作者:fubblyc -- 发布时间: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
|
-- 作者:y2287958 -- 发布时间:2014/3/2 11:47:00 -- 窗口表为“SQLQuery” 但sql语句中并未包含你新增的列
|
-- 作者:fubblyc -- 发布时间: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("实力级别") 为什么其他动态增加的列的可以(如:次数级别、实力级别等),就是这个 近度级别 不可以呢?
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2014/3/2 21:16:00 -- 有点甜老师,你的这条代码有效。 不过有一个类似的问题: e.DataRow("客群类别")=e.DataTable.DataCols.Contains("近度级别") & e.DataTable.DataCols.Contains("次数级别") & e.DataTable.DataCols.Contains("实力级别") 客群类别 这一列要怎么加进去呢?之前也是和近度级别 一样的做法。
|
-- 作者:有点甜 -- 发布时间:2014/3/2 21:22:00 -- 你是要加入一列 表达式列 ?类似 DataTables("订单").DataCols.Add("金额", GetType(Double), "[数量] * [单价] * (1 - [折扣])") |
-- 作者:fubblyc -- 发布时间:2014/3/2 22:44:00 -- 有点甜老师,不是表达式,是这样子,你看能否看清: |
-- 作者:fubblyc -- 发布时间: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 |
-- 作者:有点甜 -- 发布时间:2014/3/2 22:48:00 -- 这就是表达式吖 Tables("VIP行为信息_VIP行为信息").DataTable.DataCols.Add("客群类别",Gettype(String),32,"近度级别+次数级别+实力级别")
|
-- 作者:fubblyc -- 发布时间:2014/3/2 22:56:00 -- 有点甜老师你看: 然后提示: 我里面的代码是这样的: 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 |