I have created Views in Oracle 8.1.5 that are subsets (SQL) of an Oracle
Spatial table.  

The views can be displayed correctly in MapInfo if you select 'Download Data
(Linked Table)' in the 'Open DBMS Table - Step 4 of 4' dialog box.  The
displayed view is (as expected) read only since there is no Primary Index on
the view.

If I uncheck 'Download Data (Linked Table)' (ie. direct access) and either
select or don't select 'Cache' I get the message:
        'Cannot open table for live access.  A single Key Column is required
on the table. Unable to open table xxx'.

Question 1:     Is there anyway of displaying an Oracle View as a direct
access table in MapInfo?

Question 2:     What about displaying the same Oracle View in MapXtreme for
Java?

In MapXtreme I am using the following class: 

OraSoTableDescHelper(java.lang.String tableName, java.lang.String query,
java.lang.String geoTable, java.lang.String geoTableAlias, java.lang.String
idColumn, java.lang.String ownerName, boolean bUseQuotes) 

with parameters:

        OraSoTableDescHelper("MAP_VIEW", null, "MAPINFO_MAPCATALOG", null,
"PRINX",  _User, false));

where:  MAP_VIEW = a view within Oracle
        
The following exception was thrown when it came to inserting a layer into
MapJ:

        java.lang.Exception: Syntax error on line 1
        at com.mapinfo.util.m.matchtok([DashoPro-V1.2-120198])
        at com.mapinfo.util.ParamList.read([DashoPro-V1.2-120198])
        at com.mapinfo.util.ParamList.read([DashoPro-V1.2-120198])
        at com.mapinfo.util.ParamList.<init>([DashoPro-V1.2-120198])
        at
com.mapinfo.mapxtreme.client.MapXtremeDataProvider.getTableInfo([DashoPro-V1
.2-120198])
        at com.mapinfo.mapj.Layer.getTableInfo([DashoPro-V1.2-120198])
        at com.mapinfo.mapj.Layers.a([DashoPro-V1.2-120198])
        at com.mapinfo.mapj.Layers.a([DashoPro-V1.2-120198])
        at com.mapinfo.mapj.Layers.insert([DashoPro-V1.2-120198])
        at au.gov.sa.siis.gui.MapPanel.insertLayer(MapPanel.java:584)
        at au.gov.sa.siis.gui.MapPanel.setBaseMap(MapPanel.java:696)
        at au.gov.sa.siis.gui.MapPanel.init(MapPanel.java:172)
        at au.gov.sa.siis.gui.MapPanel.<init>(MapPanel.java:127)
        at
au.gov.sa.siis.gui.DiscoveryQueryPanel.jbInit(DiscoveryQueryPanel.java:194)
        at
au.gov.sa.siis.gui.DiscoveryQueryPanel.init(DiscoveryQueryPanel.java:121)
        at sun.applet.AppletPanel.run(AppletPanel.java:344) 
        at java.lang.Thread.run(Thread.java:484)

Question 3:     Is it possible to substitute a View for a Table using the
above class?

Another form of using the OraSoTableDescHelper class is:

        String sql = null;
        sql = "Select
GEOM,HEIGHT,ROTATION,TEXTSTRING,MAP_NUM,NAME,SCALE,PRINX From MAP_SHEETS
Where SCALE = 50000";

        OraSoTableDescHelper(null, sql , null, null, "PRINX",  _User,
false));

With this, a map layer was inserted into VisualMapJ and was displayed in the
map window, however, when it came to using the MapLayerControl, this layer
(name)
was not listed.  Obviously, from the syntax above, it does not appear that
any form of identifcation could be made from the dataset retrieved.

Question 4:     How do we identify the query as a Layer?

Question 5:     Is there a way to notify the MapLayerControl of the new
layer?

Thanks in advance for any advice.


Christopher Prescott
Geospatial International Pty. Ltd.

At Fujitsu:
Spatial Integrated Information Services (SIIS) Project

Phone:  (08) 8372 3308
Mobile: 0417 856 109
email:  [EMAIL PROTECTED]

----------------------------------------------------------------------
To unsubscribe from this list, send e-mail to [EMAIL PROTECTED] and put
"unsubscribe MAPINFO-L" in the message body, or contact [EMAIL PROTECTED]

Reply via email to