The culprit is that the we cannot detect that the result table of the view has a unique field (no BTREExxx index).
There are two ways to go:
1. (Quick and dirty) Open the view (filter_rickh_1) and run it (View - Run). In the result table, right-click on the unique field and select Use as Identity. This will make the result table of the view editable, and this will carry to all components based on that view.
2. (Without views) With the SQL Server database linked as a data source, in the MAP file = on the same level as the data source, create a new query and set its text to:
SELECT * FROM [sqlserver]::[dbo.geom_of_fields]
WHERE [company_id] = '011900';
...with 'sqlserver' being the name of the data source. Run the query. The result table should be editable and should have a spatial index as long as 'geom_of_fields' has it.
Modify the query to cache data for performance (can also create a second query to call the first one):
TABLE CALL TableCache(
(SELECT * FROM [sqlserver]::[dbo.geom_of_fields]
WHERE [company_id] = '011900'),
TRUE -- this allows writing through the cache into the database
...then run the query to make sure it works. Right-click the query in the Project pane, select Create - New Drawing, select the geometry field, specify coordinate system, click OK.
You can now work with the drawing. It will only have objects for the company_id you specified, with the filtering for company_id being done on the database, accelerated by any indexes it might have. Opening the drawing will fetch all data for the specified company_id into the cache, with the spatial index built on just the fetched data, to make renders / pans / zooms and other operations in the map window fast. The drawing is editable, all changes go through the cache into the database. And there are no views.
Hope this helps.