ThinkGeo.com    |     Documentation    |     Premium Support

MssqlFeatureLayer and Stored procedure

Hi 


I have a question about MssqlFeatureLayer.


 


With MssqlFeatureLayer, we can see all the polygons recorded in one table of a database.We can use WhereClause if we want to select polygons but the whereclause is possible only on the columns of the table used in MssqlFeatureLayer.


But in my case, I want to select polygons with a Stored procedure (because I use various tables (join) to select polygons). Is It possible using Stored procedure and a mssqlFeatureLayer ?
 
I Hope my explanation is clear, if it's not let me know.
 
Thanks.
 
Regards.
 
Stéphanie.
 

Hello Steph, 
  
 Thanks for your post, yes it’s possible to search with Stored procedure, our MsSqlFeatureLayer only provide a way to operate the database but we do not change any sql operation, that’s means you can organize the Sql statement as you want. 
  
 Let us know if you still have queries or meet any problem on this. 
  
 Regards, 
  
 Gary

Hi Gary,  
  
 Thanks for your answer. 
 But I don’t know how call a stored procedure and see the feature selected (with the stored proc) in a mssqlFeatureLayer. 
 The stored procedure are recorded in the database. 
  
 For example with a view (cntry02view), we can do :  
 sql2008Layer = new MsSql2008FeatureLayer(connectString, “cntry02view”, “FID”); 
 sql2008Layer.Open(); 
 Collection<Feature> rr = sql2008Layer.FeatureSource.GetAllFeatures(ReturningColumnsType.AllColumns); 
 sql2008Layer.Close(); 
 And we can see only features of the view. 
  
 Thanks. 
  
 Regards. 
 Steph.

Hello Steph, 
  
 There is a QueryTools.ExecuteQuery method in the MsSql2008FeatureLayer, so with this method, you can execute a sql statement directly, this sql statement should be how you search the result from your stored procedure. 
  
 And the way you list is just a default way that we will combined the sql statement depend on the table name, column name you provided. 
  
 Regards, 
  
 Gary

Hello Gary, 
  
 Thanks a lot for your help.  
  
 Regards.  
  
 Steph.

Hi Steph, 
  
 You’re welcome, if you have any questions please let us know. 
  
 Regards, 
  
 Edgar

Hi Edgar or Gary:

Could you guys post some code snippet to help us to see how it actually works?



Thanks,

Adrian 

Hi Adrian, 
  
 Following statements will express how to query a MSSql 2008 table with QueryTools: 
  
  
             string connectString = "Data Source=192.168.0.58,1041;Initial Catalog=DatabaseName;Persist Security Info=True;User ID=username;Password=password"; 
             MsSql2008FeatureLayer sql2008Layer = new MsSql2008FeatureLayer(connectString, "states", "recid"); 
             sql2008Layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1; 
             sql2008Layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
  
             sql2008Layer.Open(); 
             DataTable table = sql2008Layer.QueryTools.ExecuteQuery("select * from Countries_02"); 
             sql2008Layer.Close(); 
             LayerOverlay staticOverlay = new LayerOverlay(); 
             staticOverlay.Layers.Add("Sql2008Layer", sql2008Layer); 
             winformsMap1.Overlays.Add(staticOverlay); 
  
             winformsMap1.Refresh(); 
  
  
 Thanks 
  
 Don