以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  航线判断问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=106099)

--  作者:轩辕绝
--  发布时间:2017/9/1 22:02:00
--  航线判断问题

请老师注意,因为本论坛过滤的词汇包含“过.夜”(中间没“.”)所以所有涉及该词的,中间都加了个“.”

 

根据控件“航段”的数据来判断从“航点表”中提取航班的特点判断:“过.夜”和“国际”

航点表如下

 


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

窗口设计如下: 

 


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

运行后如下:

 

需要达到的要求:

1自动识别是否是国际航班,如果是自动勾选国际,并将通往城市自动填入“国际名”的文本框中。

判定方式将“航段”文本框中的每一个字分开,分别对照“航点表”中简称,根据简称识别“国际”字段是否为“true”如果为“true”,则为国际(勾选国际),并将“航点表”中“城市”字段的内容填入“国际名”的文本框中。

2自动识别是否是过.夜航班,如果是自动勾选“过.夜”并将过.夜城市自动填入“过.夜名”的文本框中

判定方式:将“航段”文本框中的最后一个字(即右边第一个字)提取,对照“航点表”中简称查询,“过.夜”字段是否为“true”,如果是则为过.夜航班(勾选过.夜),并将“航点表”中“城市”字段的内容填入“过.夜名”的文本框中。

3国际和过.夜同时判断。

 

目前该窗口中“afterload”事件有如下代码:

Dim r As Row  = Tables("出库窗口_航班查询表").current
Dim aqy As WinForm.ComboBox = Forms("出库窗口").Controls("安全员")

e.form.controls("日期").value = r("日期")
e.form.controls("航班号").value = r("航班号")
e.form.controls("航段").value = r("航段") \'航段字段获取
e.form.controls("预达时间").value = r("降落")
e.Form.Controls("领取人").value = aqy.Value

Dim lyr As WinForm.TextBox = e.Form.Controls("领取人")
Dim hz As DataRow = DataTables("护照").find("姓名=\'" & lyr.Value & "\'")
If hz IsNot Nothing Then
     e.form.controls("护照号发").text = hz("护照号")
End If

Dim hps As DataRow = DataTables("红皮书").find("姓名=\'" & lyr.Value & "\'")
If hps IsNot Nothing Then
     e.form.controls("红皮书发").text = hps("有效期")
End If

Dim ps As DataRow = DataTables("黄皮书").find("姓名=\'" & lyr.Value & "\'")
If ps IsNot Nothing Then
     e.form.controls("黄皮书发").text = ps("有效期")
End If

 

 

请问如何增加。。如有改动,请老师予以标红。。。

 

[此贴子已经被作者于2017/9/1 22:26:49编辑过]

--  作者:有点蓝
--  发布时间:2017/9/1 22:34:00
--  
请上传实例测试
--  作者:轩辕绝
--  发布时间:2017/9/1 22:42:00
--  

 

[此贴子已经被作者于2017/9/1 23:23:27编辑过]

--  作者:轩辕绝
--  发布时间:2017/9/1 22:43:00
--  
已经上传,,
以下是引用有点蓝在2017/9/1 22:34:00的发言:
请上传实例测试


--  作者:有点蓝
--  发布时间:2017/9/1 22:59:00
--  
参考:

Dim str As String = "郑晋郑春郑" \'r("航段")
Dim lst As new List(of String)
For i  As Integer = 0 To str.Length - 1
    If lst.Contains(str(i)) = False Then lst.Add(str(i))
Next

Dim cbostring As String = DataTables("航点表").GetComboListString("城市","简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 国际 = true")
If cbostring > "" Then
    e.form.controls("国际").Checked = True
    e.form.controls("国际名").Text = cbostring 
End If

--  作者:轩辕绝
--  发布时间:2017/9/1 23:05:00
--  
老师,代码写在哪里?
afterload么?
 
还有代码,有些看不懂,能否注释一下。。???
以下是引用有点蓝在2017/9/1 22:59:00的发言:
参考:

Dim str As String = "郑晋郑春郑" \'r("航段")
Dim lst As new List(of String)
For i  As Integer = 0 To str.Length - 1
    If lst.Contains(str(i)) = False Then lst.Add(str(i))
Next

Dim cbostring As String = DataTables("航点表").GetComboListString("城市","简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 国际 = true")
If cbostring > "" Then
    e.form.controls("国际").Checked = True
    e.form.controls("国际名").Text = cbostring 
End If


--  作者:有点蓝
--  发布时间:2017/9/1 23:12:00
--  
afterload,或者航段控件赋值后

Dim str As String = r("航段")
Dim lst As new List(of String)
For i  As Integer = 0 To str.Length - 1
    If lst.Contains(str(i)) = False Then lst.Add(str(i)) ‘城市简称拆分到集合’
Next
msgbox("简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 国际 = true") 弹出内容自己看效果
Dim cbostring As String = DataTables("航点表").GetComboListString("城市","简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 国际 = true")
If cbostring > "" Then
msgbox(cbostring)
    e.form.controls("国际").Checked = True
    e.form.controls("国际名").Text = cbostring 
End If







--  作者:轩辕绝
--  发布时间:2017/9/2 23:28:00
--  
老师,这个是国际航班判定的。
请问老师过.夜的该怎么判定呢?
以下是引用有点蓝在2017/9/1 23:12:00的发言:
afterload,或者航段控件赋值后

Dim str As String = r("航段")
Dim lst As new List(of String)
For i  As Integer = 0 To str.Length - 1
    If lst.Contains(str(i)) = False Then lst.Add(str(i)) ‘城市简称拆分到集合’
Next
msgbox("简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 国际 = true") 弹出内容自己看效果
Dim cbostring As String = DataTables("航点表").GetComboListString("城市","简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 国际 = true")
If cbostring > "" Then
msgbox(cbostring)
    e.form.controls("国际").Checked = True
    e.form.controls("国际名").Text = cbostring 
End If







--  作者:有点甜
--  发布时间:2017/9/3 11:59:00
--  

同样这样查,如

 

Dim abc As String = DataTables("航点表").GetComboListString("城市","简称 in (\'" & String.Join("\',\'",lst.ToArray) & "\') and 过.夜 = true")