Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
CA - AutoRefresh
Message
De
09/09/2005 11:39:52
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Visual FoxPro Beta
Versions des environnements
Visual FoxPro:
VFP 9
Divers
Thread ID:
00955384
Message ID:
01048162
Vues:
23
>Fabio
>
>>Solution:
>>If you want to use triggers and give the inserted identity
>>you have to write you all the commands to hand without parameters.
>>
>>If you want i can post a example that work.
>
>When you have some time, please post this example. I'm studying SQL and I will just put it in production when I find I'm ok with it!
>
>Thanks!
nAutoRefreshConn=SQLSTRINGCONNECT("DRIVER=SQL Server;SERVER=FABIO-NX7000\DEV;Trusted_Connection=Yes;database=tempdb")
IF nAutoRefreshConn<1
	RETURN
ENDIF

Local oCA As CursorAdapter
oCA=CREATEOBJECT("myCA")

TEXT TO CREATE NOSHOW
USE tempdb
IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1
IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2
CREATE TABLE T1 (
   Z_id  int IDENTITY(1,1)PRIMARY KEY,
   Z_name varchar(20) NOT NULL)
CREATE TABLE T2 (
   Y_id  int IDENTITY(100,5)PRIMARY KEY,
   Y_name varchar(20) NULL)

ENDTEXT

TEXT TO TRIGGER NOSHOW
CREATE TRIGGER T1_trig
ON T1
FOR INSERT AS 
   BEGIN
   INSERT T2 VALUES ('')
   END
ENDTEXT

IF SQLEXEC(nAutoRefreshConn,m.create)=1 AND SQLEXEC(nAutoRefreshConn,m.TRIGGER)=1 AND oCA.CursorFill()

	SET NULL OFF 
	* oCA.InsertCmdRefreshCmd="SELECT @@IDENTITY" && CursorAdapter returns a wrong number
	* oCA.InsertCmdRefreshCmd="SELECT z_id From t1 Where z_id = @@IDENTITY" && CursorAdapter returns an error: The refresh key defined for table is not found
	* oCA.InsertCmdRefreshCmd="SELECT z_id From t1 Where z_id = SCOPE_IDENTITY()" && CursorAdapter returns an error: The refresh key defined for table is not found

	INSERT INTO CATest (z_name) VALUES ('Rodolfo')
	INSERT INTO CATest (z_name) VALUES ('Denise')
	INSERT INTO CATest (z_name) VALUES ('Carol')

	IF !TABLEUPDATE(.T.)
	 	? "TABLEUPDATE is failed!!!"  
	   AERROR(aerrs)  
	   DISPLAY MEMORY LIKE aerrs  
	ELSE
		LIST 
	ENDIF
	oCA.CursorDetach
ENDIF
TEXT TO DESTROY NOSHOW
IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1
IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2
ENDTEXT
SQLEXEC(nAutoRefreshConn,m.DESTROY)
SQLDisconnect(nAutoRefreshConn)
BROWSE

DEFINE CLASS myCA AS CursorAdapter
	DataSourceType="ODBC"  
	DataSource= nAutoRefreshConn  
	Alias = "CATest"  
	BufferModeOverride= 5 
	SelectCmd="select * from t1"  
	CursorSchema="z_id I, z_name C(10)"    
	UseCursorSchema= .T.
	Tables="t1"
	UpdatableFieldList="z_name"
	UpdateNameList="z_id t1.z_id, z_name t1.z_name"
	InsertCmdRefreshFieldList="z_id"
	InsertCmdRefreshCmd="SELECT SCOPE_IDENTITY()"

PROCEDURE beforeInsert
LPARAMETERS cFldState, lForce, cInsertCmd
	cInsertCmd = STRTRAN(m.cInsertCmd,"?catest.z_name","'"+catest.z_name+"'",1)
ENDDEFINE
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform