Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
SQL Pass Through to Acess Tables with spaces in name
Message
General information
Forum:
Visual FoxPro
Category:
Client/server
Miscellaneous
Thread ID:
00438571
Message ID:
00438695
Views:
12
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.com
ICQ #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.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform