837.TXT
======================================================================
Copying Forms
======================================================================
PRODUCT: R:BASE VERSION: 5.5
======================================================================
CATALOG: Forms, Reports, & Labels AREA: Forms
======================================================================
In some database applications, you have data tables and corresponding
history tables. As a developer, you want to design just one form,
then copy the form for use with the other table, the only difference
being the table the form draws its data from. In R:BASE 5.5 for
Windows, you do not have the option in the Forms Designer to copy a
form and then change the name of the table the form is based on.
You can change the secondary table associated with a form, but you
can't change the first table in a form through any menu option.
The following sequence of R> prompt commands can be used to change
the name of the first table of a form. Some of the steps, such as
creating the database in step one, can be done using the menus. The
steps will use the sample database CONCOMP, and will show copying
the form custform and associating the form with a custhistory table
instead of the customer table.
1. Create a dummy database. Enter the following command in the
"R:BASE R> Prompt" window.
CREATE SCHEMA AUTHORIZATION dummydb
Alternatively, from the Object Manager, click the Databases tab, then
click the New button. In the "Enter New Database Name" dialog box,
enter a new database name and then click the OK button. The
"RBDefine" window is automatically opened; go ahead and close the
"RBDefine" window.
The newly created database is now the current, connected database.
2. Connect to your original database that has the form you want to
copy.
CONNECT concomp
From the Object Manager, click the Databases tab, select the original
database name, and click the Open button.
3. Open an "R:BASE R> Prompt" window if one is not already open. The
next step is to copy the table definition and the form definition to
ASCII files. First you'll open a file and copy the table definition
to the file. This is the table definition for the table customer; the
table the current form is based on, not the table for the copied
form.
Enter the following commands in the "R:BASE R> Prompt" window to copy
the structure for the customer table to a file. The file is named
CUST.STR.
OUTPUT cust.str
UNLOAD STRUCTURE FOR customer
OUTPUT SCREEN
Next, copy the form definition to a file. Enter the following
commands in the "R:BASE R> Prompt" window to copy the form custform
to a file. The file is named CUSTFORM.DAT. R:BASE automatically makes
a file named CUSTFORM.LOB to hold the large object portion of the
form definition.
OUTPUT custform.dat
UNLOAD DATA FOR sys_forms2 WHERE sys_form_name = `custform'
OUTPUT SCREEN
4. Before loading the table structure into the dummy database, you
need to edit the file CUST.STR and change the referenced database
name. You can use the R:BASE text editor, RBEdit to edit the file. To
start RBEdit and open the file CUST.STR enter this command in the
"R:BASE R> Prompt" window.
RBEDIT cust.str
The line that needs to be modified is the line containing the CREATE
SCHEMA command. That line of code currently references the original
database name, CONCOMP. The database name needs to be changed to
DUMMYDB. Change the file so that line of code looks like this:
CREATE SCHEMA AUTHOR dummydb NONE
Choose File: Save Changes to save the change to the file and then
close the "RBEdit" window.
5. Connect the dummy database, DUMMYDB, created in step one and load
the table structure and form definition into the dummy database.
Enter the following commands in the "R:BASE R> Prompt" window.
CONNECT dummydb
RUN cust.str
RUN custform.dat
The dummy database now contains one table named customer and one form
named custform.
6. When a table is renamed, table references in the form definition
are automatically updated to reflect the new table name. Now you'll
rename the customer table to custhistory. The form is automatically
updated and is now based on a table name custhistory.
In the "R:BASE R> Prompt" window enter the command:
RENAME TABLE customer TO custhistory
Or, in the Object Manager, click the Tables tab, select the customer
table and click the Rename button. Enter the new table name.
7. The table the form is based on has now been changed in the form
definition. Before transferring the form back to the original
database, you need to rename the form. You can't have two copies of a
form with the same name.
Enter this command in the "R:BASE R> Prompt" window:
RENAME FORM custform TO custhistoryform
In the Object Manager, click the Forms tab, then click the Rename
button. Enter the new form name.
8. The form is now ready to be transferred back to the original
database. Simply reverse the form transfer from step three. The
modified form definition is unloaded from the dummy database and
restored to the original database. Use the following commands in the
"R:BASE R> Prompt" window to unload the form definition and return it
to the original database.
OUTPUT custform.dat
UNLOAD DATA FOR sys_forms2 WHERE sys_form_name =`custhistoryform'
OUTPUT SCREEN
CONNECT concomp
RUN custform.dat
The form has been copied and the base table for the form changed. The
new form, custhistoryform, can be designed and modified as needed.