After many tries, I finally succeeded to share a connection for cursor
adapters.
In the load event of a form I do this:
thisform.nHandle = SQLConnect([TEST]) && named connection (TEST)
I create several adapter methods in the form, one for each cursor adapter I
want to generate and set all the applicable properties manually (ie,
updatenamelist, updatablefieldlist, keyfieldlist, select command)
The following properties, for each one of the cursor adapters thus created,
should read like this:
thisform.oCA .DataSourceType = "ODBC"
thisform.oCA .datasource = thisform.nHandle
thisform.oCA1 .DataSourceType = "ODBC"
thisform.oCA1 .datasource = thisform.nHandle
( a different object for each CA, ie oCA1,oCA2, etc.)
For each one of the cursor adapters I capture the connection handle, just to
verify that they all use the same connection and put them in textboxes on
the form:
thisform.text1.Value = CursorGetProp("ConnectHandle" ,'curClientes')
thisform.text2.Value = CursorGetProp("ConnectHandle" ,'curArticulos')
etc
That's all there is to it !
When the form instantiates, I can see in the textboxes that both CA's share
the same connection.
By the way, if I issue the following statement, I get a VFP message saying
that the property is readonly
SQLSetProp(0,"Shared",.T.)
(why would a property supposedly to be set by SQLSetProp be readonly? If it
cannot be set, why is it a property of a setting function? I can't
understand that.)
Now that I use one single connection for all CA's I can use transactions on
the server, like this:
** form SAVE method
#DEFINE DB_TRANSAUTO 1 && from foxpro.h
#DEFINE DB_TRANSMANUAL 2
Local lOK
SQLSetProp(thisform.nHandle, "TRANSACTIONS", DB_TRANSMANUAL)
lOK = .f.
If TableUpdate(.t.,.f.,'curClientes')
If TableUpdate(.t.,.f.,'curArticulos')
lOK = .t.
EndIf
EndIf
If lOK = .t.
SQLCommit(thisform.nHandle)
Else
SQLRollback(thisform.nHandle)
endif
SQLSetProp(thisform.nHandle, "TRANSACTIONS", DB_TRANSAUTO)
Rafael Copquin
----- Original Message -----
From: "Grigore Dolghin" <[email protected]>
To: <[email protected]>
Sent: Thursday, April 30, 2009 7:32 PM
Subject: Re: vfp9 and sql server express
Issue the following line somewhere in the beginning of your program
(before connecting to SQL Server):
SQLSetProp(0,"Shared",.T.)
This will force VFP to force first connection that will be made to be
shared.
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message:
http://leafe.com/archives/byMID/profox/6630416cd0c642a3a2b4ef848061e...@rafael
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.