I.T. Discussion Community!
-Collapse +Expand
Paradox
Search Paradox Group:

Advanced
-Collapse +Expand Paradox To/From
To/FromCODEGuides
-Collapse +Expand Paradox Store
PRESTWOODSTORE

Prestwood eMagazine

August Edition
Subscribe now! It's Free!
Enter your email:

   ► MB LobbyCorel Paradox / ObjectPAL Coding BoardParadox Setup, Vista, etc. Topic   Print This     

Application running on Multi-User Environment

Application running on Multi-User Environment in Paradox Setup, Vista, etc. topic (part of our Corel Paradox / ObjectPAL Coding group).

Quick Search: Application   running   Environment   Application running   Application running Multi   User Environment  
abp
Altamonte Springs, Florida, USA
Has anyone had any experience with running a Paradox 10 Application (via Runtime) on a Citrix Server or any multi-user environment.

We are currently running our apps on a variety of Windows op sys / desktop pc's. We are interested in possibly moving to a Citrix Server but have no experience. What are the differences between the two? And any stags we may face....

Thanks for the help!
 Posted 14 years ago (Thread Starter)
Comment Quote
About abp -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #11003, 18 replies
Thread Started 3/10/2005 9:30:00 AM
View Counter=7651
Last Reply Posted 2/18/2008 5:52:47 PM)
Location=Altamonte Springs, Florida, USA  
Joined=18 years ago   MB Posts=88  
abp
Altamonte Springs, Florida, USA
Sorry, I meant "snag"...obstacles.

Well, thanks for the valuable information! I see what you're saying about the PRIV directory thing. I interested in starting work on this to see where we can get!

Thanks again!
 Posted 14 years ago (Thread Starter)
Comment Quote
About abp -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #11009 (Level 1.1)  Reply to 11003
Thread Started 3/14/2005 5:06:00 AM
View Counter=2
Location=Altamonte Springs, Florida, USA  
Joined=18 years ago   MB Posts=88  
Tony M
 (Inactive)
In a Citrix or Terminal Server environment, one BIG thing is working out Private directories.

This can be fairly simple, though, using the -p switch and %username% in the path. You just have to set up users' paths consistently, but you do NOT have to use the 'personal directory' tree under Documents and Settings.

Next, if users get their own data in a single workstation environment, you have to move that to their private directory (above). And if you do this you need to make sure all reports/forms/etc point to PRIV accordingly.

There are several people who report using Citrix/TS with Paradox works well.

Of course, the more RAM you throw at the server, the better off you are.
 Posted 14 years ago
Comment Quote
About Tony M -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.

Post ID #11007 (Level 1.2)  Reply to 11003
Reply Posted 3/13/2005 7:22:00 AM
Location= 
Joined=17 years ago   MB Posts=410   KB Comments=1  
Tony M
 (Inactive)
And what is a 'stag'?
 Posted 14 years ago
Comment Quote
About Tony M -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.

Post ID #11008 (Level 1.3)  Reply to 11003
Reply Posted 3/13/2005 9:09:00 PM
Location= 
Joined=17 years ago   MB Posts=410   KB Comments=1  
Daniel Fought
Prestwood IT
Home office in Fresno, CA.

Actually you should have posted this under a new thread.  OK, first of all the BDE will be located in the control panel.  You are correct in thinking that this is critical to a multiuser environment.  If you attempt to access a database directory that has a lock file issued from a paradox application that is referencing a different .NET file you will be denied access.  Since the default setting for the .NET file is "C:\ ".  I suspect that your two PCs are pointing to seperate .NET files.  The only way I have ever seen the symptom you have described it turned out that the user was accidentally pointing to two different instances of the same application.  You can confirm this by simply changing data on one PC and confirm that the data changes can be seen from the other PC

The specific setting you need to set is the NetDir.  That is located on the configuration tab under drivers | Native | Paradox.  

By the way what operating are you using for a network server?  It is possible that the OS is creating this issue.

Dan Fought
Senior Programmer Analyst
Prestwood IT Solutions
http://www.prestwood.com

 Posted 11 years ago
Comment Quote
About Daniel Fought -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.
About Daniel Fought
Danial Fought is a senior programmer analyst with Prestwood IT where he develops custom Windows software and custom websites. When Dan is not coding for clients, he participates in this online community. Coding specialties include Paradox/ObjectPAL, MS Access, Visual Basic, and VS.Net/VB.Net.

Post ID #12465 (Level 1.4)  Reply to 11003
Reply Posted 2/7/2008 11:05:05 AM
Location=Home office in Fresno, CA. 
Joined=17 years ago   MB Posts=401   KB Posts=12   KB Comments=4  
Daniel Fought
Prestwood IT
Home office in Fresno, CA.

You may want to look at this

http://www.prestwood.com/ASPSuite/KB/document_view.asp?qid=100199&UserID=&GroupID=25

Basically Paradox will release any locks when a variable goes out of scope.  The trick to keeping a variable in scope is to declar it at the appropriate level.   Declaring it just befor the Method will keep the variable in scope as long as the form is open, however the variable is only available withing the method.  Declaring it at the form level will keep it in scope as long as the form is open and the variable is available anywhere with in the form code.  If you want to maintain the variable in scope beyond that you will need to declare variable in library and maintain that library.  The variable will remain in scope as long as the library remains open.  It  is always best to explicitly close any variables and not depend on Paradox to release the resources automatically.

Dan Fought
Senior Programmer Analyst
Prestwood IT Solutions
http://www.prestwood.com

 Posted 11 years ago
Comment Quote
About Daniel Fought -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.
About Daniel Fought
Danial Fought is a senior programmer analyst with Prestwood IT where he develops custom Windows software and custom websites. When Dan is not coding for clients, he participates in this online community. Coding specialties include Paradox/ObjectPAL, MS Access, Visual Basic, and VS.Net/VB.Net.

Post ID #12478 (Level 1.5)  Reply to 11003
Reply Posted 2/15/2008 2:36:34 PM
Location=Home office in Fresno, CA. 
Joined=17 years ago   MB Posts=401   KB Posts=12   KB Comments=4  
Most Recent Post
Daniel Fought
Prestwood IT
Home office in Fresno, CA.

The compile error simply means that you have an error in your script.  Probably a typo or undeclared variable.

Have you considered what happens when a user starts an update process and then walks away without issuing the unlock script?

Use the paradox locking  which you apparently have working. 

Dan Fought
Senior Programmer Analyst
Prestwood IT Solutions
http://www.prestwood.com

 Posted 11 years ago
Comment Quote
About Daniel Fought -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.
About Daniel Fought
Danial Fought is a senior programmer analyst with Prestwood IT where he develops custom Windows software and custom websites. When Dan is not coding for clients, he participates in this online community. Coding specialties include Paradox/ObjectPAL, MS Access, Visual Basic, and VS.Net/VB.Net.

Post ID #12486 (Level 1.6)  Reply to 11003
Reply Posted 2/18/2008 5:52:47 PM
Location=Home office in Fresno, CA. 
Joined=17 years ago   MB Posts=401   KB Posts=12   KB Comments=4  
chomp
 (Inactive)
-- USA
Win 98 and WinXP don't play well together, particularly on a peer-to-peer network. LOTS of issues reported. Do you still have this configuration?
 Posted 11 years ago
Comment Quote
About chomp -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.
Old Account!
If this is your account, sign in to activate web presence data (sign in quarterly to keep active). Alternatively, you can subscribe to our monthly eMag with a valid email address.
Web Presence Hidden.
Once above is taken care of, full Profile content will display including back links, about me, my message, custom Profile html, social networking links, message board signature, company profile, etc.

Post ID #12466 (Level 1.7)  Reply to 11003
Reply Posted 2/7/2008 1:45:09 PM
Location=-- USA 
Joined=12 years ago   MB Posts=45  
chomp
 (Inactive)
