以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]小白鼠求教“技项目总体优化,及易表转狐表语句!谢谢  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=67220)

--  作者:foxbable_saber
--  发布时间: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
--  发布时间:2015/4/20 13:51:00
--  
问题一个个来.
1.没什么不对啊

2.没看懂.

--  作者:foxbable_saber
--  发布时间: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
--  发布时间:2015/4/20 14:46:00
--  
没有问题就OK了.
--  作者:foxbable_saber
--  发布时间: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
--  发布时间: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
--  发布时间:2015/4/20 15:44:00
--  
也就是说,没有按照我的想法编写对,仅仅是“分别用【原始地】搜一遍 ,又用【原始地转标地】搜了一遍,另外有两个MZ、LZ变量存在,在物理表格及内容层面”不冲突“,所以可以显示出”一个值“?(貌似符合结果要求)!????

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

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

--  作者:foxbable_saber
--  发布时间: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
--  发布时间:2015/4/20 17:02:00
--  
说明有找到对应的行哦
--  作者:foxbable_saber
--  发布时间:2015/4/20 17:09:00
--  
{原始地},如果输入“abc”,这个abc既不正常三字码、也不是畸形码,怎么找到? 但是就是不出“无此地址”
[此贴子已经被作者于2015/4/20 17:11:23编辑过]