Foxtable(狐表)用户栏目专家坐堂 → [求助]小白求助,变量逻辑语句求修正!


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

主题:[求助]小白求助,变量逻辑语句求修正!

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


加好友 发短信
等级:婴狐 帖子:58 积分:431 威望:0 精华:0 注册:2015/4/16 17:25:00
[求助]小白求助,变量逻辑语句求修正!  发帖心情 Post By:2015/4/30 11:45:00 [只看该作者]

如题:
1、表A有,【原始地】【目的地】【国际or国内】
2、表B有,【地区三字代码】【国际国内】
3、经过如下语句,给表A【国际or国内】列赋值。


Select Case e.DataCol.name                        '国际or国内
    Case "起始地","目的地"
        Dim UP1 As String
        Dim DW1 As String
        Dim NY As String
        If e.DataRow.IsNull("起始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        ElseIf e.DataRow("起始地") <> Nothing Then
            Dim UPAAA As DataRow
            UPAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If UPAAA IsNot Nothing Then
                UP1 = UPAAA("国际国内")
            End If
        ElseIf e.DataRow("目的地") <> Nothing Then
            Dim DWAAA As DataRow
            DWAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If DWAAA IsNot Nothing Then
                DW1 = DWAAA("国际国内")
            End If
        ElseIf UP1 <> "国内" OrElse DW1 <> "国内" Then
            NY = "国际"
        ElseIf UP1 = "国内" And DW1 = "国内" Then
            NY = "国内"
            If NY IsNot Nothing Then
                e.DataRow("国际or国内") = NY
            Else
                e.DataRow("国际or国内") = "错误"
            End If
        End If
End Select
[此贴子已经被作者于2015/4/30 13:07:51编辑过]

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


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

没看懂你的问题

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


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


图片点击可在新窗口打开查看此主题相关图片如下:12344.jpg
图片点击可在新窗口打开查看


Select Case e.DataCol.name                        ' 国际or国内
    Case "起始地","目的地"
        Dim UP1 As String                              ’声明变量 ”UP1“为【起始地】不为空时,且搜索表B地区三字码有内容,返回“国内“/”国际”值给它
        Dim DW1 As String                             ’声明变量 ”DW1“=【目的地】不为空,且搜索地区三字码有内容,返回“国际、国内”给它”   
        If e.DataRow.IsNull("起始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        ElseIf e.DataRow("起始地") <> Nothing Then
            Dim UPAAA As DataRow
            UPAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If UPAAA IsNot Nothing Then
                UP1 = UPAAA("国际国内")
            End If
        ElseIf e.DataRow("目的地") <> Nothing Then
            Dim DWAAA As DataRow
            DWAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If DWAAA IsNot Nothing Then
                DW1 = DWAAA("国际国内")
            End If
         End IF
         If UP1 = "国内" And DW1 = "国内" Then
            e.DataRow("国际or国内") = "国内"
        ElseIf UP1 = "国际" OrElse DW1 = "国际" Then
            e.DataRow("国际or国内")="国际"
        else  
            e.DataRow("国际or国内")="错误"
        End If
End Select

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


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

 e.DataRow("起始地") <> Nothing  改为
 e.DataRow.isnull("起始地")=false



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


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

项目下载:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:货币转换项目.foxdb


bin大,经过消化,试验还是感觉不大对劲!

1、感觉缺 变量 up1 dw1 变化“datarow”声明。您给润润笔!
2、【原始地】【目的地】 同时输入数据,显示出一结果,但是输入后再单独变一个列的数据数据,【国际or国内】列不更新(或变更不积极),必须把【原始地】或【目的地】删除旧数据再填新数据才会变。
3、您给总体润润笔,谢谢!


Dim UP1 As DataRow = e.DataRow
Dim DW1 As DataRow = e.DataRow
Select Case e.DataCol.name                        ' 国际or国内
    Case "原始地","目的地"
        If e.DataRow.IsNull("原始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        ElseIf e.DataRow.IsNull("原始地") = False Then
            Dim UPAAA As DataRow
            UPAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If UPAAA IsNot Nothing Then
                UP1("国际or国内") = UPAAA("国际国内特区")
            End If
        ElseIf e.DataRow.IsNull("原始地") = False Then
            Dim DWAAA As DataRow
            DWAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If DWAAA IsNot Nothing Then
                DW1("国际or国内") = DWAAA("国际国内特区")
            End If
        End If
        
        If e.DataRow.IsNull("原始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        ElseIf UP1.isnull("国际or国内") And DW1.isnull("国际or国内") Then
            e.DataRow("国际or国内") = "全新"
        ElseIf UP1.isnull("国际or国内")  Then
            e.DataRow("国际or国内") = "原新"
        ElseIf DW1.isnull("国际or国内") Then
            e.DataRow("国际or国内") = "目新"
        ElseIf UP1("国际or国内") = "国内" And DW1("国际or国内") = "国内" Then
            e.DataRow("国际or国内") = "国内"
        ElseIf UP1("国际or国内") = "国际" OrElse DW1("国际or国内") = "国际" Then
            e.DataRow("国际or国内")="国际"
        Else
            e.DataRow("国际or国内")="错误"
        End If
End Select
[此贴子已经被作者于2015/4/30 16:38:41编辑过]

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


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

你这逻辑,好难理解啊.

第二个问题应该是你其中一个为空了.都不为空才可以



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


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

bin 大,如下图:

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


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



Dim UP1 As DataRow = e.DataRow
Dim DW1 As DataRow = e.DataRow
Select Case e.DataCol.name                        
    Case "原始地","目的地"
        If e.DataRow.IsNull("原始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        ElseIf e.DataRow.IsNull("原始地") = False Then
            Dim UPAAA As DataRow
            UPAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If UPAAA IsNot Nothing Then
                UP1("国际or国内") = UPAAA("国际国内特区")
            End If
        ElseIf e.DataRow.IsNull("目的地") = False Then
            Dim DWAAA As DataRow
            DWAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.NewValue & "'")
            If DWAAA IsNot Nothing Then
                DW1("国际or国内") = DWAAA("国际国内特区")
            End If
        End If
        
        If e.DataRow.IsNull("原始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        ElseIf UP1.isnull("国际or国内") And DW1.isnull("国际or国内") Then
            e.DataRow("国际or国内") = "全新"
        ElseIf UP1.isnull("国际or国内")  Then
            e.DataRow("国际or国内") = "原新"
        ElseIf DW1.isnull("国际or国内") Then
            e.DataRow("国际or国内") = "目新"
        ElseIf UP1("国际or国内") = "国内" And DW1("国际or国内") = "国内" Then
            e.DataRow("国际or国内") = "国内"
        ElseIf UP1("国际or国内") = "国际" OrElse DW1("国际or国内") = "国际" Then
            e.DataRow("国际or国内")="国际"
        Else
            e.DataRow("国际or国内")="错误"
        End If
End Select

[此贴子已经被作者于2015/5/4 11:17:31编辑过]

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


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

1.
Dim UP1 As DataRow = e.DataRow
Dim DW1 As DataRow = e.DataRow
既然是储存查找到的行,干嘛为它赋值E.datarow . 应该

Dim UP1 As DataRow = datatables("地区表").Find("三字码='" & e.datarow("原始地") & "'")
Dim DW1 As DataRow = datatables("地区表").Find("三字码='" & e.datarow("目的地") & "'")


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


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

要判断是否为空.

if up1 is nothing then


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/4 11:35:00 [只看该作者]

Dim UP1 As String = ""
Dim DW1 As String = ""
Select Case e.DataCol.name                        ' 国际or国内
    Case "原始地","目的地"
        If e.DataRow.IsNull("原始地") OrElse e.DataRow.IsNull("目的地") Then
            e.DataRow("国际or国内") = Nothing
        Else
            If e.DataRow.IsNull("原始地") = False Then
                Dim UPAAA As DataRow
                UPAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.DataRow("原始地") & "'")
                If UPAAA IsNot Nothing Then
                    up1 = UPAAA("国际国内特区")
                End If
            End If
            If e.DataRow.IsNull("目的地") = False Then
                Dim DWAAA As DataRow
                DWAAA = DataTables("地区货币能力表").Find("[地区三字码] = '" & e.DataRow("目的地") & "'")
                If DWAAA IsNot Nothing Then
                    DW1 = DWAAA("国际国内特区")
                End If
            End If
           
            If up1 = "" AndAlso dw1 <> "" Then
                e.DataRow("国际or国内") = "原新"
            ElseIf up1 <> "" AndAlso dw1 = "" Then
                e.DataRow("国际or国内") = "目新"
            ElseIf UP1 = "国内" AndAlso DW1 = "国内" Then
                e.DataRow("国际or国内") = "国内"
            ElseIf UP1 = "国际" OrElse DW1 = "国际" Then
                e.DataRow("国际or国内") = "国际"
            Else
                e.DataRow("国际or国内") = "错误"
            End If
        End If
End Select

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