What are the Geoprocesses that you're using to create these in memory tables? You mentioned that you have a problem when you run the process more than one time. Can you set the OverwriteOutput property to true?You can get the reference from an object created by a geoprocessing tool. Here's an example of creating a table and returning a reference for that table. This is from code I've written for ArcGIS 10, but hopefully the interfaces would be applicable for ArcGIS 9.2 (although you'd probably have to use previous versions, like IGeoProcessorResult instead of IGeoProcessorResult2)
Friend Function CreateNewTable(ByVal TableLocation As String, ByVal TableName As String) As ESRI.ArcGIS.Geodatabase.ITable
Dim NewTable As New ESRI.ArcGIS.DataManagementTools.CreateTable
Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2
Try
Using releaser As New ESRI.ArcGIS.ADF.ComReleaser
releaser.ManageLifetime(NewTable)
NewTable.out_path = TableLocation
NewTable.out_name = TableName
Result = RunTool(NewTable, Nothing)
If Result Is Nothing Then Return Nothing
Return ReturnObjectfromResult(Result, "Table")
End Using
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString & vbNewLine & ex.StackTrace.ToString, "Create Table")
Return Nothing
End Try
End Function
Friend Function RunTool(ByVal Process As ESRI.ArcGIS.Geoprocessor.IGPProcess, ByVal TC As ESRI.ArcGIS.esriSystem.ITrackCancel2, Optional ByVal AddOutput As Boolean = False) As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2
Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2
Try
System.Windows.Forms.Cursor.Current = Windows.Forms.Cursors.WaitCursor
Dim GP As New ESRI.ArcGIS.Geoprocessor.Geoprocessor
GP.AddOutputsToMap = AddOutput
Result = CType(GP.Execute(Process, Nothing), ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2)
If Result.Status <> ESRI.ArcGIS.esriSystem.esriJobStatus.esriJobSucceeded Then ReturnMessages(Result, "Geoprocessing Error")
GP.ClearMessages()
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString, "Run Geoprocessor")
End Try
Return Result
End Function
Friend Function ReturnObjectfromResult(ByVal result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2, ByVal Type As String) As Object
Dim GPVal As ESRI.ArcGIS.Geodatabase.IGPValue
Dim InMemFC As String
Dim GPUtil As ESRI.ArcGIS.Geoprocessing.IGPUtilities3 = New ESRI.ArcGIS.Geoprocessing.GPUtilities
Try
GPVal = result.GetOutput(0)
InMemFC = GPVal.GetAsText()
Select Case Type
Case "Feature Class"
Return GPUtil.OpenFeatureClassFromString(InMemFC)
Case "Table"
Return GPUtil.OpenTableFromString(InMemFC)
Case "Feature Layer"
Return GPUtil.OpenFeatureLayerFromString(InMemFC)
Case Else
Return Nothing
End Select
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.ToString, "ReturnObjectfromResult error")
Return Nothing
End Try
End Function