以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]小白求助,变量逻辑语句求修正! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67735) |
||||
-- 作者:foxbable_saber -- 发布时间: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 -- 发布时间:2015/4/30 11:45:00 -- 没看懂你的问题 |
||||
-- 作者:foxbable_saber -- 发布时间: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 -- 发布时间:2015/4/30 15:16:00 -- e.DataRow("起始地") <> Nothing 改为 e.DataRow.isnull("起始地")=false |
||||
-- 作者:foxbable_saber -- 发布时间:2015/4/30 16:34:00 -- 项目下载:
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 -- 发布时间:2015/4/30 16:43:00 -- 你这逻辑,好难理解啊. 第二个问题应该是你其中一个为空了.都不为空才可以 |
||||
-- 作者:foxbable_saber -- 发布时间:2015/5/4 11:06:00 -- bin 大,如下图: 此主题相关图片如下:12312321321.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 -- 发布时间: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 -- 发布时间:2015/5/4 11:14:00 -- 要判断是否为空. if up1 is nothing then |
||||
-- 作者:大红袍 -- 发布时间: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 |