I have very strong views on Frameworks, ALL against. They are a waste of money. You buy a framework, now you have to learn another piece of “software”. You try to customize it and if you have not initialized something in step 1, down the line in step 250 it does not work. Many moons ago when I was an independent, I have had clients uninstall frameworks which they had bought.
My advice: Write your own Class libraries rather than use somebody else’s (framework). You will be amazed at how easy it is and what you can accomplish and the best part is you will know every nuance.
Having said that;
…just selecting the unique ID from the table into the cursor and setting a relationship into the live table so the user can edit the live table directly…
That is the way we do it. But without relationships.
We create a cursor, depending on what the user wants to see, with a unique (system generated number in Tables) ID, display it in a List box (depending on the number of records fetched) If more than 60,000 (old limitation of a List box), we use a grid. The form has the fields from the Table. In the Interactivechange / afterrowcolumn change, we do an INDEXSEEK on the table and do a form refresh. This way we do not need Next, Back buttons as the user can navigate via the list box or grid. The Add & Edit Buttons do a Table Update, The Cancel button Reverts.
For Child tables we use Parameterized Views, which will not bring too much data and display them in List boxes / grids (if user interaction is required) on the form. Again these views are Re-Queried in the InteractiveChange or AfterRowColumnChange.
But, your design has to be perfect.
ALL of our Forms do this. One brings in and manages 165,000+ records with 16 or so parameterized views.
But our apps use Terminal Servers for our multi-national clients. Our local clients, who do not have that many records use a Lan without any performance issues
Regarding Speed: Yes; bringing in 200,000 records over the wires will definitely slow the App down, depending on the Lan and the traffic. But if the tables are optimized to the Hilt, it’s not that bad, as once they are on the user’s machine everything speeds up.
Though; Nobody and Nobody wants to see or browse through 200,000 records. Display choices before creating a Cursor i.e. Open Transactions, Payments Due etc.
But you have an advantage:
This is a multi-user app on a LAN with occasional users using terminal server.
Why not for every user? Now your app will be blazing fast. If the client does not want to spring for the extra licenses, for occasional users use Remote Desktop, It’s free but has to be tweaked.