Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
CursorAdapter bugs.
Message
From
03/01/2003 09:30:04
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Other
Title:
CursorAdapter bugs.
Miscellaneous
Thread ID:
00737652
Message ID:
00737652
Views:
85
Problem using CursorAdapter and
.BufferModeOverride = 5 - Optimistic table buffering .

Data base MySQL.
The command TABLEUPDATE(1,.T.) is not executed.

But :
• The command TABLEUPDATE(1,.F.) is executed.
• If I use Remote View then the command TABLEUPDATE(1,.T.) is executed.

Example.

PUBLIC loCursor As CursorAdapter
Local lcConnString
LOCAL ARRAY laErrors[1]
lcConnString='DRIVER={MySQL};DESC=;DATABASE=foxtest;'+;
'SERVER=18.29.77.131;UID=vvvvvv;PASSWORD=;PORT=3306;OPTION=3;STMT;'

** or 'driver= {MySQL ODBC 3.51 Driver}
**change password to appropriate value for your database

loCursor = Createobject('CursorAdapter')

With loCursor
.DataSourceType = 'ODBC'
.Datasource = Sqlstringconnect(lcConnString)
.UpdateType = 1 &&Update old data with new data.
.UseDeDataSource = .F.
.SelectCmd = "select banks.BANK_ACC, banks.BANK_CODE, banks.BANK_FIL, banks.BANK_ID, banks.BANK_NAME, banks.LCH_DATE, banks.USER_ID from foxtest.banks"
.CursorSchema = "BANK_ACC C(25), BANK_CODE C(25), BANK_FIL C(50), BANK_ID I, BANK_NAME C(50), LCH_DATE T, USER_ID I"
.Alias = "loCursor"
.BufferModeOverride = 5 && Optimistic table buffering.
.WhereType = 1
.KeyFieldList = "BANK_ID"
.Tables = "BANKS"
.UpdatableFieldList = "BANK_ACC,BANK_CODE,BANK_FIL,BANK_ID,BANK_NAME,LCH_DATE,USER_ID"
.UpdateNameList = "BANK_ACC BANKS.BANK_ACC,BANK_CODE BANKS.BANK_CODE,BANK_FIL BANKS.BANK_FIL,BANK_ID BANKS.BANK_ID,BANK_NAME BANKS.BANK_NAME,LCH_DATE BANKS.LCH_DATE,USER_ID BANKS.USER_ID"
.Name = "loCursor"
.SendUpdates = .T.
.ALLOWuPDATE = .T.

If .CursorFill()
Browse
Else
Aerror(laErrors)
Messagebox(laErrors[2])
Endif .CursorFill()
Endwith


** Change date

?TABLEUPDATE(1,.T.,'locursor')

** Return .F. Not UPDATE !!!! Not Work !!!!

**send To SQL Server command
*****************************************************************
**MySql, Version: 3.23.45-max-nt-log, started with:
**Time Id Command Argument
**021129 13:28:23 21 Connect vvvvvv@12.1.1.111 on foxtest
**021129 13:28:25 21 Query select banks.BANK_ACC, banks.BANK_CODE, banks.BANK_FIL, banks.BANK_ID, banks.BANK_NAME,
** banks.LCH_DATE, banks.USER_ID from foxtest.banks
**021129 13:29:12 21 Query SET AUTOCOMMIT=0
** 21 Query DELETE FROM BANKS WHERE BANK_ID=2 ;
** INSERT INTO BANKS (BANK_ACC,BANK_CODE,BANK_FIL,BANK_ID,BANK_NAME,LCH_DATE,USER_ID)
** VALUES ('Fedja ' ,'Sokolov ' ,'Parex ' ,
** 2.00000000000000000e+000 ,'RRRRRRRRRRR ' ,'20021010000000' ,1.00000000000000000e+000 )
** 21 Query ROLLBACK
** 21 Query SET AUTOCOMMIT=1
******************************************************************

If I use : TABLEUPDATE(1,.F.)

?TABLEUPDATE(1,.F.,'locursor')

** Return .T. Work
** send To SQL Server command
*****************************************************************
**MySql, Version: 3.23.45-max-nt-log, started with:
**Time Id Command Argument
**021129 13:35:38 21 Query SET AUTOCOMMIT=0
**021129 13:35:39 21 Query UPDATE BANKS SET BANK_ACC='krokodil ' ,BANK_CODE='Kozel ' ,
** BANK_FIL='Vilnius ' WHERE BANK_ID=1
** 21 Query COMMIT
** 21 Query SET AUTOCOMMIT=1
** 21 Query SET AUTOCOMMIT=0
** 21 Query UPDATE BANKS SET BANK_ACC='geana ' ,BANK_CODE='makusino ' ,
** BANK_FIL='Riga ' WHERE BANK_ID=3
** 21 Query COMMIT
** 21 Query SET AUTOCOMMIT=1
**021129 13:35:40 21 Query SET AUTOCOMMIT=0
** 21 Query UPDATE BANKS SET BANK_ACC='Fedja ' ,BANK_CODE='Sokolov ' ,
** BANK_FIL='Parex ' WHERE BANK_ID=2
** 21 Query COMMIT
** 21 Query SET AUTOCOMMIT=1
********************************************************************


If I use : Remote Views with MySQL

SELECT Banks.bank_id, Banks.bank_acc, Banks.bank_code, Banks.bank_fil,;
Banks.bank_name, Banks.lch_date, Banks.user_id;
FROM ;
banks Banks

DBSetProp(ThisView,"View","SendUpdates",.T.)
DBSetProp(ThisView,"View","BatchUpdateCount",1)
DBSetProp(ThisView,"View","CompareMemo",.T.)
DBSetProp(ThisView,"View","FetchAsNeeded",.F.)
DBSetProp(ThisView,"View","FetchMemo",.T.)
DBSetProp(ThisView,"View","FetchSize",100)
DBSetProp(ThisView,"View","MaxRecords",-1)
DBSetProp(ThisView,"View","Prepared",.F.)
DBSetProp(ThisView,"View","ShareConnection",.F.)
DBSetProp(ThisView,"View","UpdateType",1)
DBSetProp(ThisView,"View","UseMemoSize",255)
DBSetProp(ThisView,"View","Tables","banks")
DBSetProp(ThisView,"View","WhereType",1)

DBSetProp(ThisView+".bank_id","Field","DataType","I")
DBSetProp(ThisView+".bank_id","Field","UpdateName","banks.bank_id")
DBSetProp(ThisView+".bank_id","Field","KeyField",.T.)
DBSetProp(ThisView+".bank_id","Field","Updatable",.T.)

DBSetProp(ThisView+".bank_acc","Field","DataType","C(25)")
DBSetProp(ThisView+".bank_acc","Field","UpdateName","banks.bank_acc")
DBSetProp(ThisView+".bank_acc","Field","KeyField",.F.)
DBSetProp(ThisView+".bank_acc","Field","Updatable",.T.)

DBSetProp(ThisView+".bank_code","Field","DataType","C(25)")
DBSetProp(ThisView+".bank_code","Field","UpdateName","banks.bank_code")
DBSetProp(ThisView+".bank_code","Field","KeyField",.F.)
DBSetProp(ThisView+".bank_code","Field","Updatable",.T.)

DBSetProp(ThisView+".bank_fil","Field","DataType","C(50)")
DBSetProp(ThisView+".bank_fil","Field","UpdateName","banks.bank_fil")
DBSetProp(ThisView+".bank_fil","Field","KeyField",.F.)
DBSetProp(ThisView+".bank_fil","Field","Updatable",.T.)

DBSetProp(ThisView+".bank_name","Field","DataType","C(50)")
DBSetProp(ThisView+".bank_name","Field","UpdateName","banks.bank_name")
DBSetProp(ThisView+".bank_name","Field","KeyField",.F.)
DBSetProp(ThisView+".bank_name","Field","Updatable",.T.)

DBSetProp(ThisView+".lch_date","Field","DataType","T")
DBSetProp(ThisView+".lch_date","Field","UpdateName","banks.lch_date")
DBSetProp(ThisView+".lch_date","Field","KeyField",.F.)
DBSetProp(ThisView+".lch_date","Field","Updatable",.T.)

DBSetProp(ThisView+".user_id","Field","DataType","I")
DBSetProp(ThisView+".user_id","Field","UpdateName","banks.user_id")
DBSetProp(ThisView+".user_id","Field","KeyField",.F.)
DBSetProp(ThisView+".user_id","Field","Updatable",.T.)


use View1
=CURSORSETPROP("Buffering",5,'View1') && Optimistic table buffering.

?TABLEUPDATE(1,.t.,'view1')

** Return .T. Work
** send to SQL Server command
*****************************************************************
**MySql, Version: 3.23.45-max-nt-log, started with:
**Time Id Command Argument
**021129 13:36:54 22 Connect vvvvvv@12.1.1.111 on foxtest
**021129 13:36:55 22 Query SELECT * FROM banks
**021129 13:36:58 22 Query show keys from `banks`
** 22 Field List banks
**021129 13:37:37 23 Connect vvvvvv@12.1.1.111 on foxtest
**021129 13:37:38 23 Query SELECT Banks.bank_id, Banks.bank_acc, Banks.bank_code, Banks.bank_fil, Banks.bank_name,
** Banks.lch_date, Banks.user_id FROM banks Banks
**021129 13:39:04 23 Query UPDATE banks SET bank_acc='Misha ',bank_code='Vasja ',
** bank_fil='Jelgava ' WHERE bank_id=3
**021129 13:39:05 23 Query UPDATE banks SET bank_acc='kuzja ',bank_code='masjanja ',
** bank_fil='RU ' WHERE bank_id=2
********************************************************************
Next
Reply
Map
View

Click here to load this message in the networking platform