-- USA
If you are using win98 as the hosting machine ('server'), in an environment with one or more winXP machines, I don't think you will ever properly 'lock' records or tables. This is a known issue. One machine not 'seeing' updated info from another is also part of this issue. As far as I know, the only solution is to get rid of win98 - or winXP.
 Posted 11 years ago
Comment Quote
About chomp -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.
Old Account!
If this is your account, sign in to activate web presence data (sign in quarterly to keep active). Alternatively, you can subscribe to our monthly eMag with a valid email address.
Web Presence Hidden.
Once above is taken care of, full Profile content will display including back links, about me, my message, custom Profile html, social networking links, message board signature, company profile, etc.

Post ID #12468 (Level 1.8)  Reply to 11003
Reply Posted 2/11/2008 10:20:28 AM
Location=-- USA 
Joined=12 years ago   MB Posts=45  
chomp
 (Inactive)
-- USA
pdoxusrs.net is NOT a table.

It is the 'traffic cop' for Paradox (BDE, actually).

You must set the BDE Net Dir on BOTH machines to be EXACTLY the same.

Character for character exactly the same.

Which means if you are running a peer-to-peer system, and you are mapping a drive to the hosting system from the other system, both the 'external' and the 'hosting' system must map a drive to the location EXACTLY the same.

The 'netdir' setting is in the BDE Admin under the Configuration tab. Drivers | Native | Paradox and the first item on the right side.

It looks like in your case, 'Y' is mapped to that location on one system.

Map a drive on the 'other' system to that same location.

I stated above 'EXACTLY'. The drive letter used for the mapping may, however, be different. I keep them the same for simplicity to remember.

If the local system hosting the .net file has it at c:\pdox\netdir, and the remote system maps Y: to that full directory path, the local hosting system would also need to map a drive (Y: to keep it simple) to that full directory path, also. The entry for each system's netdir in the BDE Admin would then be Y:\; the local system could NOT have the netdir path as c:\pdox\netdir!
 Posted 11 years ago
Comment Quote
About chomp -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.
Old Account!
If this is your account, sign in to activate web presence data (sign in quarterly to keep active). Alternatively, you can subscribe to our monthly eMag with a valid email address.
Web Presence Hidden.
Once above is taken care of, full Profile content will display including back links, about me, my message, custom Profile html, social networking links, message board signature, company profile, etc.

Post ID #12473 (Level 1.9)  Reply to 11003
Reply Posted 2/13/2008 10:52:26 AM
Location=-- USA 
Joined=12 years ago   MB Posts=45  
chomp
 (Inactive)
-- USA
If you lock with a variable that goes out of scope, and the lock persists, how are you ever going to unlock?
 Posted 11 years ago
Comment Quote
About chomp -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.
Old Account!
If this is your account, sign in to activate web presence data (sign in quarterly to keep active). Alternatively, you can subscribe to our monthly eMag with a valid email address.
Web Presence Hidden.
Once above is taken care of, full Profile content will display including back links, about me, my message, custom Profile html, social networking links, message board signature, company profile, etc.

Post ID #12475 (Level 1.10)  Reply to 11003
Reply Posted 2/14/2008 9:10:40 AM
Location=-- USA 
Joined=12 years ago   MB Posts=45  
chomp
 (Inactive)
-- USA

Thank you for this caution. I had in fact checked for identical NetDir definitions but failed to notice a discrepancy in Block Size. Having corrected this I am able to access and lock tables from the network directory as expected.



I have never heard of any such thing before.

The errors you quoted only appear when the netdir isn't identical.
 Posted 11 years ago
Comment Quote
About chomp -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.
Old Account!
If this is your account, sign in to activate web presence data (sign in quarterly to keep active). Alternatively, you can subscribe to our monthly eMag with a valid email address.
Web Presence Hidden.
Once above is taken care of, full Profile content will display including back links, about me, my message, custom Profile html, social networking links, message board signature, company profile, etc.

