The trick I use is to make the selection before you add the column, thus it only works on the selected records.
Make a selection using SQL of the joined tables and update that. ie.
Select _RowID, MyID, DestinationField, SourceField
From Table_A, Table_B Where Where _RowID = MyID
Into UpdateList
Add Column UpdateList(DestinationField)
From UpdateList
Set To SourceFieldR
On Tue, 11 Nov 2003 17:57:34 +1100, Peter Zyczynski <[EMAIL PROTECTED]> wrote:
Alright, the problem is definitely with joining on RowID from Table_A.
Got around this by creating a new column called _RowID in Table_A and populated it with RowID, and join on that.
BUT a new problem arises, it appears the where clause is ignored - All rows
in Table_A get updated, rather than just the ones limited to the where
clause. Confused? I am.
The code now looks like this: '----------------------------------- sub main ' Create a temporary _RowID column in Table_A. Alter Table "Table_A" ( add _RowID Integer )
' Populate the new _RowID field. Update Table_A Set _RowID = RowID
' Update Table_A with values from Table_B. Add Column Table_A (DestinationField) From Table_B Set To (SourceField) Where _RowID = MyID ' The above statement updates all records in ' Table_A, rather than just where they join to Table_B.
' Remove the temporary _RowID field. Alter Table "Table_A" ( drop _RowID ) end sub '-----------------------------------
I was hoping to avoid doing any select queries and just do the operation in
one update query, got 200K+ records, also this operation will be run
regularly so the least number of select/update queries the better.
Cheers, Peter Zyczynski
-----Original Message----- From: Peter Zyczynski [mailto:[EMAIL PROTECTED] Sent: Tuesday, 11 November 2003 2:52 PM To: [EMAIL PROTECTED] Subject: MI-L MBX - Add Column statement - MI crashes in a heap!
Help!
Trying to update "DestinationField" in "Table_A" with values from
"SourceField" in "Table_B", Mapinfo spits out the following error and shuts
down:
"The instruction at "0x00515248" referenced memory at "0x00080101". The memory could not be "read". Click OK to terminate, CANCEL to debug."
To keep things simple I whipped up this little sample:
'----------------------------------- sub main
Add Column Table_A (DestinationField) From Table_B Set To (SourceField) Where RowID = MyID
end sub '-----------------------------------
I tried doing the above statement from within Mapinfo in the Mapbasic window
but the effect is the same - CRASHOLA!
I have a suspicion that its because I'm joining on RowID, ie: Table_A.RowID = Table_B.MyID
So, is it me, is it Mapinfo, or is it both of us?
Cheers,
Peter Zyczynski Analyst Programmer Insight GIS Australia Ph: (03) 6234-5833 Fax: (03) 6234-5899 [EMAIL PROTECTED] www.insightgis.com.au
--------------------------------------------------------------------- List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 9099
--------------------------------------------------------------------- List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 9103
--
Robert Crossley Agtrix P/L 9 Short St New Brighton 2483 Far Southern Queensland AUSTRALIA
153.549004 E 28.517344 S
P: 02 6680 1309 F: New Connection M: 0419 718 642 E: [EMAIL PROTECTED] W: www.agtrix.com W: www.wotzhere.com
--------------------------------------------------------------------- List hosting provided by Directions Magazine | www.directionsmag.com | To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] Message number: 9104
