Foxtable(狐表)用户栏目专家坐堂 → [求助]请教2个问题


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

主题:[求助]请教2个问题

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/11 19:32:00 [显示全部帖子]

 如下

   

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目0511.table


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/14 23:57:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "积分", "数量"
        Dim dr1 As DataRow
        dr1 = DataTables("客户资料").Find("[客户名称] = '" & e.DataRow("客户名称") & "'")
        If dr1 IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是Nothing
            DataTables("客户资料").DataCols("客户名称").RaiseDataColChanged(dr1)
            If  dr1("剩余积分") < 0 Then
                MessageBox.Show("积分不足","提示")
                e.DataRow("礼品名称") = Nothing
                e.DataRow("积分") =0
                e.DataRow("数量") =0
            End If
        End If
End Select

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/18 9:31:00 [显示全部帖子]

 回复8楼,代码不是注释掉了么?你删除掉即可。

 

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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/19 11:54:00 [显示全部帖子]

回复10楼,不理解你的意思。

 

如果客户是有重复的,就应该用证件号作为唯一标识。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/20 22:36:00 [显示全部帖子]

 证件号码格式不同,数据本来就错了,这是不规范的。

 

 要从源头做起,把不同的证件号规范起来。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/20 22:37:00 [显示全部帖子]

 如果要改代码,参考这里,substring要这样写

 

Substring

说明 从字符串中的指定位置开始,返回指定长度的子字符串。
语法 Substring(expression, start, Length)
参数 expression — 原字符串。
start — 起始位置,从1开始编号。
Length — 返回长度。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/20 22:37:00 [显示全部帖子]

If e.DataCol.Name = "客户名称" Then
    Dim cszf As Double = DataTables("储蓄积分").Compute("sum(储蓄积分)", "客户名称 = '" & e.DataRow("客户名称") & "' and 证件号码 = '" & e.DataRow("证件号码") & "'")
   Dim lczf As Double = DataTables("理财积分").Compute("sum(理财积分)", "客户名称 = '" & e.DataRow("客户名称") & "' and substring(证件号码,1,13) = '" & e.DataRow("证件号码").Substring(2,13) & "'")
    e.DataRow("合计积分") = cszf + lczf
 
   Dim dhjf As Double = DataTables("积分兑换明细").Compute("sum(兑换积分)", "客户名称 = '" & e.DataRow("客户名称") & "' and 证件号码 = '" & e.DataRow("证件号码") & "'")
   e.DataRow("兑换积分") = dhjf

End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/20 23:00:00 [显示全部帖子]

 回复18楼,可能是你的数据有空值、或者不规范的值。你检查一下

 

 你应该循环一次把证件号码改正确的才对,而不是每次截取一部分内容比较。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/22 22:40:00 [显示全部帖子]

 这样写

 

Select Case e.DataCol.name
    Case  "客户名称","证件号码"
        Dim fdr As DataRow = DataTables("客户身份证号码").Find("客户名称 = '" & e.DataRow("客户名称") & "' and substring(证件号码,2,13) = '" & e.DataRow("证件号码").Substring(2,12) & "'")
              
        If fdr IsNot Nothing Then
            e.DataRow("证件号码") = fdr("证件号码")
        Else
            e.DataRow("证件号码") = e.DataRow("证件号码1")
           
        End If
End Select


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/3 22:39:00 [显示全部帖子]

 测试了一下,用下面代码

 

Select Case e.DataCol.name
    Case  "客户名称","证件号码"
        Dim fdr As DataRow = DataTables("客户身份证号码").Find("客户名称 = '" & e.DataRow("客户名称") & "' and substring(证件号码,2,13) = '" & e.DataRow("证件号码1").Substring(2, 13) & "'")
              
        If fdr IsNot Nothing Then
            e.DataRow("证件号码") = fdr("证件号码")
        Else
            e.DataRow("证件号码") = e.DataRow("证件号码1")
        End If
End Select


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