Post ID #12476 (Level 1.11)  Reply to 11003
Reply Posted 2/14/2008 9:13:36 AM
Location=-- USA 
Joined=12 years ago   MB Posts=45  
chomp
 (Inactive)
-- USA
It appears he doesn't use libraries, and wants to do this within various scripts.

Which, as far as I can determine, isn't possible unless there is a 'wrapper' script that sets and releases locks.

In my opinion, having locks set for the evident time that would take is a VERY bad design.

As stated, the real way to handle this is with a library. Which could be called from scripts or forms. But the library would have to stay open or the variable[s] would still go out of scope. And, as stated, the variable would still have to be declared at the proper level in order to assure the lock[s] would hold.

And I'm afraid it might take a lot to convince that the above holds true.



(Line breaks are gone again. And 'email notification' again comes back with every post.)
 Posted 11 years ago
Comment Quote
About chomp -Collapse +Expand
Visit Profile
Inactive member.
Member does not subscribe to this thread.
Old Account!
If this is your account, sign in to activate web presence data (sign in quarterly to keep active). Alternatively, you can subscribe to our monthly eMag with a valid email address.
Web Presence Hidden.
Once above is taken care of, full Profile content will display including back links, about me, my message, custom Profile html, social networking links, message board signature, company profile, etc.

Post ID #12479 (Level 1.12)  Reply to 11003
Reply Posted 2/15/2008 3:00:05 PM
Location=-- USA 
Joined=12 years ago   MB Posts=45  
btelfer1

Hope I'm not out of line posting to this thread, I have a related problem. For me it seems a bit intimidating at the moment, please forgive me if my explanation is somewhat long-winded.

My Problem:

I am trying without success to lock files on a network.
I have been independently running Paradox 9 under Win 98SE and Paradox 11 under XP on separate PCs.
I now want to access certain files on a shared network folder. I intend to implement a single control table which I will lock before undertaking a varied sequence of updates on the network alias. Both systems should still retain their independent PRIV: and WORK: directories, intending to allow other applications under 98SE and XP to (hopefully) run even when the network is inactive.

As it stands I am able to lock the full network table or individual records within that table, but this is only recognised from the machine doing the locking. The other machine does not see the lock and is able to simultaneously update the table even though the lock is in effect from the other machine. I am even able to issue locks on the table and records while the other user has them locked.

Background:

To demonstrate the problem I am able to open the network table in interactive Paradox, entering Edit and using the Record/Lock menu option from both machines simultaneously. I have also tried both issuing a Full lock and a recordlock on the table from ObjectPAL with similar outcomes.

I have read the little documentation provided by Corel on this problem, & failed to find related references on the Prestwood knowledge base. I suspect I may need to relocate PDOXUSRS.NET onto the network drive for both the 98SE and XP systems.

Specific difficulty:

To change any of these settings, I believe I need to use the BDE Configuration Utility.
This tool does not appear on either of the WordPerfect installation CDs nor does it appear on
the Paradox program group.
I have reloaded Paradox 11 as a "repair", hoping it would provide configuration options during install but no mention appeared during the re-install process.

Please advise how I can align the 98SE and XP versions to recognise the locks applied on the network table by the other user.

 Posted 11 years ago
Comment Quote
About btelfer1 -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #12464 (Level 1.13)  Reply to 11003
Reply Posted 2/6/2008 11:20:55 PM
Location= 
Joined=11 years ago   MB Posts=6  
btelfer1
Thanks to you both for your responses, your input has been helpful on many levels.

I had forgotten the Control Panel entry for BDE Administrator, sometimes the thing you need most is right there under your nose.

Having discovered this I quickly also found that I wasn't able to get a useful test using my network directory on Win 98 from Win XP. I could still simultaneously edit and lock the same file from both the Win 98 machine and the XP machine.

