ThinkGeo.com    |     Documentation    |     Premium Support

QueryTools

Hi,


I´m trying to use Feature.QueryTools.GetFeaturesByColumnValue, but I´m getting an error message complaining that the value I´m asking for is empty (equal string.Empty). However, I have null values and empty values in a column, so ot makes sense to look after string.Empty (or even null) values.


How can I do that?


Thanks in advance,


Mauro

 




Mauro, 
  
   What kind of layer are you calling the API from.  Are you dealing with shape files, Oracle etc? 
  
 David

Hi David, 
  
 In fact, I´m dealing with shapefiles, MS-SQL Spatial and, in a near feature, Oracle. I´m a forestry mamagemente software provider, and I support those platforms in my applications. 
  
 Tks, 
  
 Mauro

Mauro, 
  
   I was curious to see if this was an issue with one particular provider.  Can you paste in the stack trace of the error?  I just want to verify the issue and then we can take a look at the code.  I think this is probably an overly aggressive validation on our part.  We internally validate every parameter that gets passed in from a public API.  Sometimes, as I think in this case, the validation is incorrect and we missed a case.  The stack trace will verify that for me.  Thanks for pointing this out and if this is the issue I think it is we can have a fix for it tomorrow.  We will let you know and the fixed version will be available through our daily build process. 
  
 David

David, 
  
 The problem happens in both providers, shapefile and SQLServer2008. Below, the error stack. 
  
 Mauro 
  
 System.ArgumentException was unhandled 
   Message=The parameter you supplied may not be empty. 
 Parameter name: columnValue 
   Source=MapSuiteCore 
   ParamName=columnValue 
   StackTrace: 
        at ThinkGeo.MapSuite.Core.x6d719af406ea4c2c.x1ac6c2d855f88779(String x85e45b7c00cd9a1a, String x34decc57f0820440) 
        at ThinkGeo.MapSuite.Core.QueryTools.GetFeaturesByColumnValue(String columnName, String columnValue) 
        at GISDataMining.MainForm.gvThemes_FocusedRowChanged(Object sender, FocusedRowChangedEventArgs e) in D:\KerSys\Projects\GISDataMining\GISDataMining\MainForm.cs:line 1210 
        at DevExpress.XtraGrid.Views.Base.ColumnView.RaiseFocusedRowChanged(Int32 prevFocused, Int32 focusedRowHandle) 
        at DevExpress.XtraGrid.Views.Base.ColumnView.DoChangeFocusedRowInternal(Int32 newRowHandle, Boolean updateCurrentRow) 
        at DevExpress.XtraGrid.Views.Base.ColumnView.set_FocusedRowHandle(Int32 value) 
        at DevExpress.XtraGrid.Views.Grid.Handler.GridRegularRowNavigator.OnMouseDown(GridHitInfo hitInfo, DXMouseEventArgs e) 
        at DevExpress.XtraGrid.Views.Grid.Handler.GridHandler.OnMouseDown(MouseEventArgs ev) 
        at DevExpress.Utils.Controls.BaseHandler.ProcessEvent(EventType etype, Object args) 
        at DevExpress.XtraGrid.Views.Base.Handler.BaseViewHandler.ProcessEvent(EventType etype, Object args) 
        at DevExpress.XtraGrid.GridControl.OnMouseDown(MouseEventArgs ev) 
        at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks) 
        at System.Windows.Forms.Control.WndProc(Message& m) 
        at DevExpress.XtraEditors.Container.EditorContainer.WndProc(Message& m) 
        at DevExpress.XtraGrid.GridControl.WndProc(Message& m) 
        at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
        at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
        at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
        at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
        at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) 
        at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
        at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
        at System.Windows.Forms.Application.Run(Form mainForm) 
        at GISDataMining.Program.Main() in D:\KerSys\Projects\GISDataMining\GISDataMining\Program.cs:line 27 
        at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
        at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
        at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
        at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
        at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
        at System.Threading.ThreadHelper.ThreadStart() 
   InnerException:  
  


Mauro, 
  
 I conform this problem is caused by our  internally validators, there is a validator checks if columnValue is not null or empty, it will throw exception when the columnValue is null or empty. We can remove this validator to fix your problem. 
  
 Thanks 
 James

Please do this, James. As GetFeaturesByColumnValue columnValue parameter is string it could be nice if , in the database-based providers, you consider database null values as empty strings as well, that is, when I pass string.Empty in columnValue you return me back records containing empty and null values as well.


Thanks again!


Mauro



Mauro, 
  
 I have a good news to you, I tested MapSuiteCore with version "4.0.115.0" and it supports empty string for GetFeaturesByColumnValue method, so you can get this verison package at custom portal. 
  
 Please let me know if you have another questions. 
  
 James