Hi, Edmond!
The best way to see format of properties you require to set to make SQL Pass-Through cursor updatable is following:
- create remote view and make
- open it
- use CursorGetProp to see all properties
You will see how VFP handles such situations for remote views. Than you can use these values for your cursor.
HTH.
>I am having a problem with updating an Access table from a VFP table when the Access table has a space in the name. My code works fine if there is no space in the table name but bombs if there is a space no matter what I do.
>
>I don't show it here but my code has no problems when there are spaces in the field names. It is spaces in the table names that is giving me problems.
>
>The over-simplified and edited code looks something like this.
>
>***START
>
>gnConnHand=SQLSTRINGCONNECT(lcConnString)
>=SQLSETPROP(gnConnHand, "Asynchronous", .T. ) && Needed for long table names.
>lnPrepare = SQLPrepare(gnConnHand, lcSQLString, 'cRemoteView')
>lnExec = SQLExec(gnConnHand)
>SELECT cRemoteView
>
>*|
>*| Make the Access cursor Updatable.
>*|
>*| The Access table that we want to update.
>=CURSORSETPROP("Tables", lcTable)
>*| List of Acces fields with table alias
>=CURSORSETPROP("UpdateNameList",lcUpNameLst)
>*| The key field used to match both the Access and dbf tables.
>=CURSORSETPROP("KeyFieldList",lcKeyField)
>*|List of Access fields to update w/o alias'
>=CURSORSETPROP("UpdatableFieldList",lcAccessFields)
>*| Do the updates.
>=CURSORSETPROP("SendUpdates",.T.)
>
>SELECT VFP_Table
>SCAN
> SCATTER MEMO TO aTransfer
> SELECT cRemoteView
> GATHER MEMO FROM aTransfer
> *| The original Access record will be updated as soon as you move off of the cursor record.
> SKIP 1
> SELECT VFP_Table
>ENDSCAN
>
>***END
>
>Basically the memvars look something like this:
>
>lcTable = "Access Table"
>lcUpNameLst = "field1 ACCESS TABLE.FIELD1,field2 ACCESS TABLE.FIELD2"
>lcKeyField = "ID"
>lcAccessFields = "FIELD1,FIELD2"
>
>With the lcUpNameLst memvar in the above configuration I get an error on the line
>=CURSORSETPROP("UpdateNameList",lcUpNameLst)
>which says "Invalid Update Column Name "Table".
>Obviously the space is making the command see the next word after the space as a column name and not part of the table name.
>
>If I change lcUpNameLst to the form:
>lcUpNameLst = "field1 [ACCESS TABLE.FIELD1],field2 [ACCESS TABLE.FIELD2]"
>
>using the brackets as quotes to isolate the table name, I get an error on the command SKIP 1 that says
>"No Update tables are specified. Use the Tables property of the cursor."
>
>I have tried [Access Table].field1
>I have tried lcTable = "[Access Table]"
>
>but no matter what I try I will get an error on one of the two lines.
>
>Can anybody offer a clue as to what I may be doing wrong?
>
>TIA
>
>Ed
Vlad Grynchyshyn, Project Manager, MCP
vgryn@yahoo.comICQ #10709245
The professional level of programmer could be determined by level of stupidity of his/her bugs
It is not appropriate to say that question is "foolish". There could be only foolish answers. Everybody passed period of time when knows nothing about something.