Foxtable(狐表)用户栏目专家坐堂 → [求助]小白鼠求教“技项目总体优化,及易表转狐表语句!谢谢


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

主题:[求助]小白鼠求教“技项目总体优化,及易表转狐表语句!谢谢

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
[求助]小白鼠求教“技项目总体优化,及易表转狐表语句!谢谢  发帖心情 Post By:2015/4/20 13:49:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:无标题.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:货币转换项目.zip



If e.DataCol.Name = "原始地" Then
    If e.NewValue Is Nothing Then
        e.DataRow("原始地转标地") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("转换表").Find("[畸形地区码] = '" & e.NewValue & "'")
        If dr IsNot Nothing Then
            e.DataRow("原始地转标地") = dr("标准地区码")
        Else
            e.DataRow("原始地转标地") = Nothing
        End If
    End If
End If

If e.DataCol.Name = "目的地" Then
    If e.NewValue Is Nothing Then
        e.DataRow("目的地转标地") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("转换表").Find("[畸形地区码] = '" & e.NewValue & "'")
        If dr IsNot Nothing Then
            e.DataRow("目的地转标地") = dr("标准地区码")
        Else
            e.DataRow("目的地转标地") = Nothing
        End If
    End If
End If

If e.DataCol.Name = "现币种" Then
    If e.NewValue Is Nothing Then
        e.DataRow("筛币种") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("转换表").Find("[币种的名称] = '" & e.NewValue & "'")
        If dr IsNot Nothing Then
            e.DataRow("筛币种") = dr("币种三字码")
        Else
            e.DataRow("筛币种")= "币种异常或错误"
        End If
    End If
End If

Select Case e.DataCol.name
    Case "原始地","目的地"
        If e.DataRow.isnull("原始地") OrElse e.DataRow.isnull("目的地") Then
            e.DataRow("分析") = Nothing
        ElseIf e.DataRow("原始地")=e.DataRow("目的地") And e.DataRow("原始地")="PEK" And e.DataRow("目的地")="PEK"  Then
            e.DataRow("分析")="未曾旅游"
        ElseIf e.DataRow("原始地")<>"PEK" And e.DataRow("目的地")<>"PEK" And e.DataRow("原始地")=e.DataRow("目的地") Then
            e.DataRow("分析")="旅游驻留"
        ElseIf e.DataRow("原始地") <> e.DataRow("目的地") And e.DataRow("原始地")<>"PEK"  And e.DataRow("目的地")<>"PEK" Then
            e.DataRow("分析")="旅游途中"
        ElseIf e.DataRow("原始地")="PEK" And e.DataRow("目的地")<>"PEK" Then
            e.DataRow("分析")="出京中"
        ElseIf e.DataRow("原始地")<>"PEK" And e.DataRow("目的地")="PEK" Then
            e.DataRow("分析")="回京中"
        Else
            e.DataRow("分析")="异常请检查"
        End If
End Select

*******************************************************************************88
 ’以下字段感觉不太顺,但是自己调不好!
如果在易表中我想如下表示语句:
[原始币种能力]列进行判断取值
if([原始地]="",“”,
if([起代转标]<>"",FindText("地区货币能力表","货币能力表","地区三字码","=",[原始地转标地]),
FindText("地区货币能力表","货币能力表","地区三字码","=",[原始地])))

Select Case e.DataCol.name         ’狐表里只能这样,感觉不通顺有瑕疵!
    Case "原始地","原始地转标地"
        If e.DataRow.IsNull("原始地") Then
            e.DataRow("原始地币种能力") = Nothing
        ElseIf e.DataRow("原始地转标地") <> Nothing Then
            Dim mz As DataRow
            mz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If mz IsNot Nothing Then
                e.DataRow("原始地币种能力") = mz("货币能力表")
            End If
        ElseIf e.DataRow.IsNull("原始地转标地") Then
            Dim lz As DataRow = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If lz IsNot Nothing Then
                e.DataRow("原始地币种能力") = lz("货币能力表")
Else
e.DataRow("原始地币种能力")="无效地址"
            End If
        End If
        
    Case "目的地","目的地转标地"
        If e.DataRow.IsNull("目的地") Then
            e.DataRow("目的地币种能力") = Nothing
        ElseIf e.DataRow("目的地转标地") <> Nothing Then
            Dim mz As DataRow
            mz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If mz IsNot Nothing Then
                e.DataRow("目的地币种能力") = mz("货币能力表")
            End If
        ElseIf e.DataRow.IsNull("目的地转标地") Then
            Dim lz As DataRow = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If lz IsNot Nothing Then
                e.DataRow("目的地币种能力") = lz("货币能力表")
Else
e.DataRow("目的地币种能力")="无效地址"
            End If
        End If
End Select
**********************************************************************************
【原始地能否使】【目的地能否使】字段不知道怎么写!如下是’易表‘里我能写出的,换到’弧表‘不知道怎么表达??(希望优化,或内部语句直接运算后,节省分列数量提高效率。)
单列出一个字段【原始地能否筛选】对[筛币种]:[起飞能力单]进行比对是否包含筛币种字符:
if([原始地币种能力]="","",
if([原始地币种能力]="无效地址","新地点",
,Instr([筛币种],[原始地币种能力])))) ‘如果包含,那么有“数值>=0”
再单列出【是否需要兑换】列对上一字段判断,得出最终结果
if([原始地能否筛选]="新地点","是",
if([原始地能否筛选]>="0","否",
"是"))
*************************************************************************************

Select Case e.DataCol.name
Case "原始地能否使用","目的地能否使用"
If e.DataRow.IsNull("原始地能否使用") OrElse e.DataRow.IsNull("目的地能否使用") Then
e.DataRow("需换钱否") = False
ElseIf e.DataRow("原始地能否使用")="是" And e.DataRow("目的地能否使用")="是" Then
e.DataRow("需换钱否") = False
ElseIf e.DataRow("原始地能否使用")="否" And e.DataRow("目的地能否使用")="否" Then
e.DataRow("需换钱否") = True
ElseIf e.DataRow("原始地能否使用")="是" And e.DataRow("目的地能否使用")="否" Then
e.DataRow("需换钱否") = True
ElseIf e.DataRow("原始地能否使用")="否" And e.DataRow("目的地能否使用")="是" Then
e.DataRow("需换钱否") = True
Else
e.DataRow("需换钱否") = False
End If
End Select

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/20 13:51:00 [只看该作者]

问题一个个来.
1.没什么不对啊

2.没看懂.

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
[求助]  发帖心情 Post By:2015/4/20 14:43:00 [只看该作者]


此主题相关图片如下:1.jpg
按此在新窗口浏览图片

问题1:如果按照易表语句,感觉比较清晰,这个”狐表“感觉拿不准 MZ 和 LZ 变量准确跟随[原始地] 和 [原始地转标地]
易表代码:比较清晰阅读起来!
if([原始地]="",“”,
if([原始地转标地]<>"",FindText("地区货币能力表","货币能力表","地区三字码","=",[原始地转标地]),  '如果原始地转标不为空,则用【原始地转标地】作为比较代码
FindText("地区货币能力表","货币能力表","地区三字码","=",[原始地])))    ‘否则,用【原始地】作为比较代码

Select Case e.DataCol.name        
    Case "原始地","原始地转标地"
        If e.DataRow.IsNull("原始地") Then
            e.DataRow("原始地币种能力") = Nothing
        ElseIf e.DataRow("原始地转标地") <> Nothing Then                                     ‘’如果【原始地转标地】不为空,mz变量用”[原始地转标地]做索引?怎么理解?
            Dim mz As DataRow
            mz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If mz IsNot Nothing Then
                e.DataRow("原始地币种能力") = mz("货币能力表")
            End If
        ElseIf e.DataRow.IsNull("原始地转标地") Then              ’这里否则原始地为空,lz变量用”[原始地]做索引?怎么理解?上面还好理解一点,这里怎么转变没理解!
            Dim lz As DataRow = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If lz IsNot Nothing Then
                e.DataRow("原始地币种能力") = lz("货币能力表")
        Else
                e.DataRow("原始地币种能力")="无效地址"
            End If
        End If
前半句结束·········后半句省略
[此贴子已经被作者于2015/4/20 14:57:51编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/20 14:46:00 [只看该作者]

没有问题就OK了.

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
  发帖心情 Post By:2015/4/20 15:05:00 [只看该作者]

我这瞎捉摸的,您给稍加解释解释。回头三个变量或四个变量我这理解有点晕, ”变量“跟’列‘。

Select Case e.DataCol.name        
    Case "原始地","原始地转标地"
        If e.DataRow.IsNull("原始地") Then
            e.DataRow("原始地币种能力") = Nothing
        ElseIf e.DataRow("原始地转标地") <> Nothing Then                                     ‘’如果【原始地转标地】不为空,mz变量用”[原始地转标地]做索引?怎么理解?
            Dim mz As DataRow
            mz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If mz IsNot Nothing Then
                e.DataRow("原始地币种能力") = mz("货币能力表")
            End If
        ElseIf e.DataRow.IsNull("原始地转标地") Then              ’这里否则原始地为空,lz变量用”[原始地]做索引?怎么理解?上面还好理解一点,这里怎么转变没理解!
            Dim lz As DataRow = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If lz IsNot Nothing Then
                e.DataRow("原始地币种能力") = lz("货币能力表")
        Else
                e.DataRow("原始地币种能力")="无效地址"

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/20 15:08:00 [只看该作者]


Select Case e.DataCol.name        
    Case "原始地","原始地转标地"
        If e.DataRow.IsNull("原始地") Then
            e.DataRow("原始地币种能力") = Nothing
        ElseIf e.DataRow("原始地转标地") <> Nothing Then                                     ‘’如果【原始地转标地】不为空
            Dim mz As DataRow
            mz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")   '把找到的行 赋值给MZ 
            If mz IsNot Nothing Then  '判断一下MZ是否为空,如果是空,说明没找到对应的行. 不是空就是找到了.
                e.DataRow("原始地币种能力") = mz("货币能力表")
            End If
        ElseIf e.DataRow.IsNull("原始地转标地") Then              ’这里否则原始地为空,
            Dim lz As DataRow = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")  '声明一个新的变量为LZ 把FIND查找到的行,存到LZ里.
            If lz IsNot Nothing Then  '如果LZ不是空,说明有找到对应的行,基本和上面一样的原理
                e.DataRow("原始地币种能力") = lz("货币能力表")
        Else
                e.DataRow("原始地币种能力")="无效地址"

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
  发帖心情 Post By:2015/4/20 15:44:00 [只看该作者]

也就是说,没有按照我的想法编写对,仅仅是“分别用【原始地】搜一遍 ,又用【原始地转标地】搜了一遍,另外有两个MZ、LZ变量存在,在物理表格及内容层面”不冲突“,所以可以显示出”一个值“?(貌似符合结果要求)!????

您给润润笔,写一个正确逻辑代码出来行么?

大概逻辑循环是:
如果【原始地】=空,则【原始地币种能力】=空,否则如果【原始地转标地】不是空,则用【原始地转标地】里的字符做索引值,对【地区货币能力表】中【[地区三字码】行进行比对,如果【地区三字码】=【原始地转标地】有,则赋值【原始地币种能力】=货币能力表】。否则,用【原始地】字符作为索引,对地区货币能力表】中【[地区三字码】行进行比对,如果【地区三字码】=【原始地】有,则赋值原始地币种能力】=货币能力表】,否则【原始地币种能力】=”数据异常“
[此贴子已经被作者于2015/4/20 15:48:17编辑过]

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
  发帖心情 Post By:2015/4/20 17:00:00 [只看该作者]

不出”无效地址“结果

If e.DataCol.Name = "原始地转标地" Then
    If e.NewValue Is Nothing And e.DataRow("原始地") = Nothing Then
        e.DataRow("原始地币种能力") = Nothing
    ElseIf e.NewValue <> Nothing Then
        Dim lz As DataRow
        lz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
        If lz IsNot Nothing Then
            e.DataRow("原始地币种能力") = lz("货币能力表")
        Else
            e.DataRow("原始地币种能力") = "无效地址"
        End If
    ElseIf e.DataCol.Name = "原始地" Then
        If e.NewValue IsNot Nothing OrElse e.OldValue Is Nothing Then
            Dim mz As DataRow
            mz = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If mz IsNot Nothing Then
                e.DataRow("原始地币种能力") = mz("货币能力表")
            Else e.DataRow("原始地币种能力") = "无效地址"
            End If
        End If
    End If
End If

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/20 17:02:00 [只看该作者]

说明有找到对应的行哦

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
  发帖心情 Post By:2015/4/20 17:09:00 [只看该作者]

{原始地},如果输入“abc”,这个abc既不正常三字码、也不是畸形码,怎么找到? 但是就是不出“无此地址”
[此贴子已经被作者于2015/4/20 17:11:23编辑过]

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