我使用以下脚本从一个图层抓取宗地和地址信息,以填充新创建的要素的属性表。
没有返回错误,但我遇到的问题是在recordselect函数的内存中似乎存在错误的信息。无论我在哪里放置一个点,它都会给出相同的包裹#和地址。或者它实际上并没有正确执行IF功能。
Sub Address
Dim rsCurrentXY
Set rsCurrentXY = Map.Layers("Violations").records
rsCurrentXY.movelast
Dim objXYShape
Set objXYShape = rsCurrentXY.Fields.Shape
Dim pControls
Set pControls= Application.Map.selectionlayer.Forms("EDITFORM").Pages(“PAGE1”).Controls
Dim rsGrid
' Find corresponding map page to the valve point
Set rsGrid = Map.Layers("ACPA_parcels").records
rsGrid.movefirst
Do While Not rsGrid.eof
If rsGrid.fields.shape.Ispointin(objXYShape) Then
pControls("txtAddress").value = rsGrid.Fields("ADD1").Value
Exit Do
End If
rsGrid.Movenext
Loop
' Clean Up
Set rsCurrentXY = Nothing
Set objXYShape = Nothing
Set rsGrid = Nothing
End Sub
(我有另一个名为&#34的子程序; PIN"它可以做同样的事情。) 当检查员激活自定义表单中的各自编辑框时,我会调用它们。
感谢您的帮助, 罗伯特
答案 0 :(得分:0)
通过Application.Map.selectionlayer.Forms(“EDITFORM”)访问EDITFORM将会有问题。每当使用EDITFORM上的控件时,您应该使用ThisEvent.Object来发现所有对象。例如,如果您的事件处理程序是Page_OnLoad,那么ThisEvent.Object将引用您当前的页面。你应该有这样的代码:
Dim pPage1
Set pPage1 = ThisEvent.Object
Dim pControls
Set pControls = pPage1.Controls