2012-08-28 3 views
0

다음 스크립트를 사용하여 한 계층의 구획 및 주소 정보를 가져 와서 새로 만든 기능의 특성 테이블을 채 웁니다.ArcPad - VBscript - 자동 채우기 특성

반환 된 오류는 없지만 내가 가지고있는 문제는 잘못된 정보가 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 

(필자는 똑같은 일을 할 것 "PIN"라는 또 다른 서브 루틴이있다.) 나는 사용자 지정 양식에 해당 편집 상자는 관리자에 의해 활성화 될 때 그들이라고합니다. 도움을

감사합니다, 로버트

답변

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 
+0

http://forums.arcgis.com/threads/65742-Filling-in-atrributes-for-a-point-layer-from-a-underlying-polygon-layer ? p = 228353 & posted = 1 # post228353 – user1631426

+0

http://forums.arcgis.com/threads/65742-Filling-in-atrributes-for-a-point-layer-from-a-underlying-polygon-layer?p=228353&posted = 1 # post228353 – user1631426