Creates a dataset in a workspace.
[C#]
///<summary>Creates a table with some default fields.</summary> /// ///<param name="workspace">An IWorkspace2 interface</param> ///<param name="tableName">A System.String of the table name in the workspace. Example: "owners"</param> ///<param name="fields">An IFields interface or Nothing</param> /// ///<returns>An ITable interface or Nothing</returns> /// ///<remarks> ///Notes: ///(1) If an IFields interface is supplied for the 'fields' collection it will be used to create the /// table. If a Nothing value is supplied for the 'fields' collection, a table will be created using /// default values in the method. ///(2) If a table with the supplied 'tableName' exists in the workspace an ITable will be returned. /// if table does not exit a new one will be created. ///</remarks> public ESRI.ArcGIS.Geodatabase.ITable CreateTable(ESRI.ArcGIS.Geodatabase.IWorkspace2 workspace, System.String tableName, ESRI.ArcGIS.Geodatabase.IFields fields) { // create the behavior clasid for the featureclass ESRI.ArcGIS.esriSystem.UID uid = new ESRI.ArcGIS.esriSystem.UIDClass(); if (workspace == null) return null; // valid feature workspace not passed in as an argument to the method ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explicit Cast ESRI.ArcGIS.Geodatabase.ITable table; if (workspace.get_NameExists(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTTable, tableName)) { // table with that name already exists return that table table = featureWorkspace.OpenTable(tableName); return table; } uid.Value = "esriGeoDatabase.Object"; ESRI.ArcGIS.Geodatabase.IObjectClassDescription objectClassDescription = new ESRI.ArcGIS.Geodatabase.ObjectClassDescriptionClass(); // if a fields collection is not passed in then supply our own if (fields == null) { // create the fields using the required fields method fields = objectClassDescription.RequiredFields; ESRI.ArcGIS.Geodatabase.IFieldsEdit fieldsEdit = (ESRI.ArcGIS.Geodatabase.IFieldsEdit)fields; // Explicit Cast ESRI.ArcGIS.Geodatabase.IField field = new ESRI.ArcGIS.Geodatabase.FieldClass(); // create a user defined text field ESRI.ArcGIS.Geodatabase.IFieldEdit fieldEdit = (ESRI.ArcGIS.Geodatabase.IFieldEdit)field; // Explicit Cast // setup field properties fieldEdit.Name_2 = "SampleField"; fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString; fieldEdit.IsNullable_2 = true; fieldEdit.AliasName_2 = "Sample Field Column"; fieldEdit.DefaultValue_2 = "test"; fieldEdit.Editable_2 = true; fieldEdit.Length_2 = 100; // add field to field collection fieldsEdit.AddField(field); fields = (ESRI.ArcGIS.Geodatabase.IFields)fieldsEdit; // Explicit Cast } // Use IFieldChecker to create a validated fields collection. ESRI.ArcGIS.Geodatabase.IFieldChecker fieldChecker = new ESRI.ArcGIS.Geodatabase.FieldCheckerClass(); ESRI.ArcGIS.Geodatabase.IEnumFieldError enumFieldError = null; ESRI.ArcGIS.Geodatabase.IFields validatedFields = null; fieldChecker.ValidateWorkspace = (ESRI.ArcGIS.Geodatabase.IWorkspace)workspace; fieldChecker.Validate(fields, out enumFieldError, out validatedFields); // The enumFieldError enumerator can be inspected at this point to determine // which fields were modified during validation. // create and return the table table = featureWorkspace.CreateTable(tableName, validatedFields, uid, null, ""); return table; }
[Visual Basic .NET]
'''<summary>Creates a table with some default fields.</summary> ''' '''<param name="workspace">An IWorkspace2 interface</param> '''<param name="tableName">A System.String of the table name in the workspace. Example: "owners"</param> '''<param name="fields">An IFields interface or Nothing</param> ''' '''<returns>An ITable interface or Nothing</returns> ''' '''<remarks> '''Notes: '''(1) If an IFields interface is supplied for the 'fields' collection it will be used to create the ''' table. If a Nothing value is supplied for the 'fields' collection, a table will be created using ''' default values in the method. '''(2) If a table with the supplied 'tableName' exists in the workspace an ITable will be returned. ''' if table does not exit a new one will be created. '''</remarks> Public Function CreateTable(ByVal workspace As ESRI.ArcGIS.Geodatabase.IWorkspace2, ByVal tableName As System.String, ByVal fields As ESRI.ArcGIS.Geodatabase.IFields) As ESRI.ArcGIS.Geodatabase.ITable ' Create the behavior clasid for the featureclass Dim uid As ESRI.ArcGIS.esriSystem.UID = New ESRI.ArcGIS.esriSystem.UIDclass If workspace Is Nothing Then Return Nothing ' valid feature workspace not passed in as an argument to the method End If Dim featureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace = CType(workspace, ESRI.ArcGIS.Geodatabase.IFeatureWorkspace) ' Explicit Cast Dim table As ESRI.ArcGIS.Geodatabase.ITable If workspace.NameExists(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTTable, tableName) Then ' A table with that name already exists so return that table table = featureWorkspace.OpenTable(tableName) Return table End If UID.Value = "esriGeoDatabase.Object" Dim objectClassDescription As ESRI.ArcGIS.Geodatabase.IObjectClassDescription = New ESRI.ArcGIS.Geodatabase.ObjectClassDescriptionClass ' If a fields collection is not passed in then supply our own If fields Is Nothing Then ' Create the fields using the required fields method fields = objectClassDescription.RequiredFields Dim fieldsEdit As ESRI.ArcGIS.Geodatabase.IFieldsEdit = CType(fields, ESRI.ArcGIS.Geodatabase.IFieldsEdit) ' Explicit Cast Dim field As ESRI.ArcGIS.Geodatabase.IField = New ESRI.ArcGIS.Geodatabase.FieldClass ' Create a user defined text field Dim fieldEdit As ESRI.ArcGIS.Geodatabase.IFieldEdit = CType(Field, ESRI.ArcGIS.Geodatabase.IFieldEdit) ' Explicit Cast ' Setup field properties fieldEdit.Name_2 = "SampleField" fieldEdit.Type_2 = ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeString fieldEdit.IsNullable_2 = True fieldEdit.AliasName_2 = "Sample Field Column" fieldEdit.DefaultValue_2 = "test" fieldEdit.Editable_2 = True fieldEdit.Length_2 = 100 ' Add the field to the field collection fieldsEdit.AddField(Field) fields = CType(fieldsEdit, ESRI.ArcGIS.Geodatabase.IFields) ' Explicit Cast End If ' Use IFieldChecker to create a validated fields collection. Dim fieldChecker As ESRI.ArcGIS.Geodatabase.IFieldChecker = New ESRI.ArcGIS.Geodatabase.FieldCheckerClass() Dim enumFieldError As ESRI.ArcGIS.Geodatabase.IEnumFieldError = Nothing Dim validatedFields As ESRI.ArcGIS.Geodatabase.IFields = Nothing fieldChecker.ValidateWorkspace = CType(workspace, ESRI.ArcGIS.Geodatabase.IWorkspace) fieldChecker.Validate(fields, enumFieldError, validatedFields) ' The enumFieldError enumerator can be inspected at this point to determine ' which fields were modified during validation. ' Create and return the table table = featureWorkspace.CreateTable(tableName, validatedFields, uid, Nothing, "") Return table End Function