private void MakeQueryTableLayer(Table leftTable, Table rightTable, string commaSeparatedFields) { var tables = IsLeftOuterJoin ? $"{leftTable.GetName()} LEFT OUTER JOIN {rightTable.GetName()} On {leftTable.GetName()}.{_leftField.Name} = {rightTable.GetName()}.{_rightField.Name}" : $"{leftTable.GetName()} INNER JOIN {rightTable.GetName()} On {leftTable.GetName()}.{_leftField.Name} = {rightTable.GetName()}.{_rightField.Name}"; var queryDef = new QueryDef { Tables = tables }; if (!string.IsNullOrEmpty(commaSeparatedFields)) { queryDef.SubFields = commaSeparatedFields; } var queryTableDescription = new QueryTableDescription(queryDef); var geodatabase = leftTable.GetDatastore() as Geodatabase; var queryTable = geodatabase.OpenQueryTable(queryTableDescription); LayerFactory.Instance.CreateFeatureLayer(queryTable as FeatureClass, MapView.Active.Map, 0, LayerName); }
protected override async Task <bool> OnSketchCompleteAsync(Geometry geometry) { try { var standaloneTable = await QueuedTask.Run(() => { ActiveMapView.SelectFeatures(geometry, SelectionCombinationMethod.New); var map = MapView.Active.Map; var mh = map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(m => m.Name == "Manholes"); var lines = map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault(s => s.Name == "Sewer Lines"); // Get the number of selections for manholes layer var selectedFeatures = map.GetSelection(); var mhSelectCount = mh.SelectionCount; var linesSelectCount = lines.SelectionCount; Uri path = new Uri("O:\\SHARE\\405 - INFORMATION SERVICES\\GIS_Layers\\[email protected]"); // If Manholes layer has selection, remove lines selection and query work history for manhole selected. if (mhSelectCount == 1) { lines.ClearSelection(); mhID = SysModule.GetManholeID(); //Uri path = new Uri("O:\\SHARE\\405 - INFORMATION SERVICES\\GIS_Layers\\[email protected]"); // Set up Geodatabase Object) using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(path))) { string queryString = $"MH_ID = '{mhID}'"; QueryDef queryDef = new QueryDef() { Tables = "SDE.sewerman.tblEAM_Manhole_Work", WhereClause = queryString, }; QueryTableDescription queryTableDescription = new QueryTableDescription(queryDef) { MakeCopy = true, Name = $"Manhole work history: {mhID}", PrimaryKeys = geodatabase.GetSQLSyntax().QualifyColumnName("SDE.sewerman.tblEAM_Manhole_Work", "MH_ID") }; var queryTable = geodatabase.OpenQueryTable(queryTableDescription); int count = queryTable.GetCount(); if (count == 0) { MessageBox.Show("Manhole selected has no work history."); return(null); } else { // Create a standalone table from the queryTable Table IStandaloneTableFactory tableFactory = StandaloneTableFactory.Instance; StandaloneTable whTable = tableFactory.CreateStandaloneTable(queryTable, MapView.Active.Map); return(whTable); } } } // Query work history forSewer Lines selection else if (linesSelectCount == 1) { pipeID = SysModule.GetPipeID(); //Uri path = new Uri("O:\\SHARE\\405 - INFORMATION SERVICES\\GIS_Layers\\[email protected]"); // Set up Geodatabase Object) using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(path))) { string queryString = $"PIPE_ID = '{pipeID}'"; QueryDef queryDef = new QueryDef() { Tables = "SDE.sewerman.tblEAM_Sewer_Work", WhereClause = queryString, }; QueryTableDescription queryTableDescription = new QueryTableDescription(queryDef) { MakeCopy = true, Name = $"Sewer line work history: {pipeID}", PrimaryKeys = geodatabase.GetSQLSyntax().QualifyColumnName("SDE.sewerman.tblEAM_Sewer_Work", "PIPE_ID") }; var queryTable = geodatabase.OpenQueryTable(queryTableDescription); int count = queryTable.GetCount(); if (count == 0) { MessageBox.Show("Sewer line selected has no work history."); return(null); } else { // Create a standalone table from the queryTable Table IStandaloneTableFactory tableFactory = StandaloneTableFactory.Instance; StandaloneTable whTable = tableFactory.CreateStandaloneTable(queryTable, MapView.Active.Map); return(whTable); } } } else if (linesSelectCount == 0 && mhSelectCount == 0) { MessageBox.Show("No manhole or sewer line was selected.\n\nTry selection again."); } else if (linesSelectCount > 1 && mhSelectCount == 0) { MessageBox.Show("More than one sewer line was selected. " + "\nPlease select a single sewer. " + "\nZooming in may help."); } else if (mhSelectCount > 1 && linesSelectCount == 0) { MessageBox.Show("More than one manhole was selected. " + "\nPlease select a single manhole. " + "\nZooming in may help."); } else if (mhSelectCount > 1 && linesSelectCount > 1) { MessageBox.Show("More than one sewer feature was selected. " + "\nPlease select a single feature. " + "\nZooming in may help."); } return(null); }); // Open the standalone table pane FrameworkApplication.Panes.OpenTablePane(standaloneTable, TableViewMode.eAllRecords); } catch (Exception ex) { SysModule.LogError(ex.Message, ex.StackTrace); string caption = "Error Occured"; string message = "Process failed.\nSave and restart ArcGIS Pro and try process again.\n" + "If problem persist, contact your GIS Admin."; //Using the ArcGIS Pro SDK MessageBox class MessageBox.Show(message, caption); } return(true); //return base.OnSketchCompleteAsync(geometry); }
protected override async Task <bool> OnSketchCompleteAsync(Geometry geometry) { try { StandaloneTable standaloneTable = await QueuedTask.Run(() => { ActiveMapView.SelectFeatures(geometry, SelectionCombinationMethod.New); var map = MapView.Active.Map; var linesLayer = map.GetLayersAsFlattenedList().OfType <FeatureLayer>().FirstOrDefault((m => m.Name == "Sewer Lines")); // Get the currently selected features in the map var selectedFeatures = map.GetSelection(); var selectCount = linesLayer.SelectionCount; if (selectCount == 0) { MessageBox.Show("No Sewer Line was selected.\n\nTry selection again."); } else if (selectCount > 1) { MessageBox.Show("More than one sewer line was selected.\n" + "Try selecting sewer line again.\nZooming in may help."); } else { pipeID = SysModule.GetPipeID(); if (!string.IsNullOrEmpty(pipeID)) { Uri path = new Uri("O:\\SHARE\\405 - INFORMATION SERVICES\\GIS_Layers\\[email protected]"); // Set up Geodatabase Object) using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(path))) { string queryString = $"PIPE_ID = '{pipeID}'"; QueryDef queryDef = new QueryDef() { Tables = "SDE.sewerman.tblEAM_PM", WhereClause = queryString, SubFields = "PIPE_ID, TASK, PREVDATE, NEXTDATE, INTERVAL, UNIT, OBJECTID", }; QueryTableDescription queryTableDescription = new QueryTableDescription(queryDef) { MakeCopy = true, Name = $"Preventive Maintenance: {pipeID}", PrimaryKeys = geodatabase.GetSQLSyntax().QualifyColumnName("SDE.sewerman.tblEAM_PM", "PIPE_ID") }; Table queryTable = geodatabase.OpenQueryTable(queryTableDescription); int count = queryTable.GetCount(); if (count == 0) { MessageBox.Show("Sewer line selected has no preventive maintenance scheduled."); } else { // Create a standalone table from the queryTable Table IStandaloneTableFactory tableFactory = StandaloneTableFactory.Instance; StandaloneTable pmTable = tableFactory.CreateStandaloneTable(queryTable, MapView.Active.Map); return(pmTable); } } } ; } return(null); }); // Open the standalone table pane FrameworkApplication.Panes.OpenTablePane(standaloneTable, TableViewMode.eAllRecords); } catch (Exception ex) { SysModule.LogError(ex.Message, ex.StackTrace); string caption = "Error Occured"; string message = "Process failed.\nSave and restart ArcGIS Pro and try process again.\n" + "If problem persist, contact your GIS Admin."; //Using the ArcGIS Pro SDK MessageBox class MessageBox.Show(message, caption); } return(true); }
protected override async Task <bool> OnSketchCompleteAsync(Geometry geometry) { try { var standaloneTable = await QueuedTask.Run(() => { ActiveMapView.SelectFeatures(geometry, SelectionCombinationMethod.New); slComp = Module1.GetCompkey(); if (!string.IsNullOrEmpty(slComp)) { Uri path = new Uri("O:\\SHARE\\405 - INFORMATION SERVICES\\GIS_Layers\\[email protected]"); // Set up Geodatabase Object) using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(path))) { string queryString = $"COMPKEY = {slComp}"; QueryDef queryDef = new QueryDef() { Tables = "SDE.sewerman.tblV8PMTOOL", WhereClause = queryString, }; QueryTableDescription queryTableDescription = new QueryTableDescription(queryDef) { MakeCopy = true, Name = $"Preventive Maintenance: {slComp}", PrimaryKeys = geodatabase.GetSQLSyntax().QualifyColumnName("SDE.sewerman.tblV8PMTOOL", "COMPKEY") }; var queryTable = geodatabase.OpenQueryTable(queryTableDescription); int count = queryTable.GetCount(); if (count == 0) { MessageBox.Show("Sewer line selected has no preventive maintenance scheduled."); } else { // Create a standalone table from the queryTable Table IStandaloneTableFactory tableFactory = StandaloneTableFactory.Instance; StandaloneTable pmTable = tableFactory.CreateStandaloneTable(queryTable, MapView.Active.Map); return(pmTable); } } } ; //return base.OnSketchCompleteAsync(geometry); return(null); }); // Open the standalone table pane FrameworkApplication.Panes.OpenTablePane(standaloneTable, TableViewMode.eAllRecords); } catch (Exception) { string caption = "Error Occured"; string message = "Process failed! \nSave and restart ArcGIS Pro and try process again.\n" + "If problem persist, contact your local GIS nerd."; //Using the ArcGIS Pro SDK MessageBox class MessageBox.Show(message, caption); } return(true); }