MapInfo Pro 23 – Table Read-Only Error when Updating Object Styles via Joined Table (Regression from Older Versions)

50 views
Skip to first unread message

Ashutosh Kumar

unread,
Jul 9, 2026, 2:46:53 AMJul 9
to MapInfo-L
Hi,
Issue Summary:
I am attempting to update the object styles of a point table (POITAB) using style parameters (font, size, color, file name) stored in a reference style table (POISTYLE).
  • POITAB (Point data) is fully editable (Read/Write).
  • POISTYLE (Style definitions) is a read-only reference table.
The Problem:
When joining these two tables on their matching key columns (ETR_CRY to MSTR_CODE and SUB_CRY to MISTR_SUBCOD) into a temporary query table (Temp1), MapInfo Pro 23 implicitly locks the entire query output as read-only.
Because one of the parent source tables is read-only, running the following spatial update statement fails with an "Error: Temp1 is readonly" restriction:
sql

Select poitab.obj from POITAB, POISTYLE where POITAB. ETR_CRY-POISTYLE MSTR_CODE and POITAB SUB CRY-POISTYLE MIR SUBCOD into Templ NoSelect

Update Temp1 SET obj = Setobjectstyle(obj, FONT, SYMBOL_SIZE, COLOR_CDE, SYMBOL_CDE, FILE_NAME)

Important Context:
This exact code worked completely fine ,fast and perfect in previous versions of MapInfo Pro. The software used to allow editing on the editable components of a query join, but version 23 appears to strictly lock down the query table if any part of the join is read-only Tables You Cannot Update.
Goal:
I need a clean workaround or fix to bypass this version-specific join restriction As it work fast .so I can safely update the editable point geometries using the read-only reference data.

Thanks

Uffe Kousgaard

unread,
Jul 9, 2026, 4:18:06 PMJul 9
to mapi...@googlegroups.com
Hi,

If it works with a read-write copy of your POIstyle table, then that may be the solution.

You may have been lucky that it worked in previous MapInfo versions.

Regards
Uffe Kousgaard
--
--
You received this message because you are subscribed to the
Google Groups "MapInfo-L" group.To post a message to this group, send
email to mapi...@googlegroups.com
To unsubscribe from this group, go to:
http://groups.google.com/group/mapinfo-l/subscribe?hl=en
For more options, information and links to MapInfo resources (searching
archives, feature requests, to visit our Wiki, visit the Welcome page at
http://groups.google.com/group/mapinfo-l?hl=en

---
You received this message because you are subscribed to the Google Groups "MapInfo-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mapinfo-l+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/mapinfo-l/a2680074-4ca1-45ba-bab1-17cef7d47643n%40googlegroups.com.

Peter Horsbøll Møller

unread,
Jul 20, 2026, 12:16:41 PM (11 days ago) Jul 20
to mapi...@googlegroups.com, MapInfo-L
Hey

I noticed that you don’t include the additional columns from your read-only style table in your join.

Select poitab.obj from POITAB, POISTYLE where POITAB. ETR_CRY-POISTYLE MSTR_CODE and POITAB SUB CRY-POISTYLE MIR SUBCOD into Templ NoSelect

Update Temp1 SET obj = Setobjectstyle(obj, FONT, SYMBOL_SIZE, COLOR_CDE, SYMBOL_CDE, FILE_NAME)
Does including those make any difference?

Alternatively, you could include all the columns from the POITAB table and the Style columns from the POISTYLE table in your query, save the query into a new Native table, open this new Native table, update this with the SetObjectStyle() function, save the table, remove the Style columns and finally overwrite the original POITAB with this table.

You’d have to ensure the new table holds all the rows from the original table before overwriting it.

You’d could also create a new version of the SetObjectStyle() that takes the object and an ID and uses the ID to get the styles.

Using the later approach avoids the need for joining the two tables.

Just a few things to try

Peter Horsbøll Møller
Peter Horsbøll Møller
Principal Sales Engineer - Distinguished Engineer

 


Den 9. jul. 2026 kl. 08.47 skrev Ashutosh Kumar <ashuto...@gmail.com>:


You don't often get email from ashuto...@gmail.com. Learn why this is important

This message originated Externally. Use proper judgement and caution with attachments, links, or responses.


--

Ashutosh Kumar

unread,
Jul 21, 2026, 1:22:37 AM (10 days ago) Jul 21
to MapInfo-L

Hi,

Thank you for your reply and suggestions @Peter Horsbøll Møller, @Uffe Kousgaard

Sorry for the typo in my previous email. The actual query is:

Select * from POITAB, POISTYLE where POITAB.FTR_CRY = POISTYLE.MSTR_CODE and POITAB.SUB_CRY = POISTYLE.MTR_SUBCOD into Temp1 Update Temp1 Set obj = SetObjectStyle(obj, FONT, SYMBOL_SIZE, COLOR_CDE, SYMBOL_CDE, FILE_NAME)

In previous versions of MapInfo Pro, I did not need to save the query result into a new native table or rewrite the data. Updating the obj column in Temp1 automatically updated the corresponding records in POITAB, which made the process very fast and efficient.

I understand that rewriting the table is a possible workaround. However, in my case the query often contains only the matching records. If I create a new table from the query, it will contain only the selected rows, and I would then need to merge or insert the non-matching records back into the table before replacing the original POITAB. This adds additional processing and complexity compared to the previous behavior.

Could you please provide more details about your suggestion to "create a new version of the SetObjectStyle() function that takes the object and an ID and uses the ID to retrieve the styles"?

I'm particularly interested in understanding how this approach would retrieve the style information from the reference table without requiring a join, and whether you have an example implementation or MapBasic sample that demonstrates this technique.

Thank you again for your guidance.

Peter Horsbøll Møller

unread,
Jul 22, 2026, 9:38:29 AM (9 days ago) Jul 22
to mapi...@googlegroups.com, MapInfo-L
There’s a few ways to do this.

Depending on the number og unique ID I would read all the IDs and styles into a few array and use these to look up the style for an ID.

When you find the ID in the ID array, the style attributes are at the same position in the other arrays.

You can also use SQL to find the ID in the Styles table for each ID.

In both cases, you create a style, assign this to the object and finally return the altered object.

I’m back at my desk Monday where I can create an actual implementation if needed.

Did you jump from a pre-2019 version to the latest version? We did several improvements to our SQL in v2019, and I wonder if one of these improvements changed this behaviour.
   

Peter Horsbøll Møller

unread,
Jul 30, 2026, 5:21:51 AM (yesterday) Jul 30
to mapi...@googlegroups.com
I gave it a shot.

The idea in the new application is to first order all the POIs by the two code columns.
Then you update the ordered query which makes the same codes come in order.

In this way, you don't need to get the style details from the POIStyle table for each record, only when the codes change.

The new function reads the style detail from the POIStyle table and stores these with the current code.
Next time the function is called, it compares the current codes to the previous codes.
Only if they differ, the style details are read from the POIStyle again. Otherwise, it uses the details that have been stored.

The new function also uses your current function to actually change the style of the objects.

I have attached a file with the new code.

Please ensure that I have used the correct variable types (string/integer) for the code columns and for the style columns. The column types must match the variable types.

Cheers
Peter

Peter Horsbøll Møller
Principal Sales Engineer - Distinguished Engineer

 


From: 'Peter Horsbøll Møller' via MapInfo-L <mapi...@googlegroups.com>
Sent: Wednesday, July 22, 2026 15:38
To: mapi...@googlegroups.com <mapi...@googlegroups.com>
Cc: MapInfo-L <mapi...@googlegroups.com>
Subject: Re: [MI-L] MapInfo Pro 23 – Table Read-Only Error when Updating Object Styles via Joined Table (Regression from Older Versions)
UpdateStylePOI.mb
Reply all
Reply to author
Forward
0 new messages