I will later spend time to investigate this problem further. At the moment I am trying to access the Win 98 directory from two Win XP machines. This scenario is reporting "Unable to open table" "Cannot access directory" whenever the other XP machine has any table open. I intend to try again using a network directory hosted on one of the Win XP machines.

Meanwhile, I have today been able to visit a corporate site where I could indeed define Netdir for 2 separate XP machines in the same directory on their network. I created a table on that directory and was able to edit and lock a record from one of the Paradox instances. At the same time I was able to demonstrate that I could open the same table but was locked from editing this record from the other. I was also able to confirm that changes made during the edit were ultimately reflected on the other machine.
I obtained identical results initiating the edit and lock from the second machine.

This is the outcome I was hoping for and feel satisfied that I can now implement my multi-user locking plan.
 Posted 11 years ago
Comment Quote
About btelfer1 -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #12467 (Level 1.14)  Reply to 11003
Reply Posted 2/11/2008 4:45:25 AM
Location= 
Joined=11 years ago   MB Posts=6  
btelfer1
I have esablished the .NET table on a networked directory on one of my Win XP machines. I am experiencing access problems from Paradox on the other machines. One of these uses Paradox 11 under XP, the other Paradox 9 under Win 98, I am stuck with this combination for the moment but I'm not convinced that the particular problem I am seeing is due to the different versions of Windows.

I am able to edit a table on the network directory from both machines and can see the changes from the other machine. However while the table is open on either machine, even just in View mode, the other machine is not able to open the table, or for that matter any other table in the network directory. Access to tables from local directories is fine.

From the Win XP machine the error is:

Unable to open table

You have attempted to open a database which is in use by someone else but the database is cannot be shared. You must set the location for the .NET control file

On the Win 98 machine the message is:

Unable to open table
 
Directory is controlled by the other .NET file.
File: ....\PDOXUSRS.NET
Directory: Y:\

I expect that both machines should be able to share the PDOXUSRS.NET table without clashing. Is there something I am overlooking.
 Posted 11 years ago
Comment Quote
About btelfer1 -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #12472 (Level 1.15)  Reply to 11003
Reply Posted 2/13/2008 2:14:26 AM
Location= 
Joined=11 years ago   MB Posts=6  
btelfer1
Thank you for this caution. I had in fact checked for identical NetDir definitions but failed to notice a discrepancy in Block Size. Having corrected this I am able to access and lock tables from the network directory as expected. It's very picky this BDE cofiguration.

I have now progressed to finding the next obstacle in my quest (hopfully the last one).
I am able to issue locks which are recognised from the second user but am running into a problem with the scope of the lock. I have created the LockDemo script below as a demonstration. The MAST alias points to the network directory.


method run(var eventInfo Event)
; LockDemo
 var
    tblNamex, LockType String
     tblVarx Table
 endVar

 tblNamex = ":mast:LockTest.db"
 LockType = "Full"

 if NOT isTable(tblNamex) then msgInfo("table missing",tblNamex) endif
 if NOT tblVarx.attach(tblNamex) then msgInfo("attach failed",tblNamex) endif
 if NOT tblVarx.lock(LockType) then msgInfo("lock failed",tblNamex) endif

endMethod

When I run this script I expect the lock to persist while I go on to execute another script and for it to remain in effect until I issue UnLock from a subsequent script. This would seem to me to be consistent with the intent of the following snippet from the "Scope of locks" entry in Help/ObjectPAL Reference:

"Locks are not released when the method that placed them ends. Full locks persist until explicitly unlocked. Write locks and read locks persist according to the scope of the variable that is locked."

In fact the lock I have issued appears to release immediately upon completion of my LockDemo script. At that point the other user is freely able to open edit and lock records in the LockTest table or indeed to successfully run the LockDemo script.
 Posted 11 years ago
Comment Quote
About btelfer1 -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #12474 (Level 1.16)  Reply to 11003
Reply Posted 2/14/2008 5:00:29 AM
Location= 
Joined=11 years ago   MB Posts=6  
btelfer1
You are right chomp, I must apologise for my low point on the multiuser/networking learning curve. I have rechecked the effect of differing Block Size settings and confim that I was unable to reproduce my PDOXUSRS.NET access problem. I remain confused at the original cause but this is now in the past. I am consistently accessing the networked directory.

Regarding the out of scope variable, which variable are you referring to. I was expecting that each Paradox session would know its identity so that it would keep track of its own locks and unlocks for the specified table name and lock type, regardless of whether the lock/unlock arguments are hard-coded or provided by variable.

I realise there are some scoping limitations but I guess I am looking for a more global locking technique. For my application I really would like to develop a generalised script dealing with meaningful locking processing and a subsequent one for unlocking. The requirement is for these two scripts to be called from each of several hundred of the higher impact queries and processes which will require a momentary lock on various subsets of tables from 30 or more databases.

Can anyone please point me to examples, tutorials, references, FAQs etc. which could help me attack this requirement.
 Posted 11 years ago
Comment Quote
About btelfer1 -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #12477 (Level 1.17)  Reply to 11003
Reply Posted 2/15/2008 5:59:28 AM
Location= 
Joined=11 years ago   MB Posts=6  
btelfer1

Thanks for your involvement guys, don't give up on me please. I agree that using a library may change the rules a bit in my favour. It is likely that I will be implementing a library in the near future. However, the system development has historically been managed over a number of sites and has grown in features incrementally over about 10 years. The philosophy was to develop the code as independent scripts to satisfy individual user functions, overlaid on a common database design. Basically many of the scripts are reused and are run from several places from a number of functional menus. At the time this didn't seem to lend itself to the use of a library.

To follow your suggestions I implemented a master form which could represent a sort of login from which all other menus could be run. On the open event of the master form I established global variables, a string variable for the table name and also a table variable. Within my lock script which would be run from a menu entry I was able to access the string variable but not the table variable. A script compile "Error Unknown Identifier" occurs.

Any comments about how I can better implement these as global variables.

In the meantime I am testing a short-term solution just to get my users up and running. Now that we have progressed to accessing a shared network directory I am devising a process to (shudder) handle my own general lock table.
I have established an autoincrement field in the Lock table, as well as user and time stamps for use in managing the periodic deletion of obsolete lock entries.

The Lock script will apply a table lock and then insert a new "BUSY" entry in the table.
A "FREE" image query will create a local table entry containing the autoincremented record which will later be updated into the lock table to effectively clear the BUSY entry.
Finally the script will release the table lock. This script prohibits creation of a subsequent BUSY entry while another BUSY entry exists in the lock table. A series of nested loops will provide a wait until the lock table becomes FREE.

This lock script will be applied throughout the system, to be run immediately prior to every update function and every query referencing the shared network tables. I have it working OK and will carry out performance impact evaluation.

Once script processing is complete the UnLock script will lock the Lock table, apply the "FREE" image as an update, and release the lock. Some integrity checking may also be prudent for example to ensure that we haven't somehow got out of sync.
 Posted 11 years ago
Comment Quote
About btelfer1 -Collapse +Expand
Visit Profile
Approved member.
Member subscribes to this thread with a verified email.

Post ID #12480 (Level 1.18)  Reply to 11003
Reply Posted 2/17/2008 3:06:52 AM
Location= 
Joined=11 years ago   MB Posts=6  

Revive Thread!

Add a comment to revive this old thread and make this archived thread more useful.

Write a Comment...
Full Editor
...
Sign in...

If you are a member, Sign In. Or, you can Create a Free account now.


Anonymous Post (text-only, no HTML):

Enter your name and security key.

Your Name:
Security key = P1236A1
Enter key:
Icon: A Post    Thread    Idea    Important!    Cool    Sad    No    Yes    Includes a Link...   
Thread #11003 Counter
7651
Since 4/2/2008
Follow PrestwoodBoards on: 


©1995-2019 PrestwoodBoards  [Security & Privacy]
Professional IT Services: Coding | Websites | Computer Tech