-
October 28th, 2009, 07:34 PM
#1
Object Variable Error - - Please Help!
I've created a form in ArcMap that allows you to fill in parcel data. I have two feature classes, To-Do Parcels (unsurveyed) and Surveyed Parcels. I want to be able to click on a To-Do parcel, fill in the form, hit save, and add that parcel feature to the Surveyed Parcels feature class. Here is what I have so far in my code. Now I am getting the Object Variable Error, and have no idea why, please help!
Code:
Private Sub cmdCancel_Click()
frmSurvey.Hide
End Sub
Public Sub LoadFeatures()
Dim pToDoAreaFClass As IFeatureClass
Dim pSurveyedAreaFClass As IFeatureClass
Dim pSearchFeatureCursor As IFeatureCursor
Dim pFeature As IFeature
Dim pInsertFeatureBuffer As IFeatureBuffer
Dim pInsertFeatureCursor As IFeatureCursor
Dim NewFeatureCount As Integer
On Error GoTo ErrorHandler
'Open shapefile where new features will be written to
'For simplicity, sample does not contain code to create a new shapefile
Set pSurveyedAreaFClass = OpenFeatureClass("E:\GEOG423\Projects\Group\Data", "Surveyed_Areas")
If pSurveyedAreaFClass Is Nothing Then Exit Sub
Set pInsertFeatureCursor = pSurveyedAreaFClass.Insert(True)
Set pInsertFeatureBuffer = pSurveyedAreaFClass.CreateFeatureBuffer
'Open shapefile containing the features that will be copied
Set pToDoAreaFClass = OpenFeatureClass("E:\GEOG423\Projects\Group\Data", "To_Do_January_-_August_2009")
If pToDoAreaFClass Is Nothing Then Exit Sub
'Find selected feature in ToDoAreaFClass
Set pSearchFeatureCursor = pToDoAreaFClass.Search(justOne, True)
Set pFeature = pSearchFeatureCursor.NextFeature
Do While Not pFeature Is Nothing
'Add the original feature's geometry to the feature buffer
Set pInsertFeatureBuffer.Shape = pFeature.Shape
'Add all the original feature's fields to the feature buffer
AddFields pInsertFeatureBuffer, pFeature
'Insert the feature into the cursor
pInsertFeatureCursor.InsertFeature pInsertFeatureBuffer
Set pFeature = pSearchFeatureCursor.NextFeature
Loop
Exit Sub 'Exit to avoid error handler
ErrorHandler:
MsgBox Err.Description
Resume Next
End Sub
Private Sub AddFields(pFeatureBuffer As IFeatureBuffer, pFeature As IFeature)
Dim pRowBuffer As IRowBuffer
Dim pNewFields As IFields 'fields on target feature class
Dim pNewField As IField
Dim pFields As IFields 'fields on original feature class
Dim pField As IField
Dim FieldCount As Integer
Dim NewFieldIndex As Long
'Copy the attributes of the orig feature the new feature
Set pRowBuffer = pFeatureBuffer
Set pNewFields = pRowBuffer.Fields
Set pFields = pFeature.Fields
If Not pField.Type = esriFieldTypeGeometry And Not pField.Type = esriFieldTypeOID _
And pField.Editable Then
NewFieldIndex = pNewFields.FindField(pField.Name)
If Not NewFieldIndex = -1 Then
pFeatureBuffer.Value(NewFieldIndex) = pFeature.Value(FieldCount)
End If
End If
pFeature.Value(2) = txtMAPPLAT.Text
pFeature.Value(3) = txtREALMAPCOD.Text
pFeature.Value(4) = Val(txtREALSTNO.Text)
pFeature.Value(5) = txtREALSTNAME.Text
pFeature.Value(6) = txtREALAPTNO.Text
pFeature.Value(7) = txtSUBNAME.Text
pFeature.Value(8) = txtNAMNAME.Text
pFeature.Value(9) = txtNAMADDR.Text
pFeature.Value(10) = txtNAMCITY.Text
pFeature.Value(11) = txtNAMST.Text
pFeature.Value(12) = Val(txtNAMZIP.Text)
pFeature.Value(13) = Val(txtNAMZIPEXT.Text)
pFeature.Value(17) = txtSDDISTRICT.Text
pFeature.Value(19) = txtSURVEY_NUM.Text
pFeature.Value(20) = txtGROUP_NUM.Text
pFeature.Value(21) = txtHIST_NAME.Text
pFeature.Value(22) = txtOTHER_NAME.Text
pFeature.Value(23) = Val(txtSTREET_NUM.Text)
pFeature.Value(24) = txtSTREET.Text
pFeature.Value(25) = txtOLD_ADDRES.Text
pFeature.Value(26) = txtCITY_COMM.Text
pFeature.Value(27) = txtNR_DESIG.Text
pFeature.Value(28) = txtLOCAL_DESI.Text
pFeature.Value(29) = txtUSGS_MAPNU.Text
pFeature.Value(30) = txtPVA_MAPNUM.Text
pFeature.Value(31) = txtORIG_USE.Text
pFeature.Value(32) = txtCUR_USE.Text
pFeature.Value(33) = txtDOC.Text
pFeature.Value(34) = txtSTYLE.Text
pFeature.Value(35) = txtDEMOED.Text
pFeature.Value(36) = txtNOTES.Text
End Sub
Public Function OpenFeatureClass(strWorkspace As String, strFeatureClass As String) As IFeatureClass
On Error GoTo ErrorHandler
Dim pShpWorkspaceName As IWorkspaceName
Dim pDatasetName As IDatasetName
Dim pName As IName
'Create the workspace name object
Set pShpWorkspaceName = New WorkspaceName
pShpWorkspaceName.PathName = strWorkspace
pShpWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.shapefileworkspacefactory.1"
'Create the feature class name object
Set pDatasetName = New FeatureClassName
pDatasetName.Name = strFeatureClass
Set pDatasetName.WorkspaceName = pShpWorkspaceName
'Open the feature class
Set pName = pDatasetName
Set OpenFeatureClass = pName.Open
Exit Function
ErrorHandler:
Set OpenFeatureClass = Nothing
End Function
Private Sub cmdSave_Click()
Call LoadFeatures
End Sub
-
October 28th, 2009, 11:33 PM
#2
Re: Object Variable Error - - Please Help!
We don't know about ArcMap, or your code. You could post a few lines surrounding where the error occurs, along with the error text and error number. Then we might be able to help
-
October 29th, 2009, 09:36 AM
#3
Re: Object Variable Error - - Please Help!
If you want help about a distinct error, you have to at least mark the line of code where the error occurs. None of us can run your code to find that out, because everything else of the program including the data is missing.
As David sayd: post a few lines before and after the lines which fires the error and tell exactly what the error message is saying.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|