以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  行政区域输入  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176737)

--  作者:胡噜胡噜毛
--  发布时间:2022/4/25 10:37:00
--  行政区域输入
If e.Node.Level = 0 Then  \'如果是顶层节点 
    Return \'则返回
End If
Dim Vals() As String = e.Node.FullPath.Split("\\") 
Dim Filter As String = "[省区] = \'" & Vals(0) & "\' And [市县] = \'" & Vals(1) & "\' And [乡镇] = \'" & Vals(2) & "\'And [街道] = \'" & Vals(3) & "\'  "
Dim dr As DataRow = DataTables("行政区域").Find(Filter)
Dim r As Row = Tables("住址").Current
r("省区") = dr("省区")
r("市县") = dr("市县")
r("乡镇") = dr("乡镇")
r("街道") = dr("街道")
e.Form.Close()


用窗口选择行政地区,通过双击输入单元格中,但是行政区域表中有些市县没有下级乡镇和街道,通过双击输入会报错,如果没有下级乡镇和街道怎么让它自动输入空值?
[此贴子已经被作者于2022/4/25 10:39:10编辑过]

--  作者:有点蓝
--  发布时间:2022/4/25 10:47:00
--  
请上传实例说明
--  作者:程兴刚
--  发布时间:2022/4/25 10:54:00
--  
根据Vals的长度,从最上级至下遍历合成Filter条件字符串是非常简单的事!Vals长度短,说明末级下无内客,其下级就被自动丢弃了,
--  作者:胡噜胡噜毛
--  发布时间:2022/4/25 11:00:00
--  行政区域输入
这个实例
[此贴子已经被作者于2022/4/25 11:01:13编辑过]

--  作者:胡噜胡噜毛
--  发布时间:2022/4/25 11:11:00
--  行政区域输入
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:行政区域.zip

这是实例

--  作者:程兴刚
--  发布时间:2022/4/25 11:20:00
--  
If e.Node.Level = 0 Then \'如果是顶层节点 
    Return \'则返回
End If
Dim Vals() As String = e.Node.FullPath.Split("\\")
Dim qys() As String = = {"省区", "市县", "乡镇", "街道" }
Dim Filter As String
For i As Integer = 0 To Vals.Length - 1
    Filter = Filter & "and " & qys(i) & " = \'" & Vals(i) & "\'"
Next
Filter = Filter.TrimStart("and ")
Dim dr As DataRow = DataTables("行政区域").Find(Filter)
Dim dr1 As dataRow = Tables("住址").Current.DataRow
For n As Integer = 0 To Vals.Length - 1
    dr1(qys(n)) = dr(qys(n))
Next
e.Form.Close()
[此贴子已经被作者于2022/4/25 11:53:25编辑过]

--  作者:程兴刚
--  发布时间:2022/4/25 11:23:00
--  
其实代码应该更严谨一点:(如果不是选择目录树节点并双击,代码必须这样)

If e.Node.Level = 0 Then \'如果是顶层节点 
    Return \'则返回
End If
Dim Vals() As String = e.Node.FullPath.Split("\\")
Dim qys() As String = = {"省区", "市县", "乡镇", "街道" }
Dim Filter As String
For i As Integer = 0 To Vals.Length - 1
    Filter = Filter & "and " & qys(i) & " = \'" & Vals(i) & "\'"
Next
Filter = Filter.TrimStart("and ")
Dim dr As DataRow = DataTables("行政区域").Find(Filter)
If dr IsNot Nothing Then
    Dim dr1 As dataRow = Tables("住址").Current.DataRow
    For n As Integer = 0 To Vals.Length - 1
        dr1(qys(n)) = dr(qys(n))
    Next
End If
e.Form.Close()
[此贴子已经被作者于2022/4/25 11:53:47编辑过]

--  作者:胡噜胡噜毛
--  发布时间:2022/4/25 11:31:00
--  
 Dim dr1 As Row = Tables("住址").Current.DataRow



它说这一行报错了,是什么原因?



.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,行政区域,TreeView1,NodeMouseDoubleClick
详细错误信息:
Syntax error: Missing operand after \'省区\' operator.

[此贴子已经被作者于2022/4/25 11:33:07编辑过]

--  作者:有点蓝
--  发布时间:2022/4/25 11:36:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip


--  作者:胡噜胡噜毛
--  发布时间:2022/4/25 11:42:00
--  
啊~实在不好意思哈,我的版本太低了,打不开,可不可以把代码发给我呀?(流泪)