Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Remote View Data Duplication
Message
From
10/12/2023 05:01:30
Lutz Scheffler (Online)
Lutz Scheffler Software Ingenieurbüro
Dresden, Germany
 
 
To
09/12/2023 23:48:52
Kato Ba
Bytex Technologies Limited
Kaduna, Nigeria
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
01687405
Message ID:
01687410
Views:
45
>Dear Colleagues,
>
>My program establishes a connection with an SQL Server database and utilizes a remote view. The issue arises when I fill the remote view cursor with data and issue a TableUpdate. Instead of updating the existing records as expected through the primary key, they are being inserted again as new records. Please what am I doing wrong?
>
>Here is the Remote View settings:
>
>SELECT Empitems.cGuid, Empitems.cEmpId, Empitems.cItemId,;
>  Empitems.cItemType, Empitems.cItemMode, Empitems.cFreq,;
>  Empitems.nIterate, Empitems.nValue, Empitems.cMonth, Empitems.cYear,;
>  Empitems.nSeq, Empitems.iFlag, Empitems.cProviderId, Empitems.cPin,;
>  Empitems.cComputer, Empitems.cIPAddress, Empitems.cUserName,;
>  Empitems.DateStamp, Empitems.cMacrAddr;
> FROM ;
>     EmpItems Empitems;
> WHERE  Empitems.cGuid = ( ?gckey1 )
>
>DBSetProp(ThisView,"View","SendUpdates",.T.)
>DBSetProp(ThisView,"View","BatchUpdateCount",1)
>DBSetProp(ThisView,"View","CompareMemo",.F.)
>DBSetProp(ThisView,"View","FetchAsNeeded",.T.)
>DBSetProp(ThisView,"View","FetchMemo",.F.)
>DBSetProp(ThisView,"View","FetchSize",-1)
>DBSetProp(ThisView,"View","MaxRecords",-1)
>DBSetProp(ThisView,"View","Prepared",.T.)
>DBSetProp(ThisView,"View","ShareConnection",.T.)
>DBSetProp(ThisView,"View","AllowSimultaneousFetch",.T.)
>DBSetProp(ThisView,"View","UpdateType",1)
>DBSetProp(ThisView,"View","UseMemoSize",255)
>DBSetProp(ThisView,"View","Tables","EmpItems")
>DBSetProp(ThisView,"View","WhereType",3)
>
>DBSetProp(ThisView+".cguid","Field","DataType","C(15)")
>DBSetProp(ThisView+".cguid","Field","UpdateName","EmpItems.cGuid")
>DBSetProp(ThisView+".cguid","Field","KeyField",.T.)
>DBSetProp(ThisView+".cguid","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cempid","Field","DataType","C(20)")
>DBSetProp(ThisView+".cempid","Field","UpdateName","EmpItems.cEmpId")
>DBSetProp(ThisView+".cempid","Field","KeyField",.F.)
>DBSetProp(ThisView+".cempid","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".citemid","Field","DataType","C(20)")
>DBSetProp(ThisView+".citemid","Field","UpdateName","EmpItems.cItemId")
>DBSetProp(ThisView+".citemid","Field","KeyField",.F.)
>DBSetProp(ThisView+".citemid","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".citemtype","Field","DataType","C(1)")
>DBSetProp(ThisView+".citemtype","Field","UpdateName","EmpItems.cItemType")
>DBSetProp(ThisView+".citemtype","Field","KeyField",.F.)
>DBSetProp(ThisView+".citemtype","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".citemmode","Field","DataType","C(50)")
>DBSetProp(ThisView+".citemmode","Field","UpdateName","EmpItems.cItemMode")
>DBSetProp(ThisView+".citemmode","Field","KeyField",.F.)
>DBSetProp(ThisView+".citemmode","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cfreq","Field","DataType","C(50)")
>DBSetProp(ThisView+".cfreq","Field","UpdateName","EmpItems.cFreq")
>DBSetProp(ThisView+".cfreq","Field","KeyField",.F.)
>DBSetProp(ThisView+".cfreq","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".niterate","Field","DataType","I")
>DBSetProp(ThisView+".niterate","Field","UpdateName","EmpItems.nIterate")
>DBSetProp(ThisView+".niterate","Field","KeyField",.F.)
>DBSetProp(ThisView+".niterate","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".nvalue","Field","DataType","N(20,2)")
>DBSetProp(ThisView+".nvalue","Field","UpdateName","EmpItems.nValue")
>DBSetProp(ThisView+".nvalue","Field","KeyField",.F.)
>DBSetProp(ThisView+".nvalue","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cmonth","Field","DataType","C(50)")
>DBSetProp(ThisView+".cmonth","Field","UpdateName","EmpItems.cMonth")
>DBSetProp(ThisView+".cmonth","Field","KeyField",.F.)
>DBSetProp(ThisView+".cmonth","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cyear","Field","DataType","C(4)")
>DBSetProp(ThisView+".cyear","Field","UpdateName","EmpItems.cYear")
>DBSetProp(ThisView+".cyear","Field","KeyField",.F.)
>DBSetProp(ThisView+".cyear","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".nseq","Field","DataType","I")
>DBSetProp(ThisView+".nseq","Field","UpdateName","EmpItems.nSeq")
>DBSetProp(ThisView+".nseq","Field","KeyField",.F.)
>DBSetProp(ThisView+".nseq","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".iflag","Field","DataType","I")
>DBSetProp(ThisView+".iflag","Field","UpdateName","EmpItems.iFlag")
>DBSetProp(ThisView+".iflag","Field","KeyField",.F.)
>DBSetProp(ThisView+".iflag","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cproviderid","Field","DataType","C(20)")
>DBSetProp(ThisView+".cproviderid","Field","UpdateName","EmpItems.cProviderId")
>DBSetProp(ThisView+".cproviderid","Field","KeyField",.F.)
>DBSetProp(ThisView+".cproviderid","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cpin","Field","DataType","C(50)")
>DBSetProp(ThisView+".cpin","Field","UpdateName","EmpItems.cPin")
>DBSetProp(ThisView+".cpin","Field","KeyField",.F.)
>DBSetProp(ThisView+".cpin","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".ccomputer","Field","DataType","C(50)")
>DBSetProp(ThisView+".ccomputer","Field","UpdateName","EmpItems.cComputer")
>DBSetProp(ThisView+".ccomputer","Field","KeyField",.F.)
>DBSetProp(ThisView+".ccomputer","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cipaddress","Field","DataType","C(30)")
>DBSetProp(ThisView+".cipaddress","Field","UpdateName","EmpItems.cIPAddress")
>DBSetProp(ThisView+".cipaddress","Field","KeyField",.F.)
>DBSetProp(ThisView+".cipaddress","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cusername","Field","DataType","C(40)")
>DBSetProp(ThisView+".cusername","Field","UpdateName","EmpItems.cUserName")
>DBSetProp(ThisView+".cusername","Field","KeyField",.F.)
>DBSetProp(ThisView+".cusername","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".datestamp","Field","DataType","T")
>DBSetProp(ThisView+".datestamp","Field","UpdateName","EmpItems.DateStamp")
>DBSetProp(ThisView+".datestamp","Field","KeyField",.F.)
>DBSetProp(ThisView+".datestamp","Field","Updatable",.T.)
>
>DBSetProp(ThisView+".cmacraddr","Field","DataType","C(50)")
>DBSetProp(ThisView+".cmacraddr","Field","UpdateName","EmpItems.cMacrAddr")
>DBSetProp(ThisView+".cmacraddr","Field","KeyField",.F.)
>DBSetProp(ThisView+".cmacraddr","Field","Updatable",.T.)
>
>TIA
>
>Alex

Hi,

For all I know, there is an SQL Update strategy named "Delete and Insert".

Do the old records get deleted?
If no, is something stopping them to bet deleted, like a Trigger or whatever can block server side?

I have not used Views for ages - and I recommend CursorAdapter instead of View - but at least the CA has something like UpdateStrategy. And since the CA somehow is mirrored in the DBSetProp, check this.

Lutz
Words are given to man to enable him to conceal his true feelings.
Charles Maurice de Talleyrand-Périgord

Weeks of programming can save you hours of planning.

Off

There is no place like [::1]
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform