Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Terminal Services TABLEUPDATE Failure
Message
 
À
18/09/2005 10:19:51
Information générale
Forum:
Visual FoxPro
Catégorie:
Client/serveur
Versions des environnements
Visual FoxPro:
VFP 7 SP1
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
Visual FoxPro
Divers
Thread ID:
01045421
Message ID:
01052293
Vues:
40
Hi Ray,

sorry, took me a while to reply.

In a job processing software I wrote some years ago I noticed a similar effect as you did regarding the success rate of RLOCK() on two machines. One machine would be able to lock records by a magnitude more often than the other. On way round this I found was to use the Sleep function with a random interval:
Declare Sleep in Win32API Long
Sleep(Rand()*50+10)
You need to call RAND(-1) at the startup of your program.

To solve the TABLEUPDATE() issue in your loop, it might help to open the table when updating each record. This would mean that you use GETNEXTMODIFIED() on the original table to find the next modified record. Then use the table again in a different work area, transfer the record using SCATTER NAME/GATHER NAME, issue TABLEUPDATE() on the copy and TABLEREVERT on the original record. If the record has been deleted, you need to duplicate the DELETE, for new records the INSERT/APPEND BLANK statement. Finally close the second table and proceed with the next record.

If this doesn't work, it might help to serialize all updates. For this, create a DCOM server that takes the SCATTER object and some additional information like table name and operation (DELETE, INSERT, UPDATE). The COM server would perform the TABLEUPDATE whereas the desktop application uses TABLEREVERT. Compile into a multi-use server (a setting on the project info dialog). Then configure the COM server to be accessible from all users logged onto the terminal server, but change the identify to a single account. This way, only one instance of the COM server should be launched and shared by all users (at least that's the plan, but I haven't tested it).
--
Christof
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform