Mastering DataPerfect














Home Page Mastering DataPerfect
by Ralph Alvy

Table of Contents

Copyright 1997


Table of Contents

Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . .xi

     

Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii

     

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

     What's DataPerfect? . . . . . . . . . . . . . . . . . . . . . . 1

     What's This Book? . . . . . . . . . . . . . . . . . . . . . . . 1

     Who's Ralph Alvy? . . . . . . . . . . . . . . . . . . . . . . . 1

     The Chapters. . . . . . . . . . . . . . . . . . . . . . . . . . 2

     Products Mentioned. . . . . . . . . . . . . . . . . . . . . . . 5

     Legalese. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

     

For Beginners. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

     Getting Started . . . . . . . . . . . . . . . . . . . . . . . . 7

          Creating Panel Text. . . . . . . . . . . . . . . . . . . .10

          Sizing and Moving the Panel. . . . . . . . . . . . . . . .11

          CREATE a Field (F9) and EDIT Field Format (F6) . . . . . .12

          DEFINE an INDEX (Ctrl-F8). . . . . . . . . . . . . . . . .13

          Field Formats and Field Format Display Modifiers . . . . .15

     Browse, Create and Edit Modes . . . . . . . . . . . . . . . . .16

     Lookups in Browse Mode. . . . . . . . . . . . . . . . . . . . .17

     Remaining Define Panel Menu Options . . . . . . . . . . . . . .17

          DEFINE PANEL Options (Alt-F8). . . . . . . . . . . . . . .18

          Define Link for Panel (F5). . . . . . . . . . . . . . . .21

          DEFINE an INDEX (Ctrl-F8). . . . . . . . . . . . . . . . .22

          DEFINE FIELD Options (Shift-F8) 1, 2 and 4 . . . . . . . .22

          DEFINE FIELD Options (Shift-F8) 3, 5, 6-9. . . . . . . . .27

     

Files and Specifications . . . . . . . . . . . . . . . . . . . . . .29

     Program Files . . . . . . . . . . . . . . . . . . . . . . . . .29

     Application Files . . . . . . . . . . . . . . . . . . . . . . .29

          The .STR File. . . . . . . . . . . . . . . . . . . . . . .29

          The .IND File. . . . . . . . . . . . . . . . . . . . . . .30

          The .TXX File. . . . . . . . . . . . . . . . . . . . . . .30

          The Data Files . . . . . . . . . . . . . . . . . . . . . .31

          The .TMP Files . . . . . . . . . . . . . . . . . . . . . .31

     Specifications. . . . . . . . . . . . . . . . . . . . . . . . .32

     

Fields: Introduction . . . . . . . . . . . . . . . . . . . . . . . .33

     Field Fundamentals. . . . . . . . . . . . . . . . . . . . . . .33

     Field Codes and Field Names . . . . . . . . . . . . . . . . . .34

     Field Types . . . . . . . . . . . . . . . . . . . . . . . . . .34

          Alphanumeric Fields: A, U, and Variable-Length Text. . . .34

          Numeric Fields: N, G, H, F, D, and T . . . . . . . . . . .35

     Display Mode Indicators . . . . . . . . . . . . . . . . . . . .40

     

Fields: Issues . . . . . . . . . . . . . . . . . . . . . . . . . . .43

     Choosing Between ::C and ::N Fields . . . . . . . . . . . . . .43

          Do You Need the Field to Be Real?. . . . . . . . . . . . .43

          Issues Concerning Totalling. . . . . . . . . . . . . . . .44

          Keeping Subpanel Data Current. . . . . . . . . . . . . . .45

          Computed Fields and DataPerfect's Work Space . . . . . . .51

     Choosing Between G Fields and N Fields. . . . . . . . . . . . .52

     The H Field . . . . . . . . . . . . . . . . . . . . . . . . . .53

     Date Fields . . . . . . . . . . . . . . . . . . . . . . . . . .54

          When You Might Not Want to Use the D Field for Dates . . .54

          The Date Field as a Special Numerical Field. . . . . . . .58

          Two-Digit vs. Four-Digit Years . . . . . . . . . . . . . .59

          A Note about International Dates . . . . . . . . . . . . .60

     The Time Field. . . . . . . . . . . . . . . . . . . . . . . . .60

          Using Time Fields To Guarantee Uniqueness Of Records . . .61

          Computing Elapsed Time: The Simple Case. . . . . . . . . .62

          Calculating Elapsed Time Across the 24-Hour Barrier. . . .62

          First Solution . . . . . . . . . . . . . . . . . . . . . .63

          An Alternative Solution:

               Using the Concepts of MOMENT and MODULO . . . . . . .66

          Formula Changes to Trap Incorrect Data Entry . . . . . . .68

          A Special Use for the MOMENT Function in Reports . . . . .69

     Notes on Deleting a Field . . . . . . . . . . . . . . . . . . .71

     

Lookups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73

     Fundamentals of Lookups . . . . . . . . . . . . . . . . . . . .73

     Subfield Lookups. . . . . . . . . . . . . . . . . . . . . . . .74

     The Data Link Subgroup Lookup . . . . . . . . . . . . . . . . .76

     Making Lookups Look Better (Browse Mode). . . . . . . . . . . .79

     Smart Lookups (Browse Mode) . . . . . . . . . . . . . . . . . .80

     The Smart Lookups Algorithm . . . . . . . . . . . . . . . . . .82

          Strategy in Defining a Browse Mode Lookup

               Using the Smart Lookups Algorithms. . . . . . . . . .86

          What if you don't want the lookup field

               to be the first field in its own lookup field list? .88

     Reasons for Assigning a Lookup to a Hidden Field  . . . . . . .88

     Reasons for Assigning a Lookup to a Non-Updatable Field . . . .90

     A Note about Saving a Lookup Definition . . . . . . . . . . . .91

     Troubleshooting Lookups . . . . . . . . . . . . . . . . . . . .92

     

Indexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . .95

     The .IND File . . . . . . . . . . . . . . . . . . . . . . . . .95

     How Indexes Sort. . . . . . . . . . . . . . . . . . . . . . . .96

     Uniqueness and Picking Fields for the Index Field List. . . . .98

     Sorting Backwards with Reverse Indexes. . . . . . . . . . . . 100

          Reverse Sorting by Number. . . . . . . . . . . . . . . . 100

          Reverse Sorting by Date. . . . . . . . . . . . . . . . . 103

     The .STR File and Index Regeneration. . . . . . . . . . . . . 105

     Exception Lists . . . . . . . . . . . . . . . . . . . . . . . 106

          What They Are. . . . . . . . . . . . . . . . . . . . . . 106

          The Lowest Numbered Index: A Caveat. . . . . . . . . . . 108

          Aiding Lookups with Exception List Indexes . . . . . . . 109

          Speeding Reports with Exception List Indexes . . . . . . 110

          Aiding Computed Fields in a Parent Panel

               with Exception List Indexes . . . . . . . . . . . . 110

          Dividing Data File Record Access with Exception List Indexes113

          Warning: Exception List Index Bug in Version 2.2 . . . . 114

     

Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

     Flat-File DBMS vs. Relational DBMS. . . . . . . . . . . . . . 117

     The Four Linking Relationships. . . . . . . . . . . . . . . . 118

          One-to-Many Linking. . . . . . . . . . . . . . . . . . . 118

          Many-to-One Linking. . . . . . . . . . . . . . . . . . . 118

          One-to-One Linking . . . . . . . . . . . . . . . . . . . 118

          Many-to-Many Linking . . . . . . . . . . . . . . . . . . 119

     The Two Types of DataPerfect Links. . . . . . . . . . . . . . 119

     Creating and Defining a Panel Link. . . . . . . . . . . . . . 121

          The Link Index and Link Field List . . . . . . . . . . . 123

          A Note about a Panel Link's Index. . . . . . . . . . . . 125

     The Action of a Panel Link. . . . . . . . . . . . . . . . . . 125

     The Data Link . . . . . . . . . . . . . . . . . . . . . . . . 126

          Defining a Data Link . . . . . . . . . . . . . . . . . . 127

     The Link Options Menus. . . . . . . . . . . . . . . . . . . . 129

          Panel Link Options . . . . . . . . . . . . . . . . . . . 130

          Data Link Options. . . . . . . . . . . . . . . . . . . . 132

          Data Link Options Caveats. . . . . . . . . . . . . . . . 135

     Data Link Subgroup Lookups. . . . . . . . . . . . . . . . . . 135

     Choosing Between the Panel Link and the Data Link . . . . . . 138

     A Caveats Regarding Data Links. . . . . . . . . . . . . . . . 140

     The Recursive Panel Link. . . . . . . . . . . . . . . . . . . 143

          Conditional Incrementation Using a Recursive Panel Link. 143

          Absolute Incrementation Using a Recursive Panel Link . . 145

          Reasons for Avoiding Auto-Incrementing Fields. . . . . . 145

          Back to Recursive Linking and Absolute Incrementation. . 147

          Absolute Incrementation

               Using a Recursive Panel Link on a Network . . . . . 148

     Virtual Link vs. Subreport Using Virtual Link . . . . . . . . 151

     Making Panel Links Safer. . . . . . . . . . . . . . . . . . . 152

     Troubleshooting Links . . . . . . . . . . . . . . . . . . . . 154

     

Keep A Total . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 159

     Implementing a Keep A Total . . . . . . . . . . . . . . . . . 160

     When There's No Parent Record . . . . . . . . . . . . . . . . 162

     Using Keep A Total to Update Records in Foreign Panels. . . . 163

          The Indexes. . . . . . . . . . . . . . . . . . . . . . . 164

          The Keep A Total . . . . . . . . . . . . . . . . . . . . 164

          How it Works: An Example . . . . . . . . . . . . . . . . 165

          General Principles . . . . . . . . . . . . . . . . . . . 165

     Keep A Total vs. Cascade Update . . . . . . . . . . . . . . . 167

     

Reports: Introduction. . . . . . . . . . . . . . . . . . . . . . . 169

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 169

     The Initial Report Definition Screen. . . . . . . . . . . . . 170

          Report Name. . . . . . . . . . . . . . . . . . . . . . . 171

          Options 1 and 2: Destination . . . . . . . . . . . . . . 171

          Option 6: Disk File Mode . . . . . . . . . . . . . . . . 172

          Option 7: Print Margins. . . . . . . . . . . . . . . . . 172

          Finding What Panel a Report Is Based On. . . . . . . . . 174

          Panel-Dependent Initial Report Definition Screen Options 175

          Option 3: Index Number . . . . . . . . . . . . . . . . . 175

          Option 4: Search Conditions. . . . . . . . . . . . . . . 175

          Option 5: Sort Direction . . . . . . . . . . . . . . . . 176

          Option 8: Edit Report Form . . . . . . . . . . . . . . . 176

          The Edit Report Form Screen Sections Delineated. . . . . 179

          The Report Algorithm . . . . . . . . . . . . . . . . . . 184

     General Theory in Creating a Report . . . . . . . . . . . . . 185

          Processing the Right Records . . . . . . . . . . . . . . 185

          Getting the Right Information to Print . . . . . . . . . 186

          Getting the Report to Look Good. . . . . . . . . . . . . 187

          Getting the Report to Complete in a Reasonable Amount of Time187

     Knowing Your Place. . . . . . . . . . . . . . . . . . . . . . 188

          In the Main Report . . . . . . . . . . . . . . . . . . . 188

          In a Subreport . . . . . . . . . . . . . . . . . . . . . 188

     

Reports: General Structure . . . . . . . . . . . . . . . . . . . . 191

     The Basic Report. . . . . . . . . . . . . . . . . . . . . . . 191

     Two-Level Reports . . . . . . . . . . . . . . . . . . . . . . 196

     Subgroup Reports. . . . . . . . . . . . . . . . . . . . . . . 198

     The Subreport . . . . . . . . . . . . . . . . . . . . . . . . 199

     Two-Level Reports in Subreports . . . . . . . . . . . . . . . 209

          The Primary Sorting Field. . . . . . . . . . . . . . . . 211

     Subgroup Reports in Subreports. . . . . . . . . . . . . . . . 212

     

Reports: Fields. . . . . . . . . . . . . . . . . . . . . . . . . . 215

     F Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . 215

     Print Mode Indicators . . . . . . . . . . . . . . . . . . . . 216

          Print Mode Indicators That Alter Field Output Spacing  . 216

          Print Mode Indicators That Don't Alter Field Output Spacing217

          Summary Table. . . . . . . . . . . . . . . . . . . . . . 219

          Sneaking Print Mode Indicators into Panel Fields . . . . 221

     Variable-Length Text Fields in Reports. . . . . . . . . . . . 221

          The ;;N Print Mode Indicator (New Occurrence of Field) . 223

          Examples . . . . . . . . . . . . . . . . . . . . . . . . 223

     

Report Options . . . . . . . . . . . . . . . . . . . . . . . . . . 231

     The Report Options Menus. . . . . . . . . . . . . . . . . . . 231

     Global Report Options . . . . . . . . . . . . . . . . . . . . 232

          Select Report Field. . . . . . . . . . . . . . . . . . . 232

          Eliminate Line if Blank. . . . . . . . . . . . . . . . . 234

          Page Eject and Skip to Bottom of Page. . . . . . . . . . 235

          Prompt for Report Variable . . . . . . . . . . . . . . . 236

          Iteration Control. . . . . . . . . . . . . . . . . . . . 236

     Section-Specific Report Options . . . . . . . . . . . . . . . 236

          Section-Specific Report Options for First Page Header. . 237

          Section-Specific Report Options for Other Page Header. . 237

          Section-Specific Report Options for Two-Level Header . . 238

          Section-Specific Report Options for Report Body. . . . . 238

          Section-Specific Report Options for Two-Level Footer . . 240

          Section-Specific Report Options in Page Footer . . . . . 240

          Section-Specific Report Options in Final Footer. . . . . 240

     

Report Variables . . . . . . . . . . . . . . . . . . . . . . . . . 243

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 243

     Printing Data Not Already in Fields . . . . . . . . . . . . . 244

     Skipping Certain Records. . . . . . . . . . . . . . . . . . . 247

     Self-Referencing Report Variables . . . . . . . . . . . . . . 251

          Counters . . . . . . . . . . . . . . . . . . . . . . . . 251

          Recycled Report Variables. . . . . . . . . . . . . . . . 253

     

Subreports . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 255

     Option 1 - Include Subreport. . . . . . . . . . . . . . . . . 255

     Subreports: Going From Version 2.2 to 2.3 . . . . . . . . . . 256

     Subreports as Subroutines . . . . . . . . . . . . . . . . . . 259

          Printing Totals at the Top of the Invoice. . . . . . . . 262

     Subreport Using Virtual Link. . . . . . . . . . . . . . . . . 267

     The Dummy Report. . . . . . . . . . . . . . . . . . . . . . . 272

     Dummy Report Examples . . . . . . . . . . . . . . . . . . . . 274

          A Report That Branches to Other Reports. . . . . . . . . 274

          Gathering Preliminary Information fromVarious Panels

               Before Starting the "Real" Report . . . . . . . . . 283

          Prompting the User with the Number of Hits . . . . . . . 288

          Reports That Double-Sort Records . . . . . . . . . . . . 290

     

Printer Control Issues . . . . . . . . . . . . . . . . . . . . . . 299

     Open Filename in Report Variable. . . . . . . . . . . . . . . 299

          Overwrite Mode from the Report List. . . . . . . . . . . 301

          Overwrite Mode Caveat. . . . . . . . . . . . . . . . . . 302

     Printer Control Panel . . . . . . . . . . . . . . . . . . . . 303

          Direct Approach 1. . . . . . . . . . . . . . . . . . . . 304

          Direct Approach 2. . . . . . . . . . . . . . . . . . . . 306

          Indirect Approach 1. . . . . . . . . . . . . . . . . . . 307

          Indirect Approach 2. . . . . . . . . . . . . . . . . . . 310

          What These Reports Look Like . . . . . . . . . . . . . . 311

          Direct Report Variable Approach. . . . . . . . . . . . . 311

          Indirect Report Variable Approach. . . . . . . . . . . . 315

     

Formulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 317

     Formula Error Messages: A Warning . . . . . . . . . . . . . . 318

     Legal Values and Well-Formed Formulas . . . . . . . . . . . . 318

     About The Rest of This Chapter. . . . . . . . . . . . . . . . 321

     String Identity . . . . . . . . . . . . . . . . . . . . . . . 321

          Perfect Matches and the Identity Operator. . . . . . . . 322

     CASES Statements vs. IF-THEN Statements . . . . . . . . . . . 325

     APPLY.FORMAT and CONVERT. . . . . . . . . . . . . . . . . . . 327

          APPLY.FORMAT . . . . . . . . . . . . . . . . . . . . . . 328

          CONVERT. . . . . . . . . . . . . . . . . . . . . . . . . 330

     SUBSTRING and SUBFIELD. . . . . . . . . . . . . . . . . . . . 330

          SUBFIELD . . . . . . . . . . . . . . . . . . . . . . . . 330

          SUBSTRING. . . . . . . . . . . . . . . . . . . . . . . . 335

          A String Identity Variation. . . . . . . . . . . . . . . 336

     CONTAINS. . . . . . . . . . . . . . . . . . . . . . . . . . . 337

     Spaces and Carriage Returns in Formulas . . . . . . . . . . . 338

     Troubleshooting Formulas. . . . . . . . . . . . . . . . . . . 339

     

Iteration Control. . . . . . . . . . . . . . . . . . . . . . . . . 341

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 341

     Skip Record if RV is False. . . . . . . . . . . . . . . . . . 341

     Skip To and Stop If . . . . . . . . . . . . . . . . . . . . . 345

          The Variable Entity in Skip To Operations. . . . . . . . 345

          Strategic Placement of the Skip To Code. . . . . . . . . 346

          The Internal Logic of the Skip To Code . . . . . . . . . 347

          Combining the Skip To Code with the Stop If Code . . . . 347

     User Chooses Next Record By LookUp. . . . . . . . . . . . . . 352

          Placing the User Chooses code in the First Page Header . 354

          Placing the User Chooses code in the Report Body . . . . 356

          Single Record Report From Lookup off a Menu. . . . . . . 356

          How Report Lookups Display . . . . . . . . . . . . . . . 357

     Repeat If . . . . . . . . . . . . . . . . . . . . . . . . . . 359

     A Note about DataPerfect's Notion of Truth. . . . . . . . . . 361

     Iteration Control Examples. . . . . . . . . . . . . . . . . . 364

          Limiting a Report to One Record. . . . . . . . . . . . . 364

          Limiting a Report to a Particular Number of Records. . . 365

          A Report That Prints a Particular Number of Iterations per Record365

          A Date-Range Report. . . . . . . . . . . . . . . . . . . 366

          A Report That Prints Monthly Statements

               for All and Only Accounts with a Positive Balance . 367

          Getting a Report to Continue after the

               Last Record in the Lookup Is Selected . . . . . . . 367

     Troubleshooting Iteration Control . . . . . . . . . . . . . . 368

     

Export/Import. . . . . . . . . . . . . . . . . . . . . . . . . . . 371

     Reasons for Exporting or Importing Data . . . . . . . . . . . 371

     WordPerfect Merge Files . . . . . . . . . . . . . . . . . . . 372

          The Setup. . . . . . . . . . . . . . . . . . . . . . . . 372

          The Nature of the Export File, Including Some Caveats. . 373

          Importing a WordPerfect Merge File . . . . . . . . . . . 375

          Duplicate Records Action . . . . . . . . . . . . . . . . 376

          What Happens During a WordPerfect Merge File Import. . . 377

     Exporting and Importing Transaction Logs. . . . . . . . . . . 378

     Strategies: Merge File vs. Transaction Log. . . . . . . . . . 379

          Deleting and Creating Fields . . . . . . . . . . . . . . 379

          Moving Fields Without Deleting or Adding Fields. . . . . 380

     DOS Delimited Text. . . . . . . . . . . . . . . . . . . . . . 380

          Exporting to DOS Delimited Format. . . . . . . . . . . . 380

          Importing From DOS Delimited Format. . . . . . . . . . . 384

     

The Clipboard. . . . . . . . . . . . . . . . . . . . . . . . . . . 385

     Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 385

     In Define Panel Mode. . . . . . . . . . . . . . . . . . . . . 385

     In a Specify Formula Screen . . . . . . . . . . . . . . . . . 386

     In Report Definition Mode . . . . . . . . . . . . . . . . . . 388

     Field Formulas and Help Screens: A Caveat . . . . . . . . . . 391

     

Securing the Application . . . . . . . . . . . . . . . . . . . . . 393

     Application Passwords . . . . . . . . . . . . . . . . . . . . 393

     Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

          The Define Menu Screen . . . . . . . . . . . . . . . . . 394

          Create/Edit Menu Text. . . . . . . . . . . . . . . . . . 395

          Move the Menu Prompt . . . . . . . . . . . . . . . . . . 396

          Go to Panel. . . . . . . . . . . . . . . . . . . . . . . 396

          Run Report . . . . . . . . . . . . . . . . . . . . . . . 398

          Run Report Option Caveats. . . . . . . . . . . . . . . . 400

          Go to Panel List . . . . . . . . . . . . . . . . . . . . 401

          Go to Report List. . . . . . . . . . . . . . . . . . . . 401

          Submenu. . . . . . . . . . . . . . . . . . . . . . . . . 402

          Launch Shell Macro . . . . . . . . . . . . . . . . . . . 402

          Edit an Existing Entry . . . . . . . . . . . . . . . . . 402

          Delete an Existing Entry . . . . . . . . . . . . . . . . 402

     User ID Panel . . . . . . . . . . . . . . . . . . . . . . . . 403

          User ID Panel Caveats. . . . . . . . . . . . . . . . . . 404

          Tracking User Activity: the USER.FIELD[n] Function . . . 405

          Controlling User Access. . . . . . . . . . . . . . . . . 406

          The User ID Panel vis a vis Application Passwords. . . . 409

          User-Stamping Records. . . . . . . . . . . . . . . . . . 410

          Controlling Access to Data Accessed from a Menu. . . . . 410

          Controlled Panel Link Access to Subrecords . . . . . . . 412

          Data Link Subgroup Lookups and the USER.FIELD[n] Function412

          A Note on Deselecting the User ID Panel. . . . . . . . . 414

     Troubleshooting Menus . . . . . . . . . . . . . . . . . . . . 414

     

Securing Data Entry. . . . . . . . . . . . . . . . . . . . . . . . 415

     Preventing Inadvertent Editing. . . . . . . . . . . . . . . . 415

          The DPMouse  Alternative . . . . . . . . . . . . . . . . 416

     Keeping a Saved Field from Being Edited . . . . . . . . . . . 416

     Field and Record Protection . . . . . . . . . . . . . . . . . 417

          Controlling Data Entry: The Pick List Field. . . . . . . 417

          Closing Off a Data Link to Protect a Pick List Panel . . 418

          Closing off Access to the Panel List . . . . . . . . . . 419

          Controlling Data Entry: Initial Formula or Value . . . . 419

          Controlling Data Entry: The Basic Default Panel. . . . . 420

          Controlling Data Entry: The Complex Default Panel. . . . 422

          Controlling Data Entry with ZipKey . . . . . . . . . . . 426

          Pyramidal Design as a Data Integrity Strategy. . . . . . 427

          The Hidden Panel . . . . . . . . . . . . . . . . . . . . 430

          Controlling Record Creation with Indexes . . . . . . . . 432

          Controlling Record Creation with the ::M Field . . . . . 434

          DPMouse  and Field Protection. . . . . . . . . . . . . . 436

          Using DPMouse  To Conditionally Close A Panel Link.. . . 437

          Using DataPerfect 2.3's Menu Facility

               To Prevent Creation of Records via a Link . . . . . 437

          Controlling Record Deletions with DPMouse  . . . . . . . 438

     Controlling Data Entry with Reports . . . . . . . . . . . . . 439

     Reports That Control Record Deletions . . . . . . . . . . . . 439

          Providing an Undelete. . . . . . . . . . . . . . . . . . 442

          Lookups and the Undelete Scheme. . . . . . . . . . . . . 442

          Totaling and the Undelete Scheme . . . . . . . . . . . . 443

          Physically Deleting the Record . . . . . . . . . . . . . 444

     Reports That Control Record Creation. . . . . . . . . . . . . 446

     Reports That Control Editing. . . . . . . . . . . . . . . . . 448

     Hiding Data Entry . . . . . . . . . . . . . . . . . . . . . . 450

     

Application Maintenance Utilities. . . . . . . . . . . . . . . . . 455

     DPExport and DPImport . . . . . . . . . . . . . . . . . . . . 455

          .STE Editing Caveats . . . . . . . . . . . . . . . . . . 455

          DPImport Caveats . . . . . . . . . . . . . . . . . . . . 456

          Importing Reports. . . . . . . . . . . . . . . . . . . . 456

     DPDiagnostics . . . . . . . . . . . . . . . . . . . . . . . . 457

          Optimization Messages. . . . . . . . . . . . . . . . . . 458

          Warning Messages . . . . . . . . . . . . . . . . . . . . 458

          Error Messages . . . . . . . . . . . . . . . . . . . . . 458

     DPOrder . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

     STE Manager . . . . . . . . . . . . . . . . . . . . . . . . . 460

     

Application Maintenance Issues . . . . . . . . . . . . . . . . . . 465

     Upgrading a Client to a New Version of DataPerfect. . . . . . 465

     Compatibility Between Different Versions of DataPerfect . . . 465

     When It's Okay to Overwrite an .STR . . . . . . . . . . . . . 466

     Removing Duplicates in a Panel. . . . . . . . . . . . . . . . 470

          How Duplicates Are Created . . . . . . . . . . . . . . . 471

          Removing Duplicates in a Single Panel. . . . . . . . . . 472

          Removing Duplicates in the Entire Database . . . . . . . 473

     Cleaning the .STR Without Re-indexing . . . . . . . . . . . . 474

     The Big Clean: Cleaning the Entire Application. . . . . . . . 474

     Fixing a Corrupt .TXX File. . . . . . . . . . . . . . . . . . 475

     Crippling Applications. . . . . . . . . . . . . . . . . . . . 477

          Date Crippling . . . . . . . . . . . . . . . . . . . . . 477

          Record-Number Crippling. . . . . . . . . . . . . . . . . 478

          Password-Protected Zip File. . . . . . . . . . . . . . . 478

     

Epilogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

     Support Avenues . . . . . . . . . . . . . . . . . . . . . . . 479

          CompuServe Support . . . . . . . . . . . . . . . . . . . 479

          Internet Support . . . . . . . . . . . . . . . . . . . . 479

     The DataPerfect Users Cooperative . . . . . . . . . . . . . . 480