Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Remote View Data Duplication
Message
De
10/12/2023 05:01:30
Lutz Scheffler (En ligne)
Lutz Scheffler Software Ingenieurbüro
Dresden, Allemagne
 
 
À
09/12/2023 23:48:52
Kato Ba
Bytex Technologies Limited
Kaduna, Nigéria
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
01687405
Message ID:
01687410
Vues:
47
>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]
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform