Table of Contents

GoldBox-5 *

ANTI-PIRACY STATEMENT *

Introduction *

License *

No-Return *

Disclaimer *

Installation *

Support *

Downloads *

Ordering *

UPDATER Contact File *

GOLDBOX5 User Name *

BDE Setting *

Loading GX5 *

Login *

Lockout Feature *

SERVICE / Config Screen *

SERVICE / Copy Paradox to dBase4 *

TOP LEVEL MENU *

GoldMine® MAIN CONTACT File *

GoldMine® TAB Files *

GoldMine® CALENDAR File *

GoldMine® HISTORY File *

GoldMine® SUPPLEMENTAL File *

GoldMine® LOOKUP File *

GoldMine® GROUPS File *

Duplicate Account Numbers *

File Formats for Storing Data *

dBase4 File & Field Naming Conventions *

Parse ASCII to dBase *

Convert SDF Fixed Length Text File *

EXE Files *

New Setup *

Saved Setup *

Setup Screens - Common Features *

Launch Capability *

Q-files *

GoldBox Launch Timer *

Interactive Mode *

Local LOOKUP.INI: *

FILE / Batch Session Summaries *

FILE / Last Name Title Exceptions *

FILE / Contact Validator Exceptions *

FILE / Virtual Lookup Table *

FILE / SIC Category Table *

FILE / Field Translator Table *

FILE / Word Swap Table *

FILE / Text Swap Table *

FILE / Area Code Split Table *

FILE / Unique Field Listing *

FILE / Sub Filters / Seq # Generation *

FILE / GX5 Saved Expressions *

FILE / Smooth Contact Names *

FILE / Smooth Company Names *

FILE / Browse ANY dBase4 File *

Filter & Expression Builder *

FUNCTION / ActBanner() *

FUNCTION / AddlConFld() *

FUNCTION / AfterFirst() *

FUNCTION / AgeByMonth() *

FUNCTION / AgeByYear() *

FUNCTION / AllTrim() *

FUNCTION / ANSI() *

FUNCTION / At() *

FUNCTION / CalEndTime() *

FUNCTION / Canada() *

FUNCTION / CDoW() *

FUNCTION / Chr() *

FUNCTION / Cmonth() *

FUNCTION / CountWords() *

FUNCTION / CtoD() *

FUNCTION / Date() *

FUNCTION / Day() *

FUNCTION / Deleted() *

FUNCTION / DidSession() *

FUNCTION / DoW() *

FUNCTION / DtoC() *

FUNCTION / DtoS() *

FUNCTION / DupedWord() *

FUNCTION / DurConvert() *

FUNCTION / Empty() *

FUNCTION / EndOfMonth() *

FUNCTION / EndWords() *

FUNCTION / FieldContains() *

FUNCTION / File() *

FUNCTION / FileWild() *

FUNCTION / FirstCharacter() *

FUNCTION / FirstLast() *

FUNCTION / FirstOfMon() *

FUNCTION / FirstWord() *

FUNCTION / Flagged() *

FUNCTION / GenBanner() *

FUNCTION / Generate() *

FUNCTION / GetAcct() *

FUNCTION / GETaWord() *

FUNCTION / Get() Functions *

FUNCTION / GetCustom() *

FUNCTION / GetSICcat() *

FUNCTION / GMuser *

FUNCTION / Grab() Functions *

FUNCTION / GxProper() *

FUNCTION / HistoryCode() *

FUNCTION / IIF() *

FUNCTION / InGMLookup() *

FUNCTION / InGroup() *

FUNCTION / InList() *

FUNCTION / InOrgLevel() *

FUNCTION / Int() *

FUNCTION / IsAlpha() *

FUNCTION / IsBlank() *

FUNCTION / IsFoundIn() *

FUNCTION / LastFirst() *

FUNCTION / LastWord() *

FUNCTION / LatestSync() *

FUNCTION / Len() *

FUNCTION / LinkedName() *

FUNCTION / LookupDesc() *

FUNCTION / LookupINI() *

FUNCTION / Lower() *

FUNCTION / Ltrim() *

FUNCTION / Make24hour() *

FUNCTION / Max() *

FUNCTION / Mline() *

FUNCTION / Min() *

FUNCTION / Month() *

FUNCTION / MultiTab() *

FUNCTION / MultiTab2() *

FUNCTION / Pad() Functions *

FUNCTION / PhoneStrip() *

FUNCTION / PrimEmail() *

FUNCTION / ProDate() *

FUNCTION / PullEmail() *

FUNCTION / PullWeb() *

FUNCTION / Rat() *

FUNCTION / RealDate() *

FUNCTION / RealTime() *

FUNCTION / RecNo() *

FUNCTION / ReferValue() *

FUNCTION / Replicate() *

FUNCTION / RollupAcct() *

FUNCTION / Round() *

FUNCTION / RoundRobin() *

FUNCTION / SmoothComp() *

FUNCTION / SmoothName() *

FUNCTION / SnipWord() *

FUNCTION / SoundEx() *

FUNCTION / Space() *

FUNCTION / Str() *

FUNCTION / StripFrom() *

FUNCTION / StripKeep() *

FUNCTION / StripMrMs() *

FUNCTION / StripSuffix() *

FUNCTION / StrTran() *

FUNCTION / SubStr() *

FUNCTION / TabEdited() *

FUNCTION / TextSwap() *

FUNCTION / Time() *

FUNCTION / Transform() *

FUNCTION / Trim() *

FUNCTION / UDTbanner() *

FUNCTION / Upper() *

FUNCTION / UpperStrip() *

FUNCTION / USA() *

FUNCTION / USterr() *

FUNCTION / Val() *

FUNCTION / vCRLF *

FUNCTION / VLink2dBase() *

FUNCTION / VirtualFld() *

FUNCTION / WordOccur() *

FUNCTION / WordSwap() *

FUNCTION / xFrag() *

FUNCTION / Year() *

IMPORT / UPDATE *

GoldMine MAIN CONTACT File *

Update Main Fields *

Update/Attach Record Match *

Import Setup Screen *

Import Field Mapping Template *

Update Setup Screen *

Plug-In Tab Records *

Tab Attach, Update, Dupe Detection *

Attach Additional Contacts *

Attach Details *

Attach Email Addresses *

Attach Web Sites *

Attach Linked Documents *

Attach Calendar *

Attach History *

Attach A/P Tracks *

Attach Referrals *

Attach Record Alerts *

Attach Generic Supplemental *

Attach Opportunities/Projects *

Attach Personal Rolodex *

Attach Zip Codes into Lookups *

Attach Virtual Lookup Table values *

Attach Area Codes *

Attach Translator Table values *

EXPORT *

Export Setup Screen *

Export Field Mapping Template *

MERGE-PURGE *

Merge-Purge Setup Screen *

Merge-Purge Manual Mode *

DUPES BETWEEN FILES *

GROUP BUILDER *

GROUPS-BY-BREAK *

ORG CHART CREATOR *

GLOBAL DELETE *

GLOBAL REPLACE *

GLOBAL COMPLETE *

NOTES ARCHIVAL *

TAB FILE LOG CREATION *

CONTACT VALIDATOR *

USER NAME CHANGER *

INI SETTINGS REPLICATOR *

AREA CODE SPLIT REPLACEMENT *

TEXT TO DBASE4 CONVERSION *

PACK A GoldMine® FILE *

ADDING A ZZNEW TLOG ENTRY *

INDEX A GoldMine® FILE *

COPY / RENAME / WIPE DISK FILES *

RUN WINDOWS / DOS PROGRAM *

TURN SYNC STAMPING ON / OFF *

MANIPULATE GX5 SYSTEM FILES *

GXW BROWSER *

GoldBox-5

Data Tools for GoldMine®

(For GoldMine® hosted in dBase only - SQL version available separately)

Copyright Ó 1993-2001 Redstone SoftBase Company

Version 5.53

GOLDBOX-5 HAS BEEN CERTIFIED BY FRONTRANGE SOLUTIONS

GoldBox-5 / Data Tools for GoldMine® is a product of:

Redstone SoftBase Co. 10488 Eastborne Ave. #202 Los Angeles CA 90024

Web .......... www.redstonesoftbase.com Phone.............(310)441-0782

Email .......... redstone@earthlink.net Fax................(310)441-0782

 

IF YOU ALREADY HAVE GOLDBOX-4:

A special EXE called GX4TOGX5.EXE is included in your GoldBox-5 package if you are upgrading from a GoldBox-4 system. This copies and converts system files from GoldBox-4 to GoldBox-5. This program should be run successfully only ONCE! Also, if you are pointing to different GoldMine® Contact Files, be sure to access the Saved Setups and change the Contact File paths! If you had Saved Setups for Importing Linked Documents, these must be recreated in GoldBox-5 since a new option was added.

To run the utility: Load it from {Start} {Run} like so: c:\goldbox5\gx4togx5

Select your GoldBox-4 Path.

Click {Go} to run the utility.

 

ANTI-PIRACY STATEMENT

It has come to the attention of Redstone SoftBase Company that a few FrontRange Solutions Partners are pirating GoldBox by:

>> placing their copy on a client's machine or workstation.

>> connecting their laptop to a client's network and using their NFR copy to run GoldBox operations against a client's system.

>> having multiple GoldMine® systems on one machine and running a single copy of GoldBox against all of them.

Not only is this illegal but it deprives the publisher of revenue which is re-invested in support and enhancement of the product.

 

END USERS:

Any GoldBox operation which is run against your GoldMine® data requires that you have a licensed copy of GoldBox for that system. If you detect that a reseller is running a GoldBox operation against your data (for example, by connecting their laptop to your network) and you do not have a licensed copy of GoldBox, please inform Redstone SoftBase Company immediately at:

310-441-0782.............(Voice)

redstone@earthlink.net...(Email)

 

RESELLERS:

You cannot place your copy on a client's machine, and you also cannot connect your laptop to a client's network and run GoldBox operations against their GoldMine® data. Finally, you cannot use a single GoldBox system against multiple GoldMine® systems on your machine or network. If you are going to use GoldBox for any reason upon a client's GoldMine® data, the client must have a licensed copy of GoldBox.

 

Introduction

Thank you for purchasing the finest set of database tools for your GoldMine® system! GoldBox-5 is a Visual dBase7 32-bit Windows application which manipulates the fields, records and files that comprise the backbone of your GoldMine® system: the data itself. It performs specific tasks very efficiently and allows you to "gang" several utilities to produce the desired results. Your increasing familiarity with GoldMine® and GoldBox-5 will make it easier to determine which tools to use for a particular scenario.

For brevity, please note that the word GX5 may be used in the following document to indicate GoldBox-5.

 

License

GoldBox-5 is licensed for use on 1 machine, against a single GoldMine® system. Although it can address a networked GoldMine® system, one user can only access it at a time. If you are using Interactive Mode from multiple workstations, each workstation must have a unique GoldBox-5 license and serial number. You cannot copy the software except for backup purposes. Please visit Web site www.redstonesoftbase.com and read the Anti-Piracy Statement under {Support} {Documents}. Besides its illegality, software piracy deprives the publisher of revenue that can be invested in continued development, documentation and support of the Product. You cannot transfer the license of GoldBox-5 to another party unless authorized to do so by Redstone SoftBase Company. You cannot distribute, modify, reverse engineer, decompile, disassemble, or otherwise attempt to re-create the source code from GoldBox-5.

 

No-Return

Since one could conceivably use GoldBox-5 for many money-saving purposes within a regular 30-day evaluation period, there is a No-Return policy on the software!!! Please evaluate your needs, view the demo and ask specific questions before buying GoldBox-5. Redstone SoftBase Company will not accept any returns of the product, for any reason. No Exceptions.

 

Disclaimer

Although GoldBox-5 is time-tested and has proven successful in thousands of implementations, there is no implied guarantee from Redstone SoftBase Company concerning its usage. As with any software package, use at your own risk! The author makes no claims and assumes no responsibility for the integrity of your data files. If you are in doubt about any feature, please backup your system.

 

 

Installation

GoldBox-5 should be installed in a directory called GOLDBOX5 but must NOT be placed as a subdirectory under GoldMine. Also, do not load GoldBox-5 in a directory with long path names. There is no security on GoldBox-5 so you may want to load it on the local drive of the database administrator's workstation. Before loading the program, please see the GETTING STARTED section below.

If you received GoldBox-5 on CD:

1. Place the CD in your drive, then go to {Start} {Run}.

2. Key in: E:INSTALL (or substitute your CD drive letter if necessary)

3. Follow the instructions displayed. Essentially you are prompted for the Drive, then the Path. You must not use long path names for storing GoldBox-5 on your hard disk.

If GoldBox-5 was emailed to you:

1. Go to DOS Prompt and create a directory called GOLDBOX5. Example: MD\GOLDBOX5

2. Change to this directory. Example: CD\GOLDBOX5

Pkunzip the file. Example: (Assumes GOLDBOX5.ZIP in Root Drive)

PKUNZIP C:\GOLDBOX5

 

Support

PLEASE BACKUP CONTACT FILES BEFORE PERFORMING A FILE-ALTERING GOLDBOX-5 UTILITY! It is the only way to insure a reversal of a GoldBox-5 procedure that did not perform according to your plan. Redstone SoftBase Company is not responsible for the integrity of your files. GoldBox-5 works deep within the file structure of GoldMine. Its usage requires some basic database knowledge. GoldBox-5 was designed for those who can get underneath the excellent interface GoldMine® provides and attain an understanding of where, how and why GoldMine® data is stored. If this is not within your immediate realm of knowledge, you might educate yourself with the GoldBox-5 and GoldMine® documentation, or have a GoldMine® Solutions Partner consult with you about implementing this powerful data management tool. FREE support must be limited to very brief inquiries or bug notices. Support answers are not guaranteed to solve your particular issue, although 100% correct answers are the goal.

E-mail Message and {Supt} key: You can send an Email message to redstone@earthlink.net for support. All messages are answered, usually within the same day. Please include your GoldBox-5 version and serial number to help speed an accurate reply. Also, please update yourself to the latest version before inquiring, as a bug fix or enhancement may have already been added to the program. If your inquiry concerns any Utility with a Saved Setup, press the {Supt} button at the Setup Screen and include the TXT file as an attachment to your message. Unless specifically requested by Redstone SoftBase Company, never attach other files, such as Contact Files or Incoming Files for Import!

Voice: This is strictly an as-available service, Mon-Fri, 9-5 Pacific. Support is provided by the author, who may or may not be present during regular business hours. Calls left on the machine are generally not answered since there is no feasible way to absorb the expense of long distance return support calls.

Solutions Partner: If you purchased GoldBox-5 from a GoldMine® Solutions Partner who also implemented it on your system, you should first contact their company for inquiries specific to your setup.

FEE-BASED IMPLEMENTATION: Redstone SoftBase Company can provide fee-based implementation or support, as available. Please call for details. Redstone SoftBase Company also recognizes the firm Telesage Solutions as an excellent source for this service. The owner of the company, Paul Laufer, is considered one of the very best implementers of GoldBox-5 available. Resellers are also encouraged to contact Telesage Solutions for pinpoint implementation of GoldBox-5, GoldMine® and GoldSync. The company can be reached at: 562-597-7188 (voice) paul@telesagesolutions.com (email) www.telesagesolutions.com (web).

 

Downloads

GoldBox Web Site: http://www.redstonesoftbase.com

ADDTOGX5.ZIP

This is the standard update to GoldBox-5 and it is refreshed periodically. Notices are not sent to users when GoldBox-5 is updated, so you may wish to make a habit of checking the Web site from time to time. The update is always the first file at the {Files} menu at the Web site. Unzip over the top of your system if your version is older than the one displayed. Answer {A-ll} when prompted to Overwrite existing files. Your Config Settings and Saved Setups are preserved whenever you update.

ZIPTABLE.ZIP

An optional 43,000 record table of USA Zips, States, Counties, Cities, Time Zones and a blank Territory field. After unzipping in the GoldBox-5 directory, run {Service} {Pack GX5 Files} to reset indexes. This is a 1-time download only! This file is called the Virtual Lookup Table and is used by the 10 Get() functions in GoldBox-5, if you choose to use them. They are documented below in the Function Definitions section.

 

Ordering

All orders for GoldBox-5, whether End User or Reseller, are now placed through the Addon Store, connected to the FrontRange Web site. Following is the direct link to the GoldBox ordering page for End Users only: http://www.addonstore.com/goldmine/pages/goldbox.htm

For Reseller ordering, the URL will be emailed to existing resellers if you have purchased a GoldBox product between May 2000 and January 2001. If you do not receive the URL for orders, please email Redstone SoftBase Company at: redstone@earthlink.net

Payment is by Credit Card (preferred) or prepaid check only. You may choose to download the program immediately or have it shipped on CD (plus shipping charge).

Upgrade purchase are handled directly by Redstone SoftBase Company. An 'upgrade' purchase is price-based only - you will receive a full version of the product, which must be loaded into its own separate path.

For an Upgrade purchase by an End User, you must provide your existing GoldBox serial number (which always displays at the Top Level Menu).

For an Upgrade purchase by a Reseller, you must provide the Company Name, Phone Number and the existing GoldBox serial number of your client.

Resellers: A large part of the GoldBox success story since 1993 is your continued promotion, marketing, support and implementation of the program. This is greatly appreciated by Redstone SoftBase Company.

Please note: Any work you do on client's data which uses GoldBox-5 requires that the client purchases a licensed copy. This is true for any situation: whether you are performing GoldBox-5 processing onsite, at your site for testing, at your site for delivery of a final product, or remotely to their site. GoldBox-5 is priced and promoted to exist on every single GoldMine® machine.

United Kingdom Orders:

Please order from Canonbury Services Limited.

Phone: 0207 359 8524

Fax: 0207 359 7775

Email: sales@canonbury-services.co.uk

Web: http://www.canonbury-services.co.uk

 

UPDATER Contact File

If you will be Importing into Tab Files or Updating: Please open your regular Contact File in GoldMine® if it is not already selected. Go to F-ile, O-pen Database, N-ew. At the Description prompt, key in: Updater File for GoldBox-5. Click on N-ext. At the Create GoldMine® Database prompt (see Hint below), key in a path to the new Updater Contact File. It is critical that the final portion of the subdirectory is called UPDATER since GoldBox-5 looks for it exclusively. Click N-ext. Click N-ext. Click F-inish.

Hint: When adding the Updater Contact file, at the prompt asking for the path, click the ellipsis and get the COMMON file. Then overwrite the word COMMON with UPDATER. That saves keystrokes and makes the path consistent with the path-naming scheme of the Common Contact File.

 

GOLDBOX5 User Name

You must create a special User in GoldMine. Click on F-ile, C-onfigure GoldMine, U-sers File, N-ew. At Username prompt, key GOLDBOX5. At Full Name prompt, key GoldBox-5 User Name. This is all that is required - no password is necessary, and you can assign whatever rights you wish. You may want to assign appropriate rights and password to prevent users from accessing this way.

 

 

BDE Setting

BDE (Borland Database Engine) Setting:

Some users have trouble accessing both GoldMine® and GoldBox-5 at the same time. GoldBox-5 is designed to be able to access GoldMine® whether that program is open or not. And, in the case of GX5 Interactive Mode, it is required that both programs be open at once. The problem seems to be in the BDE Administrator and can be fixed easily. Go to:

 

Loading GX5

After you have created your Updater Contact File and added the GOLDBOX5 user to GoldMine, it's time to load GoldBox-5. If you haven't done these things, see above.

A bit more on installing GoldBox-5. Although you can install it on the network, only 1 user can access at a time. GoldBox-5 will address a multi-user version of GoldMine® of any size (remember, the dBase IV version only, not the SQL version!). GX5 itself, though, is a single-user program! Typically, in a network environment, and since GX5 is normally used by the system or database administrator, and, since there is no security on GoldBox-5, you may want to install it on a workstation. Just as long as that workstation can access the network version of GoldMine. You cannot install GoldBox-5 on more than 1 workstation unless you have a separate GoldBox-5 serial number for each install.

The easiest way to load GX5 is to go to {Start} {Run} in Windows and put the load command in. Remember to include the drive letter and full path. Example: C:\GOLDBOX5\GX5

Your command is saved in the {Start} {Run} box so you can easily reload anytime.

You can also setup a shortcut icon, using the above command as the shortcut.

After you have loaded GoldBox-5 the first time and logged in, you can save a few keystrokes by adding your login initials to the above load command. For example: C:\GOLDBOX5\GX5 DEP

That will take you right past the login screen and directly to the Top Level Menu.

 

You can also load GoldBox-5 with one of these special parameters:

 

C:\GOLDBOX5\GX5 dep /E XPADDR GOLDBOXPATH c:\goldbox5

This is an example of launching an Export. Normally, you never need the 4th and 5th parameters, if, for example you are launching from the {Start} {Run} menu in Windows, or from a shortcut icon or a Q-file. However, as in the case where you are launching an outside application using GoldMine's Automated Processes, you then MUST pass in the 4th parameter GOLDBOXPATH and the 5th parameter, which is the GoldBox-5 path. This is so that GoldBox-5 changes into its own directory so that its system files are visible. This might also be used if you are launching GoldBox-5 from another non-GoldMine® application.

C:\GOLDBOX5\GX5 NOFIELDS

Same as selecting the option at the {Service} {Config Screen}, to NOT USE GoldMine's FIELDS5.DBF database to display Field labels. Sometimes this file gets corrupted.

Finally, there are only 27 (yes, twenty-seven!) other ways to load GoldBox-5, depending on the operation you wish to launch. For more information, see the section LAUNCH CAPABILITY.

 

Login

This is simplicity itself. Just key in the initials you would like to use for access and press Enter or click [GO]. There are no "wrong" initials and there is no limit on the number of sets of initials which can access GoldBox-5 (but remember, only 1 at a time). If you click [Cancel] you are exited from GX5.

If no GoldMine® User Name is assigned to your initials, you are taken immediately to a list box showing all GoldMine® User Names in your GoldMine® system. Select one that will be linked to your GX5 login initials. By default, this GoldMine® User Name is used for stamping records in the LASTUSER field of GoldMine® records you add or modify, and is also the default User Name on Calendar and History imports.

Remember you can add your login initials to the load statement to bypass the Login Screen.

 

Lockout Feature

This has been a much-requested feature by GoldMine Solutions Partners. It is essentially used to shield clients from accidentally altering certain Setups and System Files when the Solutions Partner has complete responsibility for maintenance and implementation of the GoldBox-5 system. Launched batch operations are not affected by Lockout, only certain Interface options.

The feature appears under the {Services} tab.

At the screen, de-select any option that you do not wish to be accessible by the client. When you click {Go}, the information is written to GX5SYS1.DBF - but not the file in your GoldBox-5 root path. When you selected the option, the file was copied to the OUTBOUND path under your GoldBox-5 path.

After making the changes, you can either send the GX5SYS1.DBF file from the OUTBOUND path to your client, or include it in the GX5TRANS.ZIP file if you are also transferring other Saved Setups or Q-files. In either case, the file you send should be placed in the GoldBox-5 ROOT path of the client's GoldBox-5 system - NOT in their OUTBOUND path.

Menu options you have de-selected will not appear at all on the menus. Browser options you de-selected will be grayed out at the GXW Browser.

If you later need to give full access to your client, simply have them erase the GX5SYS1.DBF in the GoldBox-5 Root path. Or, you can send them another one, with your desired options selected or de-selected.

 

SERVICE / Config Screen

This stores basic setup information about GoldBox-5. The first 2 prompts are critical and must be accurate. Always click [GO] to exit the Config Screen because GX5 has accuracy logic built in to ensure that your paths are correct.

[GoldMine® Root Path] Click to select. This is the path where the GMW5.EXE, DATADICT.DBF, USERS.DBF and most importantly the GM5S32.DLL reside. On some GoldMine® systems, GM5S32.DLL may not be in this path. If not, you will have to copy it there, since GoldBox-5 only looks for GM5S32.DLL in the GoldMine® Root path! The GM5S32.DLL is used by GoldBox-5 for sync stamping. You can (Alt-Tab) out to Windows if you have to locate and copy this DLL into the GoldMine® root path, then (Alt-Tab) back to GX5. GX5 won't let you exit until it sees the file in this path.

(GoldMine® Root Path) This is an editable prompt because you might want to just change a drive letter from the default of C to D or F or whatever. Also, although UNC paths starting with the double-backslash \\ should be recognizable by GoldBox-5, you may have to substitute a standard Drive Colon Backslash instead, as in changing \\ to H:\ .

[GMBASE Files Path] Click to select the subdirectory under the GoldMine® Root Path called GMBASE. This is the path where SPFILES.DBF, CAL.DBF, LOOKUP.DBF, GMTLOG.DBF and other general GoldMine® files are stored. On older GoldMine® systems, these files may actually reside in the GoldMine® Root Path so you may have to do a little checking in Explorer or whatever if you suspect this.

(GMBASE Files Path) Editable if you just want to edit the path directly, as above for the Root path.

[GXW Browser Cont. Path] Always press this button to select the Contact Path, as it is a solid test of whether the GMBASE Files Path is correct. This displays the same Contact Files list you see in GoldMine® if you click {File} {Open Database}. Select the Contact Path you want the GXW Browser to use. Remember, you can always come back to this selection and choose a new one if you want the GXW Browser to open a different Contact File.

(GXW Browser Cont. Path) Edit this prompt only if you have to change a UNC code to a standard Drive-Colon-Backslash (although a UNC Contact Path should work fine).

Ö Establish DDE hot-link between the GXW Browser and GoldMine? Ö Selecting this option causes a DDE link to be set from records you are browsing in the GXW Browser and GoldMine, if it is open. Although the link previously was transparent, this switch was added because sometimes inconsistent errors result when the DDE link is active. A typical error is: Expecting NUMERIC. This may display in other parts of the program that have nothing to do with the GXW Browser. The error may be caused if you have more than one copy of GoldMine open. In any event, if you are experiencing inconsistent errors as described, please de-select this option.

{GM User} This is a required entry and must match your GoldMine User Name login. GoldMine Software requires that the GoldBox-5 user have Master Rights before running any operations. This value, and the following password (if used) are evaluated by GoldBox-5 to determine if you have Master Rights. The name you key in here is also the one that is stamped into the LASTUSER field on those GoldMine files you modify with GoldBox-5.

(GM Password) This is your GoldMine password that is keyed into GoldMine's login screen, if you use a password. If not, please leave this blank. This entry will display as you type it, but will be hidden when you exit the Config Screen. The password is encrypted by GoldBox-5 and will not appear anywhere in the software. The password will display in UPPER case here, which is fine. This prompt, together with the above GM User prompt, are used by GoldBox-5 to determine if you have Master Rights.

| Displayed Date Format | Highlight the format you wish dates to be displayed in. If you choose 2-year display, the next prompt is critical.

(2-Yr Date Display: Start of 100-year span) Selecting 2-year date display is a bit limiting because you can only see a maximum 100-year span. Mostly this is Ok but what if you are tracking birthdays? Anyway the default of 1910 means that all your dates in GoldMine® must fall within the range of 1910-2009. If you key in 1950, the date span is 1950-2049, etc. This is strictly up to you - if you choose a 4-year date display this prompt is ignored and you can key in dates from 0100 through the next century.

(USA Time Zone) This is only necessary if you are using the GX5 function GeTimeDiff(). That function uses this entry to calculate the number of hours you differ from another Contact's time zone. There are USA time zones which display in the Speed Tip for the prompt.

Ö Ignore Daylight Savings? Ö Select only if your particular USA location does not participate in the comical "Fall Back, Spring Ahead" Daylight Savings Plan.

(Default Zip Length for Get() Functions) Default of 5 is normally Ok. Used only by the GX5 Get() functions for returning values from the Virtual Lookup Table.

Ö Do not use FIELDS file for Labels? Ö Select only if GX5 informs you that it is having trouble opening the GoldMine® FIELDS.DBF file, which GX5 uses to retrieve field labels. Not using the FIELDS.DBF won't affect the processing of GX5 since the display of field labels is strictly cosmetic during Setup.

Ö Turn OFF Sync Marking? Ö Normally you don't want to ever select this! It means that any changes you make with GX5 won't be reflected in GoldMine's Tlogs (Transaction Logs). The result is that those changes won't sync. Sometimes you want this. For example, on the network system you may need to populate a user-defined field with a value that will later be used for a temporary purpose, such as creating a Group or a Mail Merge. After you are finished, you may want to blank out the user-defined field. And you don't want those events to sync with remotes because it is a local activity. This would be a typical case where you would turn Sync Marking OFF, do your operation, then turn it back on. You'll always know when Sync Marking is off because it displays in big red letters at the Top Level Menu.

[GO] Always click here to exit - don't press Alt-F4 or click the X-cancel. GX5 checks the accuracy of your path entries and informs you if they are in error. Also, your entries are then saved into the GX5 CONFIG.DBF file.

SERVICE / Pack GX5 Files

This option packs and rebuilds the index tags of GoldBox-5 system files (NOT GoldMine®). It is automatically invoked upon first time loading or loading after applying a GX5 update. You'll also be reminded to do this if you have not selected the option within the last 45 days.

 

SERVICE / Copy Paradox to dBase4

If you have a Paradox file and would like to use it in GoldBox-5 for Browsing or Importing, this option provides an easy solution. You simply select the Paradox file, which always ends in the 2-letter extension of DB. To make this procedure very simple, GoldBox-5 will always copy the Paradox file to its dBase4 counterpart in the same path, but with the standard extension of DBF. If there was a Paradox memo field (the extension is MB) that becomes the dBase memo extension of DBT. After the copy procedure finishes, you can browse the file via {File} {Browse ANY dBase4 File} or with the BR7 Utility.

 

TOP LEVEL MENU

This is the screen you will normally be returned to after completing an operation. You'll see the 6 tabs along the top: {Batch} {Misc} {Service} {File} {Help} {Exit}. I realize you might be used to seeing {File} as the first tab in Windows programs but in GX5, the{Batch} tab is where most of the action takes place and I feel it should be the most prominent. To me, {File} means just that, and in GX5 the {File} tab displays various GX5 system files you can browse and setup.

{BATCH} This menu lists all the operations that can be launched (executed from a Command Line, Q-file or Timer). Those options preceded by a checkmark indicate that they can be launched in Interactive Mode. See the section 'Interactive Mode' for more information. Underneath the first 12 options is the 1..2..3..4 section. These options will be populated with your latest Saved Setup accesses, so you can click on one and instantly open the related Setup screen. The {Direct Launch Ops} are those operations which can be launched but which have no Saved Setup.

{MISC} Contains operations that are not launchable. {GXW Browser} applies to GoldMine® file operations, {Q-file Setup} and {Timer Setup} to GX5 procedures. {Interactive Mode} provides an information panel on this powerful capability, documented later in the manual.

{SERVICE} Documented above.

{FILE} Allows access to various GX5 system files for viewing and setup.

{HELP} A single panel is displayed showing general information about GoldBox-5.

{EXIT} Exit out of GoldBox-5. Using this Exit or the one under the {File} tab remembers your latest Saved Setup accesses. These will be displayed in the 1..2..3..4 section under {Batch} the next time you load GoldBox-5. It also releases various DLLs. Always exit this way – please do not click the 'X' at the top right of the screen to exit!

Under {Batch} {Contact Validator} is the 1-2-3-4 section. GX5 remembers the last 4 Saved Setups you viewed and displays the Launch ID here, the most recent appearing first. This lets you simply click on one and advance directly to the Saved Setup Screen. Please note that your most recent settings are preserved when exiting GoldBox-5, but only if you exit via the [Exit] option at the {Top Level} or {File} menus.

Under {Batch} {1-2-3-4} is the option {Direct Launch Ops}. These are 11 other operations you can run in Batch Mode in GoldBox-5, but which have no Saved Setups.

 

 

GoldMine® MAIN CONTACT File

The nucleus of GoldMine. Everyone starts with a Main Contact record. It is so critical that fully one half of the main screen in GoldMine® displays Main Contact data only. The Main Contact File, collectively, is actually made up of three files: CONTACT1.DBF, CONTACT2.DBF and CONTACT1.DBT.

Contact1.dbf contains all of the fields you see in the top half of the main screen.

Contact2.dbf contains summary fields such as Comments and Prev Result and displayed data relating to scheduled and completed activities (the Summary tab). It also contains all user-defined fields. These are the 10 default fields (UserDef##) and any which you add to GoldMine® (the Fields tab).

Contact1.dbt contains the freeform Notes for all records in Contact1.dbf. If you look at nearly any file in GoldMine® using GXW Browser and click [Fields] to view the field structure, you will see a field most commonly called NOTES, which is type 'M' and has a length of 10. Some users are fooled into thinking that you can only put 10 characters into a Notes field. Actually, the NOTES field is just a pointer into the DBT file that tracks where in the DBT the text for the particular record begins and ends. The DBT file is what contains the actual text. The Main Contact Notes are visible from the Notes tab.

When GoldBox-5 talks about the Main Contact File it really means these 3 files together. They are related in such a way that they appear to be just one file. So, if you are importing NEW records into the Main Contact File, you actually have simultaneous access to Contact1.dbf, Contact2.dbf and Contact1.dbt.

 

GoldMine® TAB Files

All of the following files relate into the Main Contact File. GoldBox-5 refers to them as the Tab Files. They can contain multiple records, which "know" to stay attached to a Main Contact record. For example, a Main Contact might have 3 related Details, 2 Calendar Activities, 4 Automated Processes and 27 History records (also known as Completed Activities). The relationship is known as parent-child, with the Main Contact record as the parent and the Tab records as children.

There is no magic involved in a Tab record "knowing" which Main Contact it is attached to. In relational database systems, a common field is used to link the files together. In GoldMine, this is the Account Number, or Accountno field. If a Main Contact has 27 History records, each of those History records contains the same Account Number as that in the Main Contact record.

Technically, the Contact2.dbf is a related file because the Account Number links it to Contact1.dbf. But you can have only one Contact2 record per Contact1 record (known as a 1-to-1 relationship). For the Tab Files, you can have as many as disk space will allow (known as a 1-to-many relationship). For the purposes of GoldBox-5, Contact2 won't be referred to as a Tab File because in concept it is just an extension of the Contact1 file.

 

GoldMine® CALENDAR File

This file contains the Scheduled, or Pending Activities for Main Contacts. These include things like callbacks, appointments and mailouts. Anything in this file hasn't occurred yet but will hopefully on some date in the future. The Cal.dbf file is global to all Contact Files and is in GoldMine's GMBASE directory. It is a major reason why it is best to work with a single Contact File, or, if you are using multiple Contact Files, to schedule against only a single Contact File.

 

GoldMine® HISTORY File

The file is ContHist.dbf and is unique to the Contact File. It contains all Completed Activities. The History file, in any GoldMine® system, will usually contain the most number of records.

 

GoldMine® SUPPLEMENTAL File

The file is ContSupp.dbf and is unique to the Contact File. This is a "catch-all" Tab file that contains Additional Contacts, Details, Referrals, Automated Process Tracks, Org Chart Records and Links to Documents. The records in this file "know" what they are simply by a 1-character value in the RecType field. Additional Contacts contain 'C' in the field, Details contain 'P', Referrals contain 'R', Tracks contain 'E', Org Chart Records contain 'O' and Links contain 'L'. Email Addresses are also held in this file as special Detail records and contain 'P' in the RecType field.

Org Charts are contained in the ContSupp.dbf file but, like Groups, relate to the Main Contact File with the grandparent-parent relationship (although not in exactly the same way). When you activate an Org Chart you can access other Main Contacts by clicking on the chart members in the graphical display.

 

GoldMine® LOOKUP File

Lookup.dbf contains the Field Lookups that appear when you press F2 or Rt-Click in GoldMine. Field Name in most cases relates records here. This file also contains the Zip Code entries that automatically populate the City and State fields when a Zip is entered. This file is global to all Contact Files and resides in the GoldMine® GMBASE directory.

 

GoldMine® GROUPS File

ContGrps.dbf is the Groups file and is unique to each Contact File. It contains subsets of Main Contact records to be handled for specific purposes, as in scheduling, mailing or exporting. The relationship between the Groups file and the Main Contact File is not parent-child but grandparent-parent. The Main Contact File is still the parent but is now accessed via the Groups file that rides over the top of it. When you have a Group active, you are actually stepping through Group records, which then immediately pull up the related Main Contact records. Per Group, it is a 1-to-1 relationship, but a Main Contact can be a member of any number of Groups.

 

Duplicate Account Numbers

Although now a rare situation, you may have duplicate Account numbers in the CONTACT1 file of your GoldMine® system! This situation must be rectified immediately since GoldMine® will not operate correctly with duplicate Account numbers in the Main Contact File. The GoldBox-5 Merge-Purge may "hang" if it encounters duplicate Account numbers.

To determine if you have dupe Account numbers, go to {Misc} {GXW Browser} {CONTACT1 File}. Click the {Break} button, then double-click the Contact1->Accountno field. Run the operation. When you View the list, at the 3rd record the Unique Values number and the Examined number should be the SAME. The HOWMANY column should contain only the number 1. If you have entries with number 2, these are duplicate account numbers! Write down the record number which appears at the far left of the screen for each. Or, [Copy] these records to an SDF file which you can then view in Notepad.

Use BR7 to manually edit the Account numbers of the dupes. Browse CONTACT1.DBF and choose the CONTACC index tag with the [View] button. Click [Goto] to access the record number of each instance of a duped Account number. The record below should have the exact same Account number. Recommend you change the last 3 characters of the Account number to {xxx}. When finished, repeat the above procedure to recheck.

 

File Formats for Storing Data

File formats determine how data is stored. For example, GoldMine® uses the dBase IV file format to store its contact and system information, and GoldBox-5 uses the same. For the Import and Export utilities in GoldBox-5 you will need to know the file format of an incoming file (for Import) or how you wish the flat file to be formatted (for Export).

Clipper/dBase3: Index files have the extension of NTX (if Clipper) or NDX (if dBase3), Memo file has the extension DBT. The memo file is where Notes are stored.

dBase IV: Same as above with different memo format. Index file is MDX - it's just one file, which contains "Tags", or sub-indexes. You can have up to 47 sub-indexes inside each MDX file.

 

FoxPro: Same as above but with different memo format, whose extension is FPT. Index file extension is CDX or IDX. GoldBox-5 can't currently read FoxPro files so you'll have to convert them to dBase before attempting an import.

 

Paradox: This file format is similar to dBase but is just different enough to not be considered part of the xBase family (Clipper / dBase / FoxPro). As a result, it is now generally considered to be a defunct file format. If you have a Paradox file you wish to browse or import into GoldMine® with GoldBox-5, go to {Service} {Copy Paradox to dBase4 File}.

ASCII Delimited: ASCII means American Standard Code for Information Interchange, and is a common format many different applications use to make data formats consistent between them. You may hear this type of file referred to as "comma delimited". Some call it ASCII 2 but that is incorrect (an assumption that the 2 final characters of the acronym are the Roman numeral 2). In reality, a true ASCII Delimited file is quote delimited, comma separated. It must be in the following form or an error will result:

"S. Holmes","221B Baker St.","London","UK","Detective",38,18420122

"J. H. Watson, M.D.","221B Baker St.","London","UK","Doctor",47,18330425

Fields are numbered from left to right; commas separate fields. The double-quote character surrounds character fields so that commas can appear in a character field without the program thinking that a new field is starting. The last 2 fields in the example are the age and birth date. The age is a numeric field (no quotes) and the birth date is a standard ASCII date field (YYYYMMDD as a numeric field). You will need to use the Date Mask so GoldBox-5 can auto-format it. At the Import Field Template, press [DtMask] at the GoldMine® field and select {yyyymmdd} as the format.

 

SDF (System Data Format): This is also an ASCII text file, but there are no field delimiters. Each record line is the same length, and you identify fields by number ranges. Typically this might be a file created by a report, written to disk. The above ASCII example looks like this in SDF:

S. Holmes 221B Baker St. London UKDetective 3818420122

J. H. Watson, M.D. 221B Baker St. London UKDoctor 4718330425

 

dBase4 File & Field Naming Conventions

The dBase4 DBF file name has a restriction: It cannot begin with a non-alpha character! Always make sure the file name begins with an A-Z character. You can have numbers or underscore in the next 7 characters, but no embedded spaces or special characters. Also, keep the file name 8 characters or less.

A dBase file is made up of fields and they also follow a strict naming convention:

Especially with a program like Excel, where column headings become field names, you must ensure the column headings conform to this rigid naming convention!

 

Parse ASCII to dBase

This is the best way to convert an ASCII file into a dBase file – it is superior to all other known methods.

This option works only for ASCII Delimited files, also known as CSV files or Comma Delimited. For an SDF Fixed Length Text file, which is basically a report format type of text file, use the procedure listed in the "Import/Update" section, or another software package such as Microsoft Access or Excel.

The GX5 Import requires the final Incoming File in dBase format, even though ASCII and SDF files can be auto-converted by GoldBox-5 prior to an Import. But first you need a DBF file with the correct field layout. Previously, you had to create one manually in the BR7 Utility, or in another package such as Microsoft Access or Excel. Now you have a quick and superior method to do this with little or no manual intervention. This procedure even gives you the option of turning long character fields of more than 250 characters into Memo fields!

IMPORTANT: If you have a Microsoft Excel Spreadsheet:

To properly save an Excel spreadsheet into a 'true' ASCII CSV file, you MUST choose the one further down in the list, the one labeled: Text (OS/2 or MS-DOS) (*.txt) Please DO NOT choose the one labeled Text (Tab Delimited) or the one labeled CSV (Comma Delimited). Remember: always choose the option further down in the list entitled: Text (OS/2 or MS-DOS) (*.txt) That option will use delimiters on character fields where necessary, which is what you want.

 

PARSE ASCII TO DBASE SETUP SCREEN:

[ASCII File] Press this button to select the ASCII file to be parsed. It will populate the entry to the right, into which you can also manually key in the path and file name.

(Field Separator) This defaults to a comma and in almost all cases should be retained. Please try to avoid getting a file or saving a file with anything other than a comma as field separator. However you can key in a different character here if you are sure that the ASCII fields in your file are separated by something other than a comma. The only other occasionally used character for this purpose is the Tab, and you can indicate that by keying in a capital T. If you do use a separator character other than a comma, GoldBox-5 will do an EXACT parse of the file, which will take longer. The fast parse method, which uses Visual dBase's APPEND FROM command, won't recognize anything other than a comma as a field separator. That is important to note if you plan on doing automated conversion with the Text-to-dBase4 utility.

(Field Delimiter) This defaults to a double-quote, which is the generally recognized standard. You can key in another character such as a pipe if that is how character fields are delimited. The word 'delimited' in this context means how character fields in the ASCII file are surrounded. The sole purpose of the delimiter in character fields is so that you can include the normal separator character, a comma, within the field so that the parser does not interpret the comma as a new field. If a file has its character fields delimited by a Tab you can key in a capital letter T to denote. GoldBox-5 will attempt to ignore the delimiter in a text entry if it is not immediately followed by a separator value (comma). In that case, if you had double-quotes within a text entry that you wanted as part of the text, they should be properly interpreted.

(View ASCII Rec) You're going to get to review the field structure before the actual DBF file is created, and to assist, GoldBox-5 parses out an ASCII record. The values from the parsed record display alongside the field layout as a guide. This allows you to go to a particular ASCII record. The default is 2 because the first record may contain field label descriptions, not actual data, and it may be incomplete. But you can view record 1 if you want. Suggest not going too deeply into the ASCII file for a record, as it takes more time to locate the line, the higher it is.

(DBF File Name to Create) Self-explanatory. Note that this file is always placed in the GoldBox-5 root path, and it always starts with the characters DD so you can easily identify it (for later erasure, for example). Key in up to 6 more descriptive characters using only letters, numbers or underscore. No special characters or embedded spaces! Please note that if you are auto-creating Memo fields and you wish to move the DD*.DBF file to another location on your disk, you must also move the DBT file!

When you click [GO]:

Please note that if you are doing a recurring import and are always given an ASCII file with no changes to the field layout, you only have to do the above parsing procedure one time. Once the DBF file is created, you can use GoldBox-5's automated Text-To-dBase4 Conversion operation from within a Q-file. See the next page for details on this operation.

 

Convert SDF Fixed Length Text File

1. BR7 should be in your GoldBox-5 path but if it isn't, you can download BR7UP.ZIP from Web www.goldboxonline.com and unzip it there. BR7 is a generic free utility from Redstone SoftBase Company which browses dBase files. Recommend you read the BR7help.txt file before using it.

2. Make sure the Incoming SDF Text file is in a path on your system. You may even want to copy it to the GoldBox-5 directory although this is not necessary.

3. For the purpose of this discussion, we will assume the final Incoming File as a dBase4 file will be named INFILE.DBF. Load the BR7 Utility with the following special parameter. We will load it from the {Start} {Run} command like so: C:\GOLDBOX5\BR7 INFILE DBFTABLECREATE In this case you are passing 2 parameters to BR7: The file name of INFILE and the special code DBFTABLECREATE, which tells BR7 to create INFILE.DBF if it does not find it. By default, this file will be created in the directory where BR7 resides. If you wanted to create INFILE.DBF in another path, you would precede the file name with the drive and path, as in: C:\GOLDBOX5\BR7 G:\APPS\DATA\INFILE DBFTABLECREATE

4. BR7 will give you an acknowledgement message, telling you that the file was created and that a DUMMYFIELD was added. Click out to exit.

5. Go back to the {Start} {Run} and backspace out the word DBFTABLECREATE from the above command, then click [OK]. This will load BR7 and put INFILE.DBF into the Browse Screen.

6. Click the [Modify] button to modify the field structure.

7. Make sure you have a printout that shows the accurate layout of your SDF text file! Or, you can have the file, or a piece of it, loaded into NotePad and switch back and forth when you need to view it. This is the most critical portion of the conversion process. In an SDF file, ranges identify fields. You may want to review the "File Formats" section above to get a feel for how SDF files are formatted.

8. The first thing you'll want to do is overwrite the DUMMYFIELD entry and make it your first field. Or you can just click the [Delete] button to delete it.

9. Add your next field. Go to the last record and press the Down-Arrow. Each field requires a legal Field Name (see above for Field Naming Conventions), a Field Type of C for character, N for Numeric, D for Date and L for Logical. The Field Type M for Memo is also valid, but when importing from a text file, you won't use it. To continue, a Field Length is also required. Character Max = 250, Numeric max = 19, Date Max = 8, Logical Max = 1 and Memo Max = 10. For Numeric fields, an optional Field Decimal value can be entered. The value here represents the number of places past the decimal point, such as 2. Please remember the total length of a Numeric field includes everything, including the decimal point. A Numeric field of 11 Length and 2 Decimals means you have 8 places before the decimal point and 2 past it. Finally, a Field Sort field is provided so you can order your fields properly. The value is numeric, and you will see your field 'jump' to its new location after moving off the record. Order is everything when setting up this DBF file so please ensure it is correct. The fields have to match the exact order of the text file. With SDF, the field lengths are most critical! You have to match the field length with the range in the SDF file. For example, if the Contact Name is in positions 31-65, make sure you make the field length for the Contact Name 35! Ensure that each field length exactly matches the range covered by that field value in the SDF file.

10. When adding the fields to your new DBF table you may want to name the fields the same as the corresponding fields in GoldMine. GoldBox-5 will auto-map them the first time you load the Field Template, saving you a bit of time.

11. This is most critical: Even if you will not be mapping an incoming field in the ASCII file, you MUST still add the field to the DBF table! If you wish you can even name the field NOTUSED01, NOTUSED02, etc. And, the field must be the proper type. Remember: You have to add the field!

12. Do not add a Memo type field, as the conversion will ignore it. Text ranges in the incoming SDF file can be no longer than 250 characters, since that is the size limit for a DBF character field. You can have multiple 250-character fields in the incoming SDF file, since these can be concatenated in the Import Field Template to populate the Notes field.

13. When finished setting up the DBF table, exit from the Browse of the Field Structure. Press [Continue] at the box, and the INFILE.DBF is redisplayed in the Browse Window.

14. To test your Field Structure setup, the next thing you MUST do is convert the Text file. Click [Import], select the Incoming File Type of SDF, select the file name and proceed. When complete, verify that everything is correct!! If it isn't, click [Zap] to zap the file, then click [Modify] again and make any adjustments necessary. Repeat the [Import] and verify that the conversion is correct! Please note: BR7 is a little touchy after a [Zap], so you may have to exit BR7 and come back in.

15. If a 1-time conversion, you are finished. Use the DBF table you just created as the Incoming File at the Import Setup screen. If a recurring import or update, and you will always be handed a text file in the same format, GoldBox-5 handles the conversion automatically. In a Q-file, use the launched {Batch} {Text-to-dB4} operation before your call to import.

 

 

EXE Files

Generally there are 2 main parts to GoldBox-5: The User Interface and the GX5 Batch Processor. Each has its own EXE file. The User Interface is GX5.EXE. The GX5 Batch Processor is GX5BATCH.EXE. You will only load GX5.EXE, ever. The GX5 Batch Processor is called by the User Interface, even if you are running a GoldBox-5 operation directly from the Command Line, a Q-file or the GoldBox Launch Timer. If you do happen to load the GX5BATCH.EXE directly, it will do nothing and exit immediately.

The User Interface is where you setup the operations in GoldBox-5. It also contains the procedures that run independently of the GX5 Batch Processor, such as the GXW Browser. Finally, it contains access and maintenance procedures for GoldBox-5.

The GX5 Batch Processor has no interface ability except for the F10 key, which on most operations you can press to Halt the running of an operation. But that's it. Information about the currently running operation is displayed as it progresses. At the end of the operation, an acknowledgement prompt is displayed if you ran the operation from the User Interface. If you launched the operation, it won't display, and the GX5 Batch Processor will either exit or continue with the next operation in a Q-file.

 

New Setup

Since the creation of a New Setup is consistent for the 11 operations that require them, it will be generally discussed once instead of for each operation.

There are 26 separate operations you can launch (I.e. automatically execute) in GX5, and 11 of them have Saved Setups. These are records in a GX5 system file called GXSETUP.DBF+DBT. Operations having Saved Setups are the Import/Update, Export, Merge-Purge, Dupes Between Files, Group Builder, Groups-by-Break, Org Chart Creator, Global Delete, Global Replace, Notes Archival and Tab File Log Creation.

When you scroll down the {Batch} menu you will see sub-menus pop up to the right for the above named operations. The first option is always {Saved Setup} and that will be discussed later, so please ignore it for now.

Underneath the {Saved Setup} option will be either a single option called {New Setup} or a GoldMine® File Type. Merge-Purge, Dupes Between Files, Org Chart Creator, Notes Archival and Tab File Log Creation only have the {New Setup} option, because these operations always use the Main Contact File as master. The other operations contain different GoldMine® File Types, and you select one of them depending on the task you are going to accomplish. The File Type you select becomes the master file that the GX5 operation evaluates when processing. These are discussed separately in the documentation section for each.

When you select either {New Setup} or one of the GoldMine® File Types, the New Setup form is displayed.

In the blue title bar, the operation is briefly described.

Following are the items in the form:

(Operations's Launch ID: XX +) The GX5 Batch Processor requires an ID so it knows which Saved Setup to open. All start with a special 2-letter code assigned by GoldBox-5, like so: IG = Import/Update; XP = Export; MP = Merge-Purge; DU = Dupes Between Files; UG = Group Builder; BY = Groups-by-Break; OC = Org Chart Creator; GD = Global Delete; RE = Global Replace; NA = Notes Archival; HL = Tab File Log Creation. The rest of the ID you key in. For Imports, Exports and Groups-by-Break, you can use up to 6 characters. For all the other operations, you can use up to 10. GX5 contains logic that won't allow you to create a Launch ID more than once. After keying the Launch ID, you can either press Enter, Tab or click into the next prompt.

(Setup Description) You have up to 32 characters to describe the purpose of the operation. For the Group Builder, you only have 24, because the Setup Description also doubles as the Group Name. More on that in the Group Builder section. Please note that an entry is required in this and the previous prompt. Also note that you can alter the Setup Description at the Setup Screen, but not the Launch ID. The Launch ID is the DNA of the Saved Setup - you can't change it, and it is absolutely unique.

[GO] Checks the validity of the Launch ID and if everything is Ok, opens the Setup Screen.

[Cancel] Returns to the Top Level Menu.

 

Saved Setup

Following are the items on the Saved Setup form:

| Saved Setups | A list box containing all the Saved Setups for an operation. Highlight the one you want and press one of the 5 buttons below. If you double-click an entry that Setup is opened. If you highlight an entry and press Enter it is also opened.

There are 4 pieces of information displayed for each Saved Setup:

1. Launch ID: This is the ID passed into the GX5 Batch Processor so it knows which operation to run.

2. Operation Code: A 5-character value that normally is a short code for the operation. For Imports and Exports, this shows the Incoming File Type or the Exported File Type.

3. GoldMine® Master File Code: Designates the Main Contact File or Tab File as master.

4. Setup Description: Self-explanatory.

The following describes the 5 multi-colored buttons at the bottom of the form:

[Open] Opens the Saved Setup. Same as pressing Enter or double-clicking.

[Launch] Prompts you to immediately launch the operation. If you answer Yes to the (Confirm) prompt, the GX5 Batch Processor is opened and the operation begins.

[Transfer] A GoldMine® Solutions Partner (GSP) most often uses this option. Typically scenario: A separate copy of GoldBox-5 is purchased for the client (as previously stated, that is required if GX5 operations are to be run against a client's GoldMine® data). The GSP sets up and tests various operations on his or her computer, then wants to transfer them to the client's GoldBox-5 system. Here's how to do this: You, the GSP, set up and tested the operations on your GoldMine® system on your C drive. Your client's GoldMine® system is on their network G drive.

1. You must ensure you and your client are on the same version of GoldBox-5.

2. Ensure, via Explorer for example, that the OUTBOUND subdirectory under your GOLDBOX5 path is either clear, or contains other files you wish to include in the final ZIP file.

3. Click [Transfer] to put all Saved Setups into the GXW Browser. Even though the Browser will start by listing Saved Setups for the operation under which you accessed [Saved Setup], actually all Saved Setups are accessible. This allows you to transfer Imports, Exports, Group-Builds or whatever all in the same procedure. Navigate up or down in the GXW Browser to see the other Saved Setup records.

4. The first field is (CopyOut) and all you need to do is put a check mark at all Saved Setup records you wish to transfer. When finished, click [Quit].

5. Saved Setup records you checked are now re-displayed in a new file called AD2SETUP.DBF/DBT. They are re-displayed, allowing you to edit the paths used on your system so they match the paths on the client's system. Usually you only have to change the GM_PATH field to match their Contact File. For example, if you setup a special Contact File called c:\progra~1\goldmine\acmecorp\ on your system, you might change it to g:\progra~1\goldmine\common\ if that is your client's Contact File. Exceptions noted below in points 6, 7 and 8.

6. If transferring an Import: The GM_PATH field contains the Contact File you are importing into. If you are importing NEW Main Contacts (with optional Tab plug-in), this would be the actual Contact File as described in #5 above. But if you are Updating Main Fields or Attaching to Tab Files, this is the Updater Contact File. The Target File, which is the real Contact File, is held in a field called TARGETFILE. This is pretty apparent when you browse the file but is noted here for clarity. Also: The Incoming File is held in a field called IMPORTFILE which must be checked, since the Incoming File will probably be in a different location on your client's machine than on yours.

7. If transferring an Export: The Exported File Name is held in the IMPORTFILE field - please check.

8. If transferring a Merge-Purge: If you selected the option to copy *deleted* records to another Contact File, that is held in the UPD_FILTER field - please check.

9. After you exit the browser, GoldBox-5 informs you that the files AD2SETUP.DBF and AD2SETUP.DBT were copied to the OUTBOUND subdirectory under GOLDBOX5. You are then prompted whether to transfer Q-files as well. If you answer Yes, you are taken into a browse of the Q-file Master Setup Table, where you also check off the COPYOUT field for those Q-files that you wish to transfer. For the Q-file DBFs, you will have to use the BR7 Utility on them in the OUTBOUND subdirectory if you are launching an operation which requires a path. For the 9 operations which have Saved Setups, paths are never entered in the Q-file because they are already tracked in the Saved Setup record. Q-file entries which have paths are operations such as (Text-to-dB4) or (Pack) or (Area Code Split Replace).

10. GoldBox-5 informs you that you can also transfer Field Translations, Sub-Filters and Virtual Lookup Table entries.

11. The GoldBox Launch Timer uses a file called GBTIMER.INI so you may want to copy that into the OUTBOUND subdirectory and alter it directly with Notepad if you want to transfer it.

12. When the OUTBOUND subdirectory contains everything you wish to transfer, you then must zip the files into GX5TRANS.ZIP, or you can create a self-extracting zip as GX5TRANS.EXE. Transport this file, for example via email, to your client and have it placed in the GOLDBOX5 root directory - DO NOT put it into their OUTBOUND subdirectory, otherwise their GoldBox-5 system won't see it when it loads. The file does not need to be unzipped. When the client loads their GoldBox-5 system, the transferred files are automatically assimilated into their system.

[Delete] The highlighted Saved Setup is deleted. If you are deleting an Import or Export Setup, the related Field Mapping DBF and MDX are also deleted.

[Cancel] Return to the Top Level Menu.

 

Setup Screens - Common Features

The 12 GX5 operations requiring Saved Setups have a consistent Setup Screen look, and some of the options are identical across all Setup Screens. Therefore those common options are discussed here.

When the Setup Screen form is displayed, the blue bar at the top of the form notes the operation and if appropriate, the GoldMine® Main or Tab master file which is to be evaluated during the operation.

Some of the Setup Screens are rather simple, others are more complex or "busy". For example, the Export Setup Screen is the busiest because there are so many options available (you wanted 'em, you got 'em!). But a busy screen shouldn't intimidate you because there are only a few items which require action. Appearing in Bold designates these. The above mentioned Export Setup Screen contains only 3 items requiring your action - you can ignore the others if you wish and stick with their default entries.

There are 10 items on each Setup Screen which are consistent, and they are discussed here. Any deviation from the generic use of an item is discussed in the section of that operation. There are also Record Scoping items which only apply to Export, Group Builder and Global Replace, and these items appear at the bottom of the Setup Screen.

The 10 common items are at the top of the form and terminate with the [Contact File] button.

(Setup Description) This is the 32-character description of the Setup previously discussed in the "New Setup" section. You can change it here if desired. For the Group Builder, this is the actual Group Name so please exercise caution before changing it.

[Copy] You can copy any Saved Setup to a new one. This conserves keystrokes, especially if you only need to alter a few of the items of a Saved Setup. Pressing this button takes you back to the New Setup form where you will key in a new Launch ID and Description. If the Launch ID is unique, the current Setup is copied to a new one. GX5 won't display this new Setup, though. You are returned to the current Setup Screen and must access the copied Saved Setup from the Top Level Menu. Please note that for Imports and Exports, the Field Mapping Templates are also copied, which is where real keystroke conservation occurs.

[Supt] This button produces an ASCII text file of your entire setup, which is loaded into the viewer. Its major purpose is to produce a file which can be attached to an email message when you need support on a GX5 operation. Send this to either the GoldMine® Solutions Partner or the software publisher when requested. But it's also a nice way to see everything on one screen, especially for Imports and Exports. GoldBox-5 tells you the name of the file it produced, which is always the first 8 characters of the Launch ID as the file name, with an extension of TXT.

[Note] You can track a narrative for each Saved Setup if desired. This doesn't affect the operation at all, it is just provided for your convenience. If you are a GSP it's also a good way to communicate the Setup's purpose to the client, since this entry will be included in the Transfer of Saved Setups.

[GO] Clicking here automatically saves your Setup Screen entries. If something is missing or incorrect, GX5 will inform you of it and you are returned to the Setup Screen. If everything is Ok, the Setup Screen Action Box displays. Select one of the 4 radio buttons:

1. * Exit to Top Level Menu * Self-explanatory. The operation is not run.

2. * Stay at Setup Screen * Self-explanatory.

3. * Run the Operation * You are prompted to begin the operation. If you click Yes, the operation is loaded into the GX5 Batch Processor and runs. If you click No you are returned to the Top Level Menu.

4. * Go to Update Setup * Enabled only at the Import Setup Screen and is grayed out at all others. You are taken to the 3rd major screen of the Update or Attach to Tabs operation. More on that later.

[Primary Filter] The Speed Tip for this button displays the purpose of the Filter. On some operations, the Filter is optional, on others it is required. Please refer to the specific operation section for more info. You are always taken to the general Filter and Expression Builder form whenever this button is clicked. The Filter and Expression Builder is described in the last section of the manual.

<Primary Filter> Displays as much of the Filter as will fit on the screen. Click the [Primary Filter] button to see the whole thing if the display is truncated.

[Contact File] All Saved Setups require you to select the Contact File upon which you intend to run the operation. A list box is displayed, showing all available Contact Files. Select one, and the result is written into the next prompt.

(Contact File) This is an editable prompt only because GoldBox-5 may not recognize a UNC path (although normally it should). In that case you'd have to change the double-backslash \\ to a standard Drive-Colon-Backslash.

 

Launch Capability

The operations under the {Batch} menu can all be launched via {Start} {Run}, a shortcut icon, within a Q-file or with the GoldBox Launch Timer. For specific launch examples, see the related section for that operation in this document. On many, LAUNCH EXAMPLES are given.

The Launch option lets you use GoldBox-5 as an unattended batch processor. It's easy to do since the main work has already been done in the Saved Setups. In addition, with the GoldBox Launch Timer you can cause any GoldBox-5 batch operation to occur for any day of the week, any time (by minute).

Launching multiple operations requires a Q-file. Please see Q-files

All successful runs of any operation under the {Batch} menu are noted as entries in {File} {Batch Session Summaries}. You can click [View] at any entry for a more readable summary panel.

A launch statement requires at least 3 parameters. Separate each with at least 1 space. CASE is not essential. From {Start} {Run} or a shortcut, include the full path to GoldBox-5.

C:\GOLDBOX5\GX5 DEP /I IGMAIN

{START} {1} {2} {3}

PARAMETER NUMBER DESCRIPTIONS:

1. Your initials for the GoldBox-5 login prompt. Example: DEP

2. The function call letter, preceded by a forward slash. Valid letters:

/A Area Code Split Replacement

/C Copy a Disk File

/D Globally Delete Tab Records

/E Export

/F Text File Conversion to dBase4 DBF file (valid only in a Q-file)

/G GoldMine® Group Builder

/I Import into Main, Tab Files, Main Lookups or Update existing Main records

/J Run a DOS program (EXE) or batch file (BAT) (valid only in a Q-file)

/K Notes Archival

/L Append a Lookup.Ini-type of file into LOOKINI.DBF

/M Merge-Purge

/N Rename a Disk File

/O Organization Chart Creation (do NOT use zero - use the letter 'o')

/P Pack any GoldMine® file

/Q Q-file launch, for Multi-Operation Launch in GX5 Batch Processor.

/R Globally Replace a Field

/S Turn Sync Stamping ON / OFF (valid only in a Q-file)

/T Tag Rebuild for any GoldMine® file

/U Dupes Between Files (Compare 1 Contact File to another w/ Record Match)

/W Wipe (Erase) a Disk File

/X Access GoldBox-5 for file maintenance, etc. (not Q-file launchable)

/Y Groups by Break

/Z Run a Windows Program (valid only in a Q-file)

/X Access GoldBox-5 for file maintenance, etc.

/0 Alter a field in a GoldBox-5 system file

/1 Contact Validator

/2 Write Batch Session Summaries to Text file

3. The Saved Setup name or label. Example: IGFULL

View the LAUNCH ID column at the Saved Setup pick list. For Imports, Updates and Exports, the 3rd parameter is always a DBF file name of the Field Template. Imports and Updates begin with IG. Exports begin with XP. You do not need to include {.DBF), GoldBox-5 adds it for you.

For Merge-Purge Label begins with MP

For Dupes Between Files Label begins with DU

For Group Builder Label begins with UG

For Groups by Break Label begins with BY

For Organization Chart Creation Label begins with OC

For Global Replace of a Field Label begins with RE

For Area Code Split Replacement Full Contact Path

For Notes Archival Label begins with NA

For Contact Validator Label begins with CV

For Text-to-dB4 File Conversion Full Path to Text File

For GoldMine® File Pack GM5 Root, GMBASE or Contact Path + File

For GoldMine® Tag Rebuild GM5 Root, GMBASE or Contact Path + File

For File Command COPY File being Copied (Drive, Path, File Name)

For File Command RENAME File being Renamed (Drive, Path, File Name)

For File Command WIPE File being Wiped (Drive, Path, File Name)

For Running Windows EXE Drive, Path, EXE file (+ optional parameters)

For Running DOS EXE or BAT Drive, Path. EXE file (+ optional parameters)

For Appending Lookup.Ini Drive, Path, Text file (+ optional parameter)

The launch capability allows no changes to the Saved Setup or Field Mapping Templates and runs the complete utility unattended. Please ensure all information in the Saved Setup is correct before proceeding.

 

Q-files

Q-files are one of the hidden gems of GoldBox-5, an item which exponentially increases the value of the product. Also known as Program Controllers, you can use a Q-file to perform any number of GoldBox-5 operations, plus run any other self-running, self-closing Windows or DOS program. One user recently reported that they are running 139 separate GX5 operations sequentially from a single Q-file! The more you understand the power of Q-files, the greater control you will have over automated data management.

You must create a "queue" file for Multi-Operation Launching. This might be the case, for example, if you wanted to sequentially launch the following 8 operations: A Text-to-dB4 conversion for the Main Import; a Lookup.Ini append; another append of a Lookup.Ini-type of file; a Main Import; a Text-to-dB4 conversion for the History Import; a History import; an Area Code Split and finally a Groups-by-Break by Key1 Territory. See below for the example setup in the Q-file called QMAIN.DBF.

Selecting this option takes you to a browse of the Q-file Master Setup Table, which is the GX4WQ.DBF system file in the GX5 path. This is used simply to organize your Q-files. Click [Add] for a new entry, or highlight a desired Q-file definition record. If adding, ignore the first field called Copyout, as that is only used for transferring Q-files. Key in a Description and the Q-file name. The Q-file is a DBF file and must begin with the letter Q. This is forced by GoldBox-5. Key in the next 7 characters using only letters, numbers or underscore. Click [Quit] and the Q-file is loaded.

At the Q-file:

Click [Add] for a new launch record. From the list, select either the Saved Setup of your choice, or, at the top of the list, select the type of launch operation you want which doesn't have a Saved Setup. When you choose an operation without a Saved Setup, GoldBox-5 provides an entry screen for the appropriate defaults and options.

The indexed {Sort} column lets you set the execution order of the operations. Key in any number from 0 to 9999. Please double-check to ensure that the operations are occurring in the correct order.

The {B-cd} column, short for Batch Code, is automatically filled in and should always be left alone.

The next column is {Launch ID or Path Name} and is automatically filled in when you select an operation with a Saved Setup. It should never be altered for those operations. For operations which do not have a Saved Setup, please see the appropriate section above in the Launch area for that operation to determine what goes in here. This column equates to the 3rd parameter of the launch statement examples.

To add a 4th, 5th, 6th or 7th parameter, scroll to the appropriate column and key your entry. Most of the Saved Setups don't require other parameters but some of the Direct Launch Operations do, such as the Text-to-dB4 operation. Using the above example as a guide, entries in a Q-file called QMAIN might be:

Sort Cd Launch ID or Path Name 4th Parameter 5th

0 F c:\GOLDBOX5\infile.txt c:\goldbox5\infile.dbf ASC

10 B c:\\gm5\lookup.ini

20 B c:\\gm5\adlook1.txt APPEND

30 I IGMAIN.DBF

40 F c:\GOLDBOX5\inhist.txt c:\goldbox5\inhist.dbf ASC

50 I IGHIST.DBF

60 A c:\gm5\common

70 Y BYTERRTY

Launch your Q-file just as if it was a single operation. The launch for the above example would be:

C:\GOLDBOX5\GX5 dep /Q QMAIN

GoldBox-5 will load briefly, then the GX5 Batch Processor will execute the Q-file operations. Each operation, when completed, will get its own separate entry in the Batch Session Summary file.

Alternate Launch Option: When you exit from the Q-file by clicking [Quit] at the Browse screen, GoldBox-5 gives you the option of running the Q-file directly, instead of from a launch command.

Please note that some operations, such as the Text-to-dB4 converter, require a Q-file for launch.

Conditional Processing:

By default, each item in a Q-file is processed. However, you can attach a condition to one or more items in a Q-file. For example, you run a Q-file on Monday, Wednesday, Friday, but you want a certain operation to occur only on Friday, such as an update of Accounting data into GoldMine. In that case, you would highlight the appropriate item in the Q-file and press the [Exprn] button. The expression for the example is: Upper(CDoW(Date())) = "FRIDAY"

Please keep in mind when keying an expression that you can only make use of the generic functions in GoldBox-5, such as CDoW(), Cmonth(), Date(), CtoD(), File(), Upper(), SubStr(), Trim(), etc. In other words, use any function which does not rely on a particular data file being open for accurate evaluation. The Q-file evaluation occurs before any GoldMine® or GoldBox-5 data files are opened. If you use a function which relies on an open data file, you will get an error and the process will halt!

If GX5 encounters a condition on a Q-file item, it is evaluated. If the result is TRUE, the item is processed normally. If not, the item is skipped and the next Q-file item is evaluated.

For most operations, you have a maximum of 150 characters for the expression. For Text-to-dB4 you have only 50.

 

GoldBox Launch Timer

With the GoldBox Launch Timer you can run up to 35 separate timed executables. Although designed specifically for GoldBox-5, you can use it to execute any Windows EXE in any path. The timer is based on days of the week and time by hour & minute.

Setup:

1. In the {Day} column, key in the Day of the Week. This must be SU, MO, TU, WE, TH, FR or SA. Any other value is ignored.

2. In the {Time} column you'll be keying in the time, down to the minute you wish the operation to be launched. Do not use military or 24-hour time - GoldBox-5 converts it for you. Please use am/pm times. Examples: 11:00p 12:45a 4:00a 9:30a

3. In the {Program RUN Statement} key in the executable. For GX5 operations, you don't need a path statement in front of the GX5 executable, since the timer is already in the GX5 path. For launching other Windows EXEs, make sure you precede the EXE command with the full drive and path.

4. Click [Quit] to exit. GoldBox-5 evaluates and validates your entries. If they pass, the events are transparently setup in the GBTIMER.INI file, which is in the GoldBox-5 directory.

Loading:

Prior to the time you wish the operation to launch, load GBTIMER.EXE from Windows. From {Start} {Run} the call would be: C:\GOLDBOX5\GBTIMER.EXE This assumes GoldBox-5 is on the C drive in a directory called GOLDBOX5. Make the changes necessary to map into your GoldBox-5 location.

A small box appears in the middle of your screen to show that the timer is active. When the timer hits the desired day and time, the event is launched. After the event completes the timer is again redisplayed and is still active. NOTE: The timer will only function MAXIMIZED. It must be the focused application.

If you are testing this, please be aware that the GoldBox Launch Timer may not immediately execute after the clock turns over to the target hour and minute. It should execute any time within that minute, and experience has shown that mostly it happens about 30 to 40 seconds into the target minute. If the clock turns over and your program didn't execute, please re-access GoldBox-5 and verify the correct setup of the GoldBox Launch Timer.

Click on the [Close] button to deactivate.

The actual timer itself is a Visual Basic program written by George Hayes of BCI Solutions.

 

Interactive Mode

GoldMine® is a tremendous piece of software. It is well designed, feature-rich and allows easy manipulation of its data from an outside program, such as GoldBox-5. This document has discussed GX5 as a batch type of program, where an entire file is evaluated and actions are performed globally. However, GoldMine® allows manipulation via an outside program of just the current record you are viewing, and GoldBox-5 takes advantage of this capability, via GoldMine's LOOKUP.INI and [FileMenu] options.

The LOOKUP.INI logic in GoldMine® allows additional record processing that is automatically invoked in various ways. Two features are the [OnNewRun] and [OnEditRun] sections in the LOOKUP.INI file. These both allow an outside application to be called when a new record is added or when the record is edited. For further information on OnNewRun and OnEditRun, see the GoldMine® Help panel LOOKUP.INI and view Launching Applications when Records are Created and Edited.

There are 7 GoldBox-5 operations which can operate in Interactive Mode:

1. Import/Update: When a user adds a New Main Contact record, you can to attach 1 or more Tab records which contain hardcoded values. For example, you may want to attach a Scheduled Callback, a Detail record or a Linked Document (or all 3).

2. Export: This is normally used in conjunction with the above example, where you would create the Incoming File for the Import/Update first by exporting out the GoldMine® Account Number field. The ACCOUNTNO field is always used for record match when doing an Interactive Mode attach operation.

3. Group Builder: When a user adds a New Contact, you can add the Contact into 1 or more GoldMine® Groups. NOTE: Select the checkbox Ö Append to Existing Ö at the Group Builder Setup Screen.

4. Global Replace: When a user adds a Main or Tab record, you can use GX5's advanced functions to replace multiple fields in the record. For example, you may wish to populate fields of a new Main Contact record with the County, Time Zone, Time Difference Number, or a Sequential Generated Number. Or, you wish to use a separate Lookup.ini-type file which exceeds the 64K limit for field replacements. GX5's LookupINI() function allows you to define 1 or more Lookup.ini-type files to evaluate, and there is no size limit.

5. Notes Archival: (Normally used by the [FileMenu] option). This is usually done as a batch operation, but you can have GoldBox-5 perform it against the current Contact. When returned to GoldMine, recommend paging off and then back onto the record (to avoid a Notes BLOB Error Notification).

6. Tab File Log Creation: (Normally used by the [FileMenu] option). This is ideal for pulling up a quick summary of History, in a single scrollable window, perhaps to review before calling a client.

7. Contact Validator: (Normally used by the [FileMenu] option). This launches a scrollable Exception List to the rules you have setup for the Contact Validator, under the {Batch} menu.

The surprise for using Interactive Mode is that you create the Setups or Q-files just as if you were going to run them as standard batch operations! Even the call to run the Setups from the LOOKUP.INI file is identical! So, there is nothing new to learn. You just need to be aware that the operation will work only against the current record you are viewing in GoldMine, if you call it from GoldMine's LOOKUP.INI. If you call it directly, it will run against the entire file, such as in normal batch processing.

You will probably use OnNewRun in the vast majority of cases, so that will be our example. The setup of the call to GoldBox-5 is identical for both OnNewRun and OnEditRun. Here is a typical usage as it appears in LOOKUP.INI:

[OnNewRun]

Contact1=c:\GOLDBOX5\GX5 dep /Q Qnewrec c:\goldbox5

AppendRecno=1

And that's it! Notice that the call itself, that which follows Contact1= , is identical to one you would have at {Start} {Run} or a shortcut icon, except that you must pass in the path to GoldBox-5 as the 4th parameter. Also note that you always need the line AppendRecno=1 so that GoldMine® knows to include the Record number of the record you are viewing in the call. That happens transparently and is picked up by GoldBox-5 internally – you don't have to know the record number.

If you are calling a single GX5 operation at OnNewRun you don't need to set it up in a Q-file first in GoldBox-5. Just call it directly. Use a Q-file only when you want more than 1 GX5 operation to occur upon adding a new Contact record. Let's assume the Q-file you are calling, QNEWREC, looks like this:

Sort B-cd Launch ID or Path Name 4th Parameter 5th

1 E XPNEWREC.DBF

2 I IGNEWCAL.DBF

3 I IGNEWPRO.DBF

4 R RENEWREC1

5 R RENEWREC2

6 G UGNEWGRP1

7 G UGNEWGRP2

1. This exports just a single field – the ACCOUNTNO to a file called GMEXDATA.DBF. This will be used as the Incoming File in the following 2 imports.

2. Import attaches a hardcoded Calendar record as a Callback, with ACCOUNTNO as record match.

3. This Import attaches a hardcoded Detail record, with ACCOUNTNO as record match.

4. The first 5 fields you wish to replace are performed in this Setup.

5. The next 3 fields you wish to replace are performed in this Setup.

6. The Contact is added to a Group called New Phone Lead.

7. The Contact is added to a Group called California Prospects (if they are in California). How do we know to put the Contact in this Group if we have not yet added a value to the State field? See below!

For field replacement, you'll probably use GX5-specific functions such as GetCounty(), GeTimeZone(), GetSlsTerr(), Generate(), and LookupINI() because these are either not available in GoldMine® or have expanded capability. You can even use GetState() and GetCity() if you don't have GoldMine's Zip lookups. But…there is a potential Big Dilemma: When you add a New Contact in GoldMine, the initial record entry screen does not allow you to key in the Zip Code. You just have the Company, Contact, Phone, Extension and Email Address. It's a problem because the Get() functions in GX5 need the Zip Code to find the values in the Virtual Lookup Table (ZIPTABLE.DBF). And the OnNewRun application executes before you can edit fields in the new Contact record. How can GX5 use a valid Zip Code to return entries from the Virtual Lookup Table when you don't yet have a Zip Code entered?

Solution: Key the Zip Code into the 6-character Phone Extension field. In your first Global Replace Setup, choose Contact1->Zip as [Field 1]. Replace it with the expression: Contact1->Ext1. At the [Field-2] button, select Contact1->Ext1and replace it with: " ". See what you've just done? You have replaced the Zip Code with what was entered in the Phone Extension field in GoldMine, then you've cleared out the Phone Extension field. Now you can use any of the Get() functions, so your [Field 3] value would be Contact1->State and the expression is: GetState(). And that is how your Group Builder setup in item #7 above is able to evaluate whether the Contact is in the state of California.

For field replacement, remember the LookupINI() function if you want to use a LOOKUP.INI file which exceeds 64K. Please see the information on LookupINI() in the Function Definitions section for full information. Normally you would populate the LOOKINI.DBF file first before users start invoking Interactive Mode as a Command Line call. Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /L C:\PROGRA~1\GOLDMINE\LOOKUP.INI

Note that you can create any number of GX5 interactive operations when adding other record types, such as Details, Addl Contacts, Calendar and History items. Please follow the examples listed in the GoldMine® Help panel. The call to GX5 is the same, it is only the file name which changes. The Contact1 file is shown in the example because that is assumed to be the most likely usage of Interactive Mode.

 

Local LOOKUP.INI:

Fortunately GoldMine® recognizes 'local' Lookup.ini files, that is, a LOOKUP.INI file in the Contact Path on which you are working. If it sees one there, it will read that. Otherwise, it reads the global one in the GoldMine® root path. This is most fortunate because GX5 Setups have the Contact File on which to perform the operation stored in the Setup record. You can see that problems will occur if the operation you are calling has the COMMON Contact File stored in the GX5 Setup, and you are adding a record to the DEMO Contact File. GoldMine® only passes the record #, not the Contact File, to the outside application. Let's say you added a record to the DEMO Contact File and it is record # 22. If there is only a global LOOKUP.INI file, then GoldBox-5 is going to pull up record #22 in the COMMON Contact File and do its operations there. This of course is not what you intended and could cause havoc. To avoid this, you must copy your LOOKUP.INI to all the Contact paths the user will be accessing. In each Contact Path's LOOKUP.INI, alter the OnNewRun or OnEditRun statements so that you get the results you want. If no GX5 operations are to occur for the DEMO Contact File, for example, simply delete the OnNewRun or OnEditRun calls to GoldBox-5. Or, if you want the same operations to occur, you must create separate Setups in GoldBox-5 with the proper Contact File selected! GoldBox-5 makes this easy because you can quickly copy a Setup to a new one, then just alter the Contact File entry. Remember: Separate Setups, separate Q-files and separate LOOKUP.INI files if you want the same GX5 operations to occur on separate Contact Files! It takes a bit of management but there simply is no way around it. Ensure this works properly BEFORE you make it available to your users – test, Test, TEST!

[FileMenu] Option:

Although invoking GoldBox-5 on creation of a New Contact is very useful, you might also want to select an interactive operation just as if it was part of GoldMine's menu system. The powerful, yet simple to implement [FileMenu] option is how this is accomplished. For more information, go to Help Topics in GoldMine® and do a Find on the word FileMenu. GoldMine® allows up to 9 executable items on their menu system. Below is a typical example of usage:

You wish to pull up a log of History activity to review or print before calling a client. Set up a Tab File Log Creation in GoldBox-5 to include those records you want – the default is all History. Note: The Tab File Log Creation is the easiest one to setup – all that is required is the Contact Path! For details on the options at the Tab File Log Creation Setup screen, see the appropriate section in this manual.

Go to the user's INI file and edit it (in Notepad, for example). If you log into GoldMine® as Dave, you would edit DAVE.INI in the GoldMine® Root path. Look for the label [FileMenu]. If it is not there, add it. Underneath, add your Command Line call as per the example in GoldMine's Help panel. Example:

[FileMenu]

opt1=&Hist Log,c:\gbox5\gx5 dep /H hllast10 INTERACTIVE c:\gbox5,,1

The word INTERACTIVE must be passed as the 4th parameter so GX5 knows to run the operation against the current record only. The above example puts the label {History Log } under GoldMine's {File} menu. You just click it to get the History Log for the current contact. Notice also that you must pass the GoldBox-5 path as the 5th parameter. This forces GoldBox-5 to access the path directly so it can see its own system files.

If you wish to repeat the same operation against Contacts as you access them, you can keep the Interactive DDE Link open by following the instructions on the Message Box. This allows for much faster operation and does not require the constant initialization and release of the DDE conversation.

Separate GoldBox-5 Licenses:

Each GoldBox-5 system is single user only, but you can have separate licenses, each on a workstation, if you need the Interactive Mode for multiple users on a network. These can all access the same GoldMine® system on the server. If you need multiple licenses at the same site, please contact Redstone SoftBase Company directly – it is not handled by the distributor.

 

FILE / Batch Session Summaries

Tracks a Date and Time session record for all batch operations which complete successfully. Records are sorted so the most recent operations appear first. Ideal as an audit trail of successful unattended GoldBox-5 operations. A warning message will appear when this file reaches 10000 records for you to delete some or even zap (clear out) the file.

Since the fields as they display in the Browser are a bit cryptic, you can click the [View] button to see a more comprehensive summary of any record.

 

FILE / Last Name Title Exceptions

This file ships with the most common short titles that may appear for incoming names. It is used exclusively by the Import/Update to do the 'walk-back' procedure on putting the correct Last Name into GoldMine's LASTNAME field. You can alter this file as necessary. Example:

Little Bill Daggett, Jr.

William Munny II

English Bob IV, Atty

Strawberry Alice, CPA

As long as JR., II, IV, ATTY and CPA are in this table, GX5 will 'walk-back' up to 2 short titles to pluck the correct last name in each of the above examples and deposit into the LASTNAME field.

 

FILE / Contact Validator Exceptions

This file displays the results of your most recent running of the Contact Validator. The Company, Contact and Accountno fields are tracked for each contact. The first column is Notes and holds the exceptions for that particular Contact record. Click [Memo] to view. Fields that did not pass the Rules you setup will display the Field Name and Description, the Current Value, and the Expression which was run against the field. Following that are the optional Tab file expressions, showing the Description and Expression.

 

 

FILE / Virtual Lookup Table

This is called a "virtual" lookup table because you can use a value returned from it, rather than a GoldMine® field, in your filter expressions. This opens up a whole new set of possibilities in GoldMine® data manipulation. Examples:

All GoldBox-5 expressions are aware of the Virtual Lookup Table. Remember, you can use a field or value other than the Main Zip Code for the lookup.

Using this file and its associated functions, you can also:

In addition to the above information, please see the Get() Functions in the "Function Definitions" portion at the end of this document.

 

FILE / SIC Category Table

If you track SIC codes in a GoldMine® field this file lets you replace another GoldMine® field with its Category description. The associated GoldBox-5 function is GetSICcat(). You must pass in the GoldMine® field name which holds the SIC code. Example: GetSICcat('Contact1->Key3').

 

FILE / Field Translator Table

This is the same file used when you press [Translt] at the Import Field Mapping Template and key in Field Translations, and also when you use the GetCustom() function for global replacing. You can also use GetCustom() on import as a Field Replace Expression.

An example for using GetCustom() in a Global Replace:

You already replaced Key 1 with a county using GetCounty(). Now you want to lookup the associated Salesperson and replace Key 2. Modify this file like so:

Label Field Existing Value Replace With

COUNTY SALESPN VENTURA William Munny

COUNTY SALESPN SAN BERNARDINO Ned Logan

COUNTY SALESPN LOS ANGELES Sally Two-Trees

Notice the Label and Field columns DO NOT correspond to the field you are replacing. You could have used anything else descriptive. This gives you an unlimited number of unique custom replace setups.

The Field Replace Expression would be:

GetCustom('COUNTY->SALESPN', 'CONTACT1->KEY2')

The important point in the function call is to separate the field from the file with the <dash/greater-than> characters which you are probably already familiar with.

 

FILE / Word Swap Table

This file is used by the WordSwap() function, which swaps a word or phrase found in a field with a replacement value from the table. You are responsible for maintaining this file.

WordSwap() is typically used to re-capitalize words (such as Ibm to IBM) or de-capitalize (And to and) after you have used a function to force a field to Proper Case. In GoldBox-5 the [Proper] button at the Import Field Mapping Template and the Proper() function are used for Proper Casing a field.

WordSwap() is auto-invoked when you use [Proper] button at the Import Field Mapping Template; you do not need to call separately. See the Function Definition of WordSwap() for more information on usage.

 

FILE / Text Swap Table

Similar to the above table and is used by TextSwap(). Whereas WordSwap() looks for text with a space on both sides (word or phrase), TextSwap() looks for literal text no matter where it occurs in the field.

Typically used for Company, Contact and Address translation if you used the [Proper] button at the Import or the Proper() function. Ideal to reformat names like MacDonald, McVee, O'Leary, O'Donnell, etc. See the Function Definition of TextSwap() for further information on usage. Typical entries in this table might appear as:

Find This Repl With

Maca MacA

Mcb McB

O'l O'L

O'd O'D

Rr# RR#

 

FILE / Area Code Split Table

This is the table which drives the Area Code Split Replacement capability in GoldBox-5. Please see this section for information on how to setup the table.

 

FILE / Unique Field Listing

This option allows you to view the totals that were created on the field for the most recent running of {Misc} {GXW Browser} {Break button}.

 

FILE / Sub Filters / Seq # Generation

This holds sub-filters, expression fragments and sequence number definitions, which are used by MultiTab(), xFrag() and Generate(). For information on each of these functions, please review the "Function Definitions" section at the end of this document. Following are descriptions of the 6 columns in the file.

Def. Label - Required Entry. It is the unique name for each expression and is always the first parameter of MultiTab(), xFrag() and Generate(). It is 11 characters long and is indexed. For the xFrag() and Generate() functions, you can use all 11 characters because only 1 entry is sought in the table. For MultiTab(), you can only use a maximum of 9 characters to identify the sub-filters. The final 2 characters of the label are reserved for sorting. The character that determines sorting is the forward slash (on the question-mark key). You then follow the slash with one character. If you are using MultiTab() to check whether a client has 3 different types of Insurance Detail records, for example, your entries might look like this:

Def. Label Description None? Expression

INSURANCE/1 Fire Insurance Contsupp->Contact="Ins: Fire"

INSURANCE/2 Home Insurance Contsupp->Contact="Ins: Home"

INSURANCE/3 Auto Insurance Contsupp->Contact="Ins: Auto"

Your MultiTab() call would be: MultiTab("INSURANCE", "CONTSUPP", "P")

As you can see, only the portion of the label preceding the forward slash was passed in by MultiTab().

Your Definition Label can be shorter than 9 characters when using MultiTab(). Please remember to use the slash sorting immediately after the final character of the label, as in: COMPUTER/1.

Description - Optional. A short description about the purpose of the expression.

None? - Used only by MultiTab(). If you key the word NONE in here, MultiTab() will return a TRUE if NO records were found, based on the Expression.

Expression - Required by MultiTab() and xFrag(). Click [Exprn] for the Filter and Expression Builder.

Places - Required by Generate(). This field and the following are related, and are used only by the Generate() function for the generation of sequential numbers. It defines how many places the number will contain. The number of places in the sequential number determines how many leading zeros are stuffed into the number. For example, if you key 6 into this field, numbers will be returned as 000001, 000002, 000003, etc. If you key 4 into this field, numbers will be returned as 0001, 0002, 0003, etc. Always make

sure you key a value high enough so that you will never run out of numbers!

Current # - Optional. This is used only by Generate(). The starting value is always 0, and if you leave it at 0, the first number will be returned as 1 (with leading zeros). You can key in any numeric value so that the first returned value is one greater. For example, if you keyed in 100000 here, the first returned number would be 100001. When using the Generate() function, GoldBox-5 auto-increments this field.

 

FILE / GX5 Saved Expressions

Entries in this table are usually entered by clicking the [Write] button at the Filter and Expression Builder. This file is used to store any number of filters or expressions which you may want to retrieve while building an expression. They are retrieved by clicking [Get] at the Filter and Expression Builder.

 

FILE / Smooth Contact Names

This file is used by the SmoothName() function.

For information, please see FUNCTION / SmoothName()

 

FILE / Smooth Company Names

This file is used by the SmoothComp() function.

For information, please see FUNCTION / SmoothComp()

 

FILE / Browse ANY dBase4 File

The GXW Browser contains 7 features not found in the BR7 Utility, and the BR7 Utility contains 6 features not found in the GXW Browser. Between them, you have quite a formidable file manipulation capability. The 7 extra features you get in the GXW Browser are:

1. Limit Records Viewed with Index Scope – the [Scope] button.

2. Delete Duplicates based on Field Expression – the [D-dup] button.

3. Manually Flag Records for Global Replace and Export – the [Flag] button.

4. Write the Current Record to a Text File for View/Print – the [Write] button.

5. Make an Exact Copy of the Current Record – the [Photo] button.

6. Create a Listing of Unique Values in a Field (or Field Expression) – the [Break] button.

7. List records to View/Print, with Filter, Record Limit, Ordering - the [List] button.

 

Filter & Expression Builder

The Filtering and Field Expression capabilities in GoldBox-5 are the best in the GoldMine world. Because of GoldBox-5's superior access and powerful function logic, you should never need to create a GoldMine Group to perform a GoldBox-5 batch operation.

FILTERS:

A GoldBox-5 filter evaluates to ONLY True or False. What happens after evaluation depends upon the GoldBox-5 operation. In filters, you'll ALWAYS use at least one sign such as EQUALS, NOT EQUALS, CONTAINED WITHIN, etc. Connectors are often used, such as AND, OR, NOT.

 

FIELD EXPRESSIONS:

Field Expressions differ from Filters in that they usually do not evaluate to True or False, but rather to a literal value. They are generally much shorter than filters and typically don't need mathematical signs or connectors (unless you are using the IIF() function). Functions are almost always used for expressions. The result of the expression is, for example, replaced into a field on an import, or exported out as a value.

 

STORING FILTERS & EXPRESSIONS:

In GoldBox-5, filters and expression are stored with each individual setup, but you can also save filters and expressions globally to GBFILTER.DBF in the GX5 directory. This is done with the [Write to File] button. The [Get from File] button retrieves saved expressions.

 

LENGTH:

The length limit on filters or expressions is 254 characters. If you need to shoehorn a long expression into this limit, you can remove ALL spaces. Some functions can be shortened to 4 characters - for example, SUBS can be used in place of the SUBSTR function (substring). UPPER can be shortened to UPPE. You can also use the xFrag() function to use separate 254-character expression fragments. Please see the explanation for the very powerful xFrag() function below in the function listing.

One of the best known tricks to shorten an expression is to use the dollar sign Operator whenever you want to know if a particular value is one of several (or many). Typical example: You want a filter to return TRUE if the State field is California, Washington, Oregon, Arizona, Nevada, New Mexico or Utah. If you build this with an expression assembler, you'll probably get something like: Contact1->State = "CA" .OR. Contact1->State = "WA" .OR. Contact1->State = "OR".....etc. With only 254 characters available, you may run out of space quickly. By using the versatile dollar sign Operator, which means Previous String is contained within the Next String, your expression can now look like this:

Left(Contact1->State, 2) $ "CA.WA.OR.AZ.NV.NM.UT"

Which literally says: Are the first 2 characters of the State field contained in the following string? Notice that there is a period separating the state abbreviations. You must always use a separator symbol in the string list, otherwise the letters would all run together and you might get inconsistent results. Suggestions are the period, comma, slash, hyphen or asterisk.

Please note that you can also use GoldBox-5's xFrag() function to virtually increase the total length of a Filter or Field Replace Expression.

 

CASE:

An expression can be in UPPER, lower or a ComBination of the 2 cases, except when comparing a literal string value, as in the following example: Upper(Left(Contact1->Key1, 8)) = "CUSTOMER"

If you had keyed in "Customer" or "customer", the expression would never find a hit because you converted the Key1 field to UPPER CASE with the Upper() function.

 

MATHEMATICAL OPERATORS:

Used between expression fragments - there is always something on either side of a Mathematical Sign.

+ Add Or, add strings ("John " + Contact1->Lastname)

- Subtract Contact2->Utotal - Contact2->Utax

* Multiply Contact2->Uitem * Contact2->Uqty

/ Divide Contact2->Utotsalary / Contact2->Utotemploy

** Exponentiation 25 ** 2 (Answer is 625)

= Equal to Contact1->Key1 = "PROSPECT"

GoldBox-5 assumes that if you are using a single equal sign, then it will only look at the first 8 characters of the Key1 field. So if your Key1 field said "PROSPECTOR", you would get a "hit" on this record anyway. If you need Exact finds, use the double equal.

== Exactly equal Contact2->Comments == "Hold Account" + Space(50)

In this case you want to know if the Comments field ONLY contains the words "HOLD ON ACCOUNT". Since the Comments field is 65 characters, you had to hook 50 spaces onto the end of your string value.

<> Not equal to SubStr(Contact1->Phone1,2,3) <> "310"

< Less than Contact2->Udate < CtoD("01/01/94")

<= or equal to Contact2->Udate <= CtoD("12/31/94")

> Greater than Contact2->Utotsales > 4000000

>= or equal to Contact2->Udate >= CtoD("04/01/94")

$ Previous in Next Left(Contact1->Zip, 5) $ "90210.90069.90405.90034"

This is a very useful operator for shortening long expressions. Please see the above section on LENGTH for more information.

( ) Evaluate First (Contact1->Key1-> = "CUSTOMER" .AND. Contact1->State = "CA") .OR. .NOT. Empty(Contact1->Key2)

Parentheses by themselves are usually not necessary in expressions but they sometimes have a place in math operations and when using the {Or} Connector, as in the above example. In math expressions, the result of whatever is between the parentheses is calculated first. In {Or} expressions, parentheses are good for grouping expression fragments properly.

 

CONNECTORS:

There are only 3 - And, Or, Not. Mostly you will be using the {And} Connector. The {And} and {Or} must always have something on the left and right. You can start an expression with the {Not} Connector, as in: .NOT. Empty(Contact1->Key3). Make sure a period or a space is on either side of the Connector, otherwise the Expression will be seen as invalid.

.AND.

Previous AND Next statements are True

Trim(Contact1->State) $ "OH.MI.IN" .AND. Contact1->Key2 = "NEW LEAD"

.OR.

Previous OR Next statement is True

Experience has shown that the {OR} Connector, if not used properly, can cause your filter or expression to not evaluate properly and give you false hits or not enough hits. Mostly you will be using the {And} Connector so first determine if that is all you need. Normally you will not use parentheses in expressions but they are very handy when using {Or}. (SubStr(Contact1->Phone1,2,3) = "310") .OR. (Upper(Contact1->City) = "LOS ANGELES")

.NOT.

Next statement is NOT True

.NOT. Left(Contact1->State, 2) $ "CA.UT" (State isn't California or Utah)

 

FILTER AND EXPRESSION BUILDER - SCREEN LAYOUT:

The top 2 text lines, appearing in navy blue, provide custom information about the expression you are creating. They will always change depending upon where in the GX5 program the Filter and Expression Builder was invoked.

The white entry prompt underneath is where you assemble the xBase expression. You can either key it in directly, or assemble it by clicking items from the list boxes below.

The titles above each list box serve a dual purpose: They label the list boxes, and, by clicking them, allow you to insert the currently highlighted item in the list box at the cursor position in the entry prompt. Rest the mouse over any of the titles, and the Speed Tip explains how to do this. You first highlight the item in the list box; make sure the cursor is resting exactly in the entry prompt where you want the item inserted; then you click the title button.

The 3 list boxes categorize the fragments that make up an xBase expression. To insert an item onto the end of the entry prompt, highlight the item and double-click it. If you scroll down the list boxes you'll see more items for all of them. In effect, all keys on the keyboard are listed as items, allowing you, in effect, to build the expression entirely with the mouse!

In the Functions box, the functions are initially sorted by type. If you want to sort them alphabetically, Double-Right-Click in the box. This is a toggle between Category and Alphabetical sorting.

The 7 buttons that appear along the bottom are described as follows:

[GO / SAVE] Exits the Filter and Expression Builder and writes the current expression into a field or a Setup Screen item.

[Show Result] Displays the result of the expression. This works in most cases, and is generally used to verify that you have no syntax errors in the expression. It is a rough guide that your expression is Ok or not Ok. When it works, it will return a TRUE or FALSE for a filter and a hard result for Field Expressions. If the button returns a FALSE, it does not mean the expression is in error - it means the record you are on (normally record 1 of a GoldMine file) doesn't happen to meet the filter condition. An error box doesn't necessarily mean the expression is syntactically incorrect, but usually it does, so please recheck the expression. Normally the only times this will return an error box is when you have a pipe expression for Updating, or when keying expressions for one of the GoldBox-5 system files. To repeat: View this button as a guide and not as a definitive indicator that your expression is valid or invalid.

[GM Filter] Displays a description list box of your GoldMine filters. You can select one to be appended onto the end of the current expression. Please be aware that most GoldMine filters will work in GoldBox-5, but most GoldBox-5 filters won't work in GoldMine (because of the extra functions provided in GX5).

[Write to File] Writes the current expression to the global GBFILTER.DBF file, allowing you to retrieve it at a later time (see following button). You are prompted for a Description, and then both the Description and the Expression are written into the GBFILTER file.

[Get from File] Allows you to get, or retrieve, a previously written expression from the GBFILTER file. GX5 will always append the expression onto the end of whatever you currently have in the entry prompt. If you want a complete overwrite, make sure you blank out the entry prompt first.

[VLink2dBase] Since the very powerful VLink2dBase() function can have up to 7 parameters, this button gives you an entry screen for assembling the function call. Key in the entries directly - do not surround by quotes, as the assembler does that for you. If you click [Assemble], the function is assembled and written into the existing Expression prompt at the top of the screen.

[Cancel / Abort] Exits the Filter and Expression Builder but does not return the expression to the calling screen.

 

FUNCTION DEFINITIONS:

Think of functions as the most reliable friends you ever had. When you call them, they always give you something back – ALWAYS. You call the function, it does some work or calculations, and gives you back the result. Sometimes you can call the function by itself, such as Date(). This function knows to give you back the current system date. Other functions need something to work with so they can do their jobs and return the correct result. Those little items you pass to the function are called parameters. These are the values found between the parentheses of the function, each separated by a comma. They are "passed in" to the function for processing. For example the SubStr() function requires 2 and sometimes 3, as in: SubStr(Contact1->Company, 1, 1), which returns the first character of the Company Name.

All functions conform rigidly to this rule: They evaluate whatever is between a set of parentheses - they MUST begin with a right (open) parenthesis, and end with a left (closed) parenthesis. Make sure you do not use the square or curly brackets. The "legal" parentheses appear on the number row of the keyboard.

The incredible thing about functions is that you can nest them, which means using multiple functions on a single field. For example: Strzero(Val(SubStr(Contact1->Userdef03,1,6))) is a valid expression. If you count the number of right parentheses, they must exactly match the number of left parentheses. Typically, when expressions are invalid, there is a missing or misplaced parenthesis. GoldBox-5 always evaluates the 'deepest nested' function first, and works outward. In the above example, first the result if the SubStr() function is returned, then the Val() function turns that into a numeric value, then the StrZero() function turns it back into a String (a.k.a. character) value and pads it with up to 6 leading zeroes.

In the long description of each function the {Param} columns list the parameters you can pass. The word {reqd} indicates that the parameter is required - you will get an error if it's omitted. The word {opt} indicates that the parameter is optional. In the function examples strings are surrounded, or delimited, by the double-quote character. Remember that you can use single-quotes or the square brackets to surround a string as long as they are consistent. Following are the 3 legal string delimiters:

' ' " " [ ] Examples:

'D. Petonic' "D. Petonic's PC" [Dave says: "Get GoldMine - it's great!"]

FUNCTION / ActBanner()

FUNCTION / AddlConFld()

FUNCTION / AfterFirst()

FUNCTION / AgeByMonth()

FUNCTION / AgeByYear()

FUNCTION / AllTrim()

FUNCTION / ANSI()

FUNCTION / At()

FUNCTION / CalEndTime()

FUNCTION / Canada()

FUNCTION / CDoW()

FUNCTION / Chr()

FUNCTION / Cmonth()

FUNCTION / CountWords()

FUNCTION / CtoD()

FUNCTION / Date()

FUNCTION / Day()

FUNCTION / Deleted()

FUNCTION / DidSession()

FUNCTION / DoW()

FUNCTION / DtoC()

FUNCTION / DtoS()

FUNCTION / DupedWord()

FUNCTION / DurConvert()

FUNCTION / Empty()

FUNCTION / EndOfMonth()

FUNCTION / EndWords()

FUNCTION / FieldContains()

FUNCTION / File()

FUNCTION / FileWild()

FUNCTION / FirstCharacter()

FUNCTION / FirstLast()

FUNCTION / FirstOfMon()

FUNCTION / FirstWord()

FUNCTION / Flagged()

FUNCTION / GenBanner()

FUNCTION / Generate()

FUNCTION / Get() Functions

FUNCTION / GetAcct()

FUNCTION / GETaWord()

FUNCTION / GetCustom()

FUNCTION / GetSICcat()

FUNCTION / GMuser

FUNCTION / Grab() Functions

FUNCTION / GxProper()

FUNCTION / HistoryCode()

FUNCTION / IIF()

FUNCTION / InGMLookup()

FUNCTION / InGroup()

FUNCTION / InList()

FUNCTION / InOrgLevel()

FUNCTION / Int()

FUNCTION / IsAlpha()

FUNCTION / IsBlank()

FUNCTION / IsFoundIn()

FUNCTION / LastFirst()

FUNCTION / LastWord()

FUNCTION / LatestSync()

FUNCTION / Len()

FUNCTION / LinkedName()

FUNCTION / LookupDesc()

FUNCTION / LookupINI()

FUNCTION / Lower()

FUNCTION / Ltrim()

FUNCTION / Make24hour()

FUNCTION / Max()

FUNCTION / Min()

FUNCTION / Mline()

FUNCTION / Month()

FUNCTION / MultiTab()

FUNCTION / MultiTab2()

FUNCTION / Pad()

FUNCTION / PhoneStrip()

FUNCTION / PrimEmail()

FUNCTION / ProDate()

FUNCTION / PullEmail()

FUNCTION / PullWeb()

FUNCTION / Rat()

FUNCTION / RealDate()

FUNCTION / RealTime()

FUNCTION / RecNo()

FUNCTION / ReferValue()

FUNCTION / Replicate()

FUNCTION / RollupAcct()

FUNCTION / Round()

FUNCTION / RoundRobin()

FUNCTION / SmoothComp()

FUNCTION / SmoothName()

FUNCTION / SnipWord()

FUNCTION / SoundEx()

FUNCTION / Space()

FUNCTION / Str()

FUNCTION / StripFrom()

FUNCTION / StripKeep()

FUNCTION / StripMrMs()

FUNCTION / StripSuffix()

FUNCTION / StrTran()

FUNCTION / SubStr()

FUNCTION / TabEdited()

FUNCTION / TextSwap()

FUNCTION / Time()

FUNCTION / Transform()

FUNCTION / Trim()

FUNCTION / UDTbanner()

FUNCTION / Upper()

FUNCTION / UpperStrip()

FUNCTION / USA()

FUNCTION / USterr()

FUNCTION / Val()

FUNCTION / vCRLF

FUNCTION / VLink2dBase()

FUNCTION / VirtualFld()

FUNCTION / WordOccur()

FUNCTION / WordSwap()

FUNCTION / xFrag()

FUNCTION / Year()

 

FUNCTION / ActBanner()

Description:

If you imported Notes from the Act! Contact manager, you can replace the Act! Date Banners in the Main Notes to GoldMine® Date Banners. You may wish to do this if you want to later run a Notes Archival and make History records from the Act! entries.

This function will only work for {Batch} {Global Replace}. At the [Field 1] button, select Contact1->Notes. For the Field Replace Expression, select this function.

Please see the example at the page bottom of {Batch} {Global Replace}. Act! banners must be in the exact format in the example in order for this function to recognize them.

 

Param 1 (opt):

A GoldMine® User Name. If not passed, the GoldMine® User Name assigned to your GoldBox-5 login initials is used.

 

Returns:

The converted Main Notes field.

 

Example:

ActBanner() or ActBanner("DAVE")

 

FUNCTION / AddlConFld()

Description:

GoldMine allows you to assign Calendar and History records to an Additional Contact. When you are evaluating Calendar or History as the master file in an Export, for example, GoldBox-5 allows you to return the value of any field of the related Additional Contact. This can be exported out by creating a calculated field. See Export Field Mapping Template for more info on the [Field] button.

Although this is typically used by the Export, you can also use it for any utility which allows you to evaluate a Tab file as the master file. Typically, this would be the Global Replace or Group Builder utilities.

Param 1 (reqd):

The word "CAL" or "CONTHIST", surrounded by quotes. This should match the Tab file you are evaluating as master (either the Calendar or History file).

Param 2 (reqd):

The Additional Contact field, surrounded by quotes.

 

Returns:

The value of the Additional Contact field you passed in as the 2nd parameter. If no Addl Contact was found, returns a blank space.

 

Example:

AddlConFld("CAL", "ContSupp->ContSupRef")

Returns the Reference field value of the related Additional Contact.

AddlConFld("CONTHIST", "ContSupp->MergeCodes")

Returns the Merge Codes field value of the related Additional Contact..

 

FUNCTION / AfterFirst()

Param 1 (reqd):

The Character field on which to return the result.

 

Returns:

Everything after the first space in a character field.

 

Example:

AfterFirst(Contact1->Contact)

Result: E Petonic (Assumes the name is David E Petonic)

 

FUNCTION / AgeByMonth()

Description:

Lets you evaluate 2 dates and determine the number of months between them.

 

Param 1 (reqd):

The smaller date value, as a true DATE. This can be an expression, a date field, or even a date stored in a character field (you would surround it with the CtoD() function).

Param 2 (opt):

The larger date value, as a true DATE. If you do not pass this parameter, the current system date is used.

 

Returns:

The number of months between the 2 dates as a NUMERIC value.

 

Example:

AgeByMonth(Contact1->LastDate) > 6

Returns TRUE for Main records which have not been modified in at least 6 months

AgeByMonth(Contact2->CloseDate) >= 9

Returns TRUE if no Sale was closed within the last 9 months

 

FUNCTION / AgeByYear()

Description:

Lets you evaluate 2 dates and determine the number of years between them. Ideal for returning someone's age based on their birth date.

 

Param 1 (reqd):

The smaller date value, as a true DATE. This can be an expression, a date field, or even a date stored in a character field (you would surround it with the CtoD() function).

Param 2 (opt):

The larger date value, as a true DATE. If you do not pass this parameter, the current system date is used.

 

Returns:

The number of years between the 2 dates as a NUMERIC value.

 

Example:

AgeByYear(CtoD(Contact2->UserDef01)) >= 50

Assuming that the person's birth date is stored in User-defined #1 in character format, returns a TRUE if the age of the person is 50 or over.

 

FUNCTION / AllTrim()

Description:

Trims off leading and trailing spaces from a string.

 

Param 1 (reqd):

The STRING (or Character field).

 

Returns:

The trimmed STRING. If the string was empty, returns a null.

 

Example:

AllTrim(Contact1->City) = "Cleveland"

 

FUNCTION / ANSI()

Description:

This is used to preserve the international special characters being used by the BDE language driver. Typically, it is used by Import. Instead of mapping an incoming field, you would press {Expression} at the Field Mapping Template and put this function around the incoming field. See the example below.

 

Param 1 (reqd):

The field name.

 

Returns:

The field value with the special international characters intact.

 

Example:

ANSI(Incoming->Address1)

(Assumes the incoming DBF file is called Incoming – substitute actual file and field.)

 

FUNCTION / At()

Description:

Returns a position of the found value. The search starts from the left. This is almost always used with the SubStr() function.

 

Param 1 (reqd):

A STRING value, such as a space or comma or a particular word.

Param 2 (reqd):

The STRING or field you are searching.

 

Returns:

NUMERIC position within the string.

 

Example:

SubStr(Contact1->Contact, 1, At(" ", Contact1->Contact) - 1)

Pulls out the first word of the Contact Name, typically the First Name, which might be replaced into the GoldMine® DEAR field.

 

FUNCTION / CalEndTime()

Description:

This can be used to determine the time an event ended. The function returns a time in the form hh:mm when you pass in a starting time in the format of hh:mm and a number of minutes as a numeric. If you do not pass in these 2 parameters, the function assumes the CALENDAR Time Field and the Duration Field. This function adds the duration to the starting time and calculates the ending time. Valid only for same-day times.

 

Param 1 (opt):

The time in the form hh:mm as a STRING.

Param 2 (opt):

The number of minutes the event lasted as a NUMERIC.

 

Returns:

An event ending time as a STRING in the form hh:mm.

 

Example:

CalEndTime() Result: 13:45

Assumes Calendar Activity Time is 12:00 and the Duration is 105.

 

FUNCTION / Canada()

Description:

Checks whether the field is a Canadian province. Valid entries are AB, BC, MB, NB, NF, NS, NT, ON, PE, PQ, SK, YT.

 

Param 1 (opt):

A field or STRING. If not passed, Contact1->State is assumed. You must surround the field with quotes.

 

Returns:

LOGICAL True or False.

 

Example:

Canada() .and. Contact1->Key1 = "PROSPECT"

Export Canadian prospects

 

FUNCTION / CDoW()

Param 1 (reqd):

The DATE value.

 

Returns:

The day of the week as a STRING.

 

Example:

CDoW(CtoD("02/01/97")) Result: Saturday

 

FUNCTION / Chr()

Description:

Used for returning characters or bytes that cannot be typed in on the keyboard.

 

Param 1 (reqd):

The ASCII number of a character (or byte).

 

Returns:

STRING - The ASCII character assigned to the ASCII number.

 

Example:

Chr(13) + Chr(10)

Character Return plus Line Feed

 

FUNCTION / Cmonth()

Param 1 (reqd):

The DATE value.

 

Returns:

The month as a STRING.

 

Example:

Cmonth(CtoD("02/01/97"))

Result: February

 

FUNCTION / CountWords()

Description:

Returns the total number of words in a string, character field or Memo field. You might use this in a Filter to determine which records should be included in an operation.

 

Param 1 (reqd):

The STRING, CHARACTER field or MEMO field. If passing in a Character or Memo field, do not surround the field with quotes.

 

Returns:

The number of words in the string, as a NUMERIC.

 

Example:

CountWords("ONE TWO THREE FOUR FIVE SIX")

Result: 6

CountWords(Contact1->Contact)

Result: 3 (Assumes David E Petonic)

 

FUNCTION / CtoD()

Description:

This is the only way to pass in a literal date value for evaluation by the expression. Typically used to check whether a GoldMine® date field is within a certain range.

 

Param 1 (reqd):

The DATE value as a STRING.

 

Returns:

The passed STRING value as a DATE.

 

Example:

CAL->OnDate >= CtoD("02/01/97") .AND. CAL->OnDate <= CtoD("02/28/97")

Evaluates whether the Calendar Activity Date is in the month of February, 1997.

 

FUNCTION / Date()

Returns:

Today's DATE based on your system date.

 

Example:

CAL->OnDate > Date() - 7

Returns TRUE if the Calendar Activity Date falls within the previous week.

 

 

FUNCTION / Day()

Param 1 (reqd):

The DATE value.

 

Returns:

The day of the month as a NUMERIC.

 

Example:

Day(CtoD("02/01/97"))

Result: 1

 

 

FUNCTION / Deleted()

Param 1 (opt):

The DBF file name, surrounded by quotes. If you are directly evaluating a single file such as with the GXW Browser, this isn't necessary, since the default is the current file. This might be used on the GoldBox-5 Export, if you want to export Deleted() records.

 

Returns:

TRUE if the record is *deleted* (deletion marked). Useful only for the GXW Browser. You will notice that *deleted* records cause the Status Bar to turn blue when you are resting upon them, making it easy to identify them.

 

Example:

Deleted()

When doing a [Srch] in the GXW Browser. This will allow you to access each *deleted* record sequentially, if you continue to press [Srch].

Deleted("CONTACT1")

On a GoldBox-5 Export, where many DBF tables are opened at the same time, this ensures you want to check the CONTACT1 file.

 

FUNCTION / DidSession()

Description:

Useful for evaluating whether to run a Q-file line operation, based on whether another Batch Operation completed successfully. For example, you want to run an update of Details in GoldBox-5. You first want to Pack and Reindex the Supplemental File (CONTSUPP.DBF) before running the operation, to make sure the indexes are fresh. If you cannot Pack the file, you don't want to run the Update. Your first line of the Q-file would be the call to Pack the CONTSUPP file. Your 2nd line, assumed to be the actual Update operation, would get an expression using this function. If the Pack did not run because GoldMine® was still open, the 2nd operation would not run

 

Param 1 (reqd):

The Batch Utility Code as a STRING.

Param 2 (reqd):

The Batch Utility Description as a STRING.

Param 3 (opt):

The Date the Batch Utility began. If not passed, the current date is assumed. Normally you would not pass this parameter, as you usually want to evaluate current operations.

 

Returns:

TRUE if the Batch Operation is found in the Batch Session Summaries file, FALSE if not.

 

Example:

DidSession("PAKCONTSUPP", "d:\progra~1\goldmine\common\contsupp")

Returns TRUE if the Pack of CONTSUPP was successful today, FALSE if not.

 

FUNCTION / DoW()

Param 1 (reqd):

The DATE value.

 

Returns:

The day of the week as a NUMERIC. Sunday is the 1st day of the week.

 

Example:

DoW(CtoD("02/01/97"))

Result: 7

 

 

FUNCTION / DtoC()

Description:

This function is useful if you wish to use a date in a CHARACTER format.

 

Param 1 (reqd):

The DATE value.

 

Returns:

The passed DATE as a STRING.

 

Example:

AllTrim(Contact1->Lastuser) + " at " + DtoC(Contact1->Lastdate)

Returns who modified Main Contact record as: DAVE at 02/01/97.

 

 

FUNCTION / DtoS()

Param 1 (reqd):

The DATE value.

 

Returns:

The passed date as a STRING in the form yyyymmdd.

 

Example:

DtoS(CtoD("02/01/97"))

Result: 19970201

 

FUNCTION / DupedWord()

Description:

Identifies and/or removes duplicated words in a character field. This function returns 1 of 3 values, depending on the number of parameters you pass in. See Examples below. Ideal if you have an undetermined number of records with the last name duplicated in the Main Contact Name field.

If you are doing a Global Replace on the Contact1->Contact field, typically you would put the following as the Primary Filter:

DupedWord('Contact1->Contact') (One parameter is passed)

The Field 1 Replace expression would be:

DupedWord('Contact1->Contact', 1, 1) (Three parameters are passed)

 

Param 1 (reqd):

The character field, surrounded by quotes.

Param 2 (opt):

Any value, such as the number 1.

Param 3 (opt):

Any value, such as the number 1.

 

Returns:

If you pass 1 parameter, returns a TRUE if a duped word is found, FALSE if not.

If you pass 2 parameters, returns the duped word, capitalized. If you pass 3 parameters, returns value of character field with the duped word removed.

 

Example:

The following examples assume the Contact1->Contact field, and the record currently being evaluated contains: Dave Petonic Petonic

DupedWord('Contact1->Contact')

Returns: True

DupedWord('Contact1->Contact', 1)

Returns: PETONIC

DupedWord('Contact1->Contact', 1, 1)

Returns: Dave Petonic

 

FUNCTION / DurConvert()

Description:

Converts a passed-in number of minutes to hh:mm:ss format. The typical usage of this function is when importing into History, and you wish to import an activity Duration. The incoming Duration may be a number of minutes or an hourly amount, such as 1.5.

 

Param 1 (reqd):

The number of minutes, as a NUMERIC value. See the Example below for converting when the Incoming Duration value is a number of hours. If the Incoming Duration value is stored in a Character-type field, you must surround it with the Val() function to turn it into a NUMERIC value.

 

Returns:

The Duration in the format hh:mm:ss. Please note that the final portion, the seconds, will always be returned as 00.

 

Example:

DurConvert(282)

Result: 04:42:00 (which says: 4 hours, 42 minutes)

DurConvert(Val(Infile->ActyLength) * 60)

Result: 01:30:00 (This assumes the incoming field Infile->ActyLength is a Character-type field, and is stored as hours. In the above example, assumes the Duration was 1.5, meaning we had to multiply this value by 60 to get the number of minutes.)

 

FUNCTION / Empty()

Description:

This determines if any field type is empty, but it's real usefulness comes when you include a .NOT. connector. In the expression fragment .NOT. Empty(File->Field), you are effectively saying: Return a TRUE if there is something in the field. This comes in handy when performing imports or global replaces or exports. Please note that when checking Memo fields (I.e. Notes), the IsBlank() function should be used instead.

 

Param 1 (reqd):

Any valid field type.

 

Returns:

A LOGICAL True if the value is empty, a FALSE if not.

Empty CHARACTER field: Blank

Empty NUMERIC field: 0

Empty DATE field: / /

Empty MEMO field: Not Recognized! See IsBlank()

Empty LOGICAL field: .F.

 

Example:

.NOT. Empty(Contact2->Prevresult)

Assumes you are importing into Addl Contacts. This would be the filter to key in when importing into the Updater file.

Empty(Contact1->Key1)

Assumes replacing Key1 with "PROSPECT" if it is empty.

 

FUNCTION / EndOfMonth()

Param 1 (opt):

The DATE value. If not passed, assumes Today's date.

 

Returns:

The last day of the month as a DATE.

 

Example:

EndOfMonth(CtoD("02/01/97"))

Result: 02/28/97

 

FUNCTION / EndWords()

Description:

Returns the First and Last words of any string, character field or Memo field. Saves you from having to use a combined At() / Rat() statement in your expression.

 

Param 1 (reqd):

The STRING, CHARACTER field or MEMO field. If passing in a Character or Memo field, do not surround the field with quotes.

 

Returns:

The First and Last words of the string, separated by a single space.

 

Example:

EndWords("ONE TWO THREE FOUR FIVE SIX")

Result: ONE SIX

EndWords(Contact1->Contact)

Result: David Petonic (Assumes David E Petonic)

 

FUNCTION / FieldContains()

Description:

This function allows you to check for one of multiple values in a field, instead of having to key in multiple OR statements using the dollar sign operator. You can also use it in place of the dollar sign operator, although its real value is realized on checking for multiple values.

Unlike with the dollar sign operator, this function is not case sensitive. All values are automatically UPPER-CASED by GoldBox-5 during the field checking. See the example below.

 

Param 1 (reqd):

The field name. Do NOT surround by quotes.

Param 2 (reqd):

The value or values to be checked in the field. If passing in more than one value, you MUST separate each by the pipe character (normally this is the shift-value of the backslash key).

 

Returns:

TRUE if the field contains one of the passed in values, FALSE if not.

 

Example:

FieldContains(Contact1->Mergecodes, "ABC|DEF|GHI|JKL")

Returns TRUE if the Merge Codes field contains ABC, DEF, GHI or JKL.

If you did not use this function, the dollar sign operator equivalent would be:

"ABC" $ Upper(Contact1->Mergecodes) .OR. "DEF" $ Upper(Contact1->Mergecodes) .OR. "GHI" $ Upper(Contact1->Mergecodes) .OR. "JKL" $ Upper(Contact1->Mergecodes)

 

FUNCTION / File()

Description:

Checks for the existence of a file on disk.

 

Param 1 (reqd):

The file name, with full path.

 

Returns:

TRUE if the file is on disk, FALSE if not.

 

Example:

.NOT. File(Trim(ContSupp->Address1 + ContSupp->Address2))

This assumes you are doing a global delete on Linked Document records where the document itself does not exist on disk. The file name is stored in the Address1 and Address2 fields of the Supplemental record.

 

FUNCTION / FileWild()

Description:

Checks for the existence of a file mask, using the asterisk as a wildcard character. The File() function looks for a specific file, but with this function you can be more general.

 

Param 1 (reqd):

The file name, with full path.

 

Returns:

TRUE if at least 1 file matching the mask is on disk, FALSE if not.

 

Example:

FileWild("c:\progra~1\goldmine\gmbase\mail*.db*")

This should return TRUE, since MAILBOX.DBF is in GoldMine's GMBASE path.

 

FUNCTION / FirstCharacter()

Description:

Keeps stripping the first character of a field until a standard keyboard character is encountered. If you pass in a 2nd parameter, keeps stripping until one of the characters you pass in is encountered.

A space is interpreted as a non-keyboard character, as is a Carriage Return/Line Feed.

 

Param 1 (reqd):

The field name. Do NOT surround by quotes.

Param 2 (opt):

A string of keyboard characters, surround by quotes. Please note that if you do pass in your own string of characters, the function will interpret this string literally – it is NOT case sensitive!

 

Returns:

The stripped value of the field. If you do not pass a 2nd parameter, then the function stops stripping as soon as any keyboard character is encountered. If you do pass a 2nd parameter, the function stops stripping when one of the passed-in characters is encountered.

 

Example:

FirstCharacter(Contact2->Comments)

Strips any non-keyboard first character from the Comments field.

FirstCharacter(Contact1->Key1, "0123456789")

Keeps stripping the first character of Key1 until a number is encountered.

 

FUNCTION / FirstLast()

Description:

Returns a Name in the format LastName, FirstName as FirstName LastName. Useful if you imported from another system and the Contact name was tracked in Last, First fashion. Please note that there is an option on the Import Setup screen for this purpose.

 

Param 1 (opt):

The GoldMine® field on which to perform the conversion. If you do not pass this parameter, Contact1->Contact is assumed (Main Contact name).

Param 2 (opt):

Any value, such as the number 1. If the name is LastName FirstName (there is no comma separating the names, just a space), pass this parameter. Please note that if you need this capability, you must pass in the field name as the 1st parameter regardless.

 

Returns:

The STRING in FirstName LastName format.

 

Example:

FirstLast()

Result: David E Petonic (assumes name as Petonic, David E in GoldMine).

FirstLast("Contsupp->Contact")

For an Additional Contact name.

FirstLast("Contact1->Contact", 1)

Result: David E Petonic (Assumes name was Petonic David E in GoldMine).

 

FUNCTION / FirstOfMon()

Description:

This function is handy when you want to address a standard Date Range in a filter. Although you could of course hardcode the range, this eliminates that need if your date constantly changes, such as 1 month prior to today. You can just launch the operation that uses the filter with no changes. For example if you wanted to build a Group each month for every contact who had a Completed Sale the previous month, you would use this function in tandem with the EndOfMonth() function. See the examples below. Please note: The 8th character of the function name is the number 1.

Although you will usually be evaluating past months, you can just as easily evaluate months in the future, such as those found in the GoldMine® Calendar. You could, for example, build a group of contacts who are scheduled for an appointment sometime in the next 3 months. Once the Group Setup is built, it doesn't need to be altered as you normally would if hardcoding the date range.

 

Param 1 (opt):

The date to be evaluated, as a true DATE value. If you do not pass this, the current system date is used.

Param 2 (opt):

If you want to address any month other than the current month, you must pass the 1st parameter and a number here. A negative number will walk backward from the Date you passed as the first parameter. A positive number will walk forward. When passing a negative number, ensure there is no space between the minus sign and the number.

 

Returns:

The first day of the month, as a DATE value.

 

Example:

Below examples assume a pass-in date, or current date, of July 5th, 1998:

FirstOfMon()

(Returns 07/01/98)

FirstOfMon(Date(), -3)

(Returns 04/01/98)

ContHist->RecType = "S" .AND. ContHist->OnDate >= FirstOfMon(Date(), -1) .AND. ContHist->OnDate <= EndOfMonth(FirstOfMon(Date(), -1))

If building a Group, for example, this returns a TRUE if the Completed Sale Date is greater than or equal to the first day of the previous month and is less than or equal to the last day of the previous month.

Cal->RecType = "A" .AND. Cal->OnDate >= FirstOfMon() .AND. Cal->OnDate <= EndOfMonth(FirstOfMon(Date(), 3))

If building a Group of all contacts who have a scheduled Appointment during the next 3 to 4 months, this filter will return TRUE if the Appointment is scheduled for July, August, September or October 1998.

 

FUNCTION / FirstWord()

Param 1 (reqd):

The Character field on which to return the first word.

 

Returns:

The first word from the passed in field – everything up to the first space.

 

Example:

FirstWord(Contact1->Contact)

Result: David (Assumes the name is David E Petonic)

 

FUNCTION / Flagged()

Description:

This is used exclusively by the GXW Browser. If the record is Flagged, it returns TRUE. For Export and Global Replace, if this function is the only entry in the filter, GoldBox-5 uses the Flag List as the master, thereby making the operation run extremely fast. Only those records in the Flag List are handled. If any other operation, it is simply a part of the filter and the entire file is evaluated.

 

Returns:

TRUE if the GoldMine® record has been Flagged.

 

FUNCTION / GenBanner()

Description:

If you imported Notes from another Contact manager, you can replace the Date Banners in the Main Notes to GoldMine Date Banners. You may wish to do this if you want to later run a Notes Archival and make History records from the Notes entries.

This function will only work for {Batch} {Global Replace}. At the [Field 1] button, select Contact1->Notes. For the Field Replace Expression, select this function.

Any Notes line that begins with a date is converted to a standard banner, and everything past the Date is bumped down to the next line. The function will ignore any user name or initials, or any time in the generic Date banner, because these are too inconsistent to accurately parse. The generic time 12:01am is used for all converted banners.

If the date is followed immediately by a colon, the function will transparently handle it.

 

Param 1 (opt):

A GoldMine User Name. If not passed, the GoldMine User Name assigned to your GoldBox-4 login initials is used.

 

Returns:

The converted Main Notes field.

 

Example:

GenBanner() or GenBanner("DAVE")

Assumes a Notes entry of:

02/24/2001 – DEP – 1:32pm – Contacted the client today, interested in meeting.

Will convert to:

*** DAVE *** February 24, 2001 at 12:01am

- DEP – 1:32pm – Contacted the client today, interested in meeting.

 

FUNCTION / Generate()

Description:

Generates a sequential number that conforms to the rules you have set up for the definition in the (Sub-Filters / Seq # Definitions) table. The sequential number is padded with leading zeros. You can optionally generate a prefix using a valid expression which appears in front of the number. Ideal for use in Import and Global Replace, for assigning client numbers, account numbers, serial numbers, etc.

Most of the time, you will just use the standard capability of this function, by passing in a single parameter. However, flexibility has been added to this function to allow more control. Please see the paramater choices below.

Param 1 (reqd):

The Definition Label of the expression in the Auto-Replace table.

Param 2 (opt):

The numeric position in the sequential number, after which you want to insert a character value.

Param 3 (opt):

The character value you wish to insert somewhere within the sequential number. This will be inserted AFTER the above position.

Param 4 (opt):

The number to use as an Increment value. Default is 1, which increments the sequential number by 1. If you pass the number 5 as an example, the numbers will be incremented by 5.

Param 5 (opt):

An indicator to use Time logic if you want to increment time by minutes.

 

Returns:

A sequential number in the form of a STRING.

 

Example:

Generate("Client ID")

Returns ID#000023. For the next record, returns ID#000024, etc. The {ID#} is the prefix and is optional.

Generate("MINUTES2", 2, ":", 2, 0)

Scenario: You are importing 100 Scheduled Calls into the Calendar with GoldBox-5. You wish to schedule the time of the calls at 2-minute intervals. You want to start the first call at 1:00 pm.

Go into {File} {Sub-Filters} and add a new entry. Make the Definition Label MINUTES2. Make the PLACES value as 4. Make the CURRENT # as 1258. This means you want a 4 digit number generated. The Generate() function first adds the Increment value to the Current # before doing anything else, so your first Time would actually be 13:00 (1:00 pm).

At the Import Field Mapping Template, plug in your Calendar fields as desired. Make sure you plug in an Activity Date, since that is a required entry. At the Activity Time field, press {Exprn} and key in the above entry in bold as the expression. What happens is the following:

GoldBox-5 looks for the MINUTES2 entry in the Sub-Filters file. It adds 2 to the current value (based on the number 2 as the 4th parameter above). Because you passed a 5th parameter of 0, that tells GoldBox-5 to properly increment time, so that when the value is 1358, the next will be 1400 instead of 1360. You also want to insert a colon in the middle of the generated number so the time format conforms to GoldMine's standard time format of hh:mm. The 2nd parameter above (2) means to insert the character value after the first 2 characters of the generated number. The 3rd parameter is the character value you wish to insert.

If you are appending 100 Scheduled Calls into Calendar, the result of the above is that the calls will be scheduled 2 minutes apart, starting with 1:00 pm and ending with 4:18 pm.

NOTE: If you are doing this on a regular basis and want to reset the time in the Sub-Filters file back to 1258 for the next time, you can pass in a Q-file entry to accomplish this. In your Q-file, select {Add} and choose the entry near the bottom of the list called {0 REPLACE FLD IN GX5 FILE}. Edit as follows:

LAUNCH ID = SEQNBRS (The name of the GX5 file you wish to modify)

4TH PARAMETER = MINUTES2 (The Definition Label of the entry you wish to modify)

5TH PARAMETER = SQ_NUMBER (The Name of the Field you wish to modify)

6TH PARAMETER = 1258 (The value you wish to place into the SQ_NUMBER field)

Generate("Client ID", 6, "", 3)

This is the same as the first example above, except you wish to skip ID numbers by 3 instead of the default of 1. The 2nd parameter is the same as the PLACES value, and the 3rd parameter is simply 2 double-quotes with nothing in between them. You are passing dummy values for the 2nd and 3rd parameters because the Skip value is the 4th parameter.

 

FUNCTION / GetAcct()

Description:

Returns the encoded Creation Date of a Main Contact record as a true date, and is Y2K compliant with GoldMine's new coding.

Param 1 (opt):

The ACCOUNTNO field. If omitted, Contact1->Accountno is assumed.

 

Returns:

The Creation Date as a true Date.

 

Example:

GetAcct()

Assumes Contact1->Accountno starts with A00229. Returns 02/29/2000.

GetAcct("Conthist->Accountno")

Returns same as above. Please note that even though you are passing in the Accountno field from History, it is still the Creation Date of the Main Contact (CONTACT1).

 

FUNCTION / GETaWord()

Description:

Returns a numbered Word from any string, character field or Memo field.

 

Param 1 (reqd):

The STRING, CHARACTER field or MEMO field. If passing in a Character or Memo field, do not surround the field with quotes.

Param 2 (reqd):

The number of the Word you wish to get.

 

Returns:

The numbered Word as a string.

 

Example:

GETaWord("ONE TWO THREE FOUR FIVE SIX", 4)

Result: FOUR

GETaWord(Contact1->Contact, 2)

Result: E (Assumes David E Petonic)

 

FUNCTION / Get() Functions

Description:

10 functions are tied into the Virtual Lookup Table (VLT). The standard VLT is available to GoldBox-5 users from the Web site. You should download it only once, especially if you have set it up with Territories or other fields. The VLT is a dBase4 file of 8 fields: PostalCode, State, City, County, Territory, Hour Difference to GMT, Time Zone and DayLight Savings Compliance Code. The first 4 fields contain the 43,000 USA zip codes and their related states, cities and counties. The territory field is blank so that you can perform global operations on the table to populate this field. With the BR7 Utility, you can increase the length of these fields or add more, such as a Salesperson or Metro Code. The final 3 fields concerning Time Zones are preset in the VLT and generally you do not need to alter them.

There are 2 indexes on the VLT: The main one on the PostalCode and the 2nd on City plus the first 3 characters of the State field. By default, GoldBox-5 assumes you want to use the PostalCode index when using the Get() functions.

Most of your work will be in the setup of the VLT's Territory field or other fields you have added. You'll probably do global deletes to start with if you want to remove records from the table that don't affect your business. The rest will be global replaces. You can do the setup within GoldBox-5 via the {File} {Virtual Lookup Table} option. This will put you into the GXW Browser.

The interaction of the Get() functions with the VLT is fairly easy to understand. They all work the same: You pass in a value (normally a GoldMine® field, by default the Contact1->Zip field). GoldBox-5 opens the VLT and attempts to find the value based on one of the 2 indexes (the default is the PostalCode index). It then returns the found value, based upon which Get() function you used. This value can be replaced into a field, exported, imported or even used in a filter. That's why it's called the Virtual Lookup Table. You can use a VLT value in a filter even though that value may not exist in GoldMine!

The 10 Get() VLT functions are:

GetSlsTerr()

Returns what is in the TERRITORY field.

GetZip()

Returns what is in the POSTALCODE field. For this, of course the Zip code is not used for Lookup because that is what you wish to know. You would therefore pass in the following:

GetZip("Upper(PadR(Contact1->City, 35) + Left(Contact1->State, 3))", 2)

You are passing in 35 characters of the City field and 3 of the State, plus the number 2 as the 2nd parameter, indicating you wish to use the 2nd Ziptable index.

GetState()

Returns what is in the ST field.

GetCounty()

Returns what is in the COUNTY field.

GetCity()

Returns what is in the CITY field.

GetTable()

Returns what is in the field name you passed in. See below, {Param 3 (opt)}

GetDST()

Returns TRUE if the Contact complies with Daylight Savings Time plan.

GetGMT()

Returns Contact's difference in hours from Greenwich Mean Time (GMT). For example, Eastern time is 5 hours behind, Pacific 8 hours behind, etc.

GeTimeDiff()

Returns difference between YOUR time and Contact's time as # of hours. The {Service} {Config Screen} now has 2 prompts to track your Time Zone and whether you IGNORE the Daylight Savings Time plan. These are used to accurately calculate the time difference whether you both use DST, you do but the Contact doesn't, or the Contact does but you don't. For example, if you are in New York and your Contact is in Los Angeles, this function would return -3, indicating 3 hours behind. If you are in Denver and your Contact is in Chicago, the function returns 1, indicating 1 hour ahead. If you are in Phoenix and the Contact is in San Francisco and the date is July 31st, this function would return 0, since Daylight Savings advanced the clock in San Francisco but is not observed in Arizona. This function returns 99 if the passed-in Zip is invalid, not found in ZIPTABLE or is a non-USA postal code.

GeTimeZone()

Returns 1 of 7 USA time zones for the Contact as Atlantic, Eastern, Central, Mountain, Pacific, Alaska or Hawaii.

 

You'll probably use the GetSlsTerr() function the most, so that is the one that will be fully described.

 

GetSlsTerr()

No param:

If no parameter is passed, GoldBox-5 assumes you want to lookup the value of the Contact1->Zip field in the VLT and return the whole value of the Territory field. There is a prompt in the {Service} {Config Screen} called {Sub Zip}. This defaults to 5, which is the standard USA Zip Code length. Change if necessary.

Param 1 (opt):

STRING: You can pass a field other than ZIP, or even a literal expression. It must be surrounded by quotes, as in: GetSlsTerr("SubStr(Contact2->UserDef01, 1, 5)")

Param 2 (opt):

NUMBER: Must be 1 or 2. This designates which index you want to activate in the VLT for the lookup. The default is 1, the PostalCode index. However, you might wish to return the Territory based on City+State, which is the 2nd index. Your expression would be: GetSlsTerr("Contact1->City + SubStr(Contact1->State,1,3)", 2)

Param 3 (opt):

STRING: This parameter only relates to the GetTable() function. It is the name of the field you added into the VLT with the BR7 Utility. It must be surrounded by quotes. The following example assumes you used [Modify] in the BR7 Utility to add a field called METROCODE: GetTable("SubStr(Contact1->Zip, 1, 5)", 1, "METROCODE")

 

FUNCTION / GetCustom()

Description:

This is an offshoot of the Field Translate feature in the Import, where you can press {F2} at the Field Template and build a replace table. In the Import, the Saved Template name (the IG file) + the Field name is used as the lookup into the table. Used standalone, you must pass in the label, which is 2 words separated by the dash-greater than arrow. This function scans the choices in the Custom Replace table and determines whether the field value is found. If so, the Replacement value is written into the field.

You can also pass in a 3rd parameter, which lets you retain the original field's value if you are replacing one field based on the value in another GoldMine field. See the example below.

 

Param 1 (reqd):

STRING: The name of the label in the Field Translator Table, surrounded by quotes.

Param 2 (reqd):

STRING: The name of the field holding the value to be checked in the Translator Table.

Param 3 (opt):

STRING: The name of the originating field (the one you are replacing), if it is different than the field value you are passing in as the 2nd parameter. This allows you to retain the originating field value if a translated value is not found in the Translator Table.

 

Returns:

The STRING replacement value from the Field Translator Table.

 

Example:

GetCustom("SALES->TERRITORY", "Contact1->Key1")

GetCustom("HISTORY->RESULT", "Conthist->Resultcode")

GetCustom("COMPANY->SLSREP", "Contact1->Company", "Contact1->Key1") In this case, you have a list of Companies in the Translator Table and you are returning a Sales Rep's name as the translated value. But you wish to replace the Key1 field with the translated value. By passing in the Key1 field as the 3rd parameter, the original Key1 value is retained if the Company Name is not found in the table.

 

FUNCTION / GetSICcat()

Description:

This functions scans GBSIC.DBF, an SIC code table provided by Redstone SoftBase Company with GoldBox-5. Based on the passed SIC code, GoldBox-5 finds and returns the SIC Category (which can be up to 70 characters in length).

 

Param 1 (reqd):

STRING: The GoldMine® field containing the SIC code, surrounded by quotes.

 

Returns:

The SIC Category as a STRING.

 

Example:

GetSICcat("Contact1->Key1")

 

FUNCTION / GMuser

Description:

This is not a function but a variable. GoldBox-5 stores the name you have assigned as your GoldMine® User Name to this variable name. Typically you'll use this for user-specific lookups in the Virtual Lookup Table.

 

FUNCTION / Grab() Functions

Description:

You can grab the city, state and zip code from an imported field if they are all contained within the same field. Typically, this occurs if you are importing addresses from a word processing package or spreadsheet. The incoming City/State/Zip might look like this for one of the import records: Cleveland, OH 44070

Click [Exprn] at City, State, & Zip fields. In the Expression column, put the following: (Assumes an Incoming File called INDATA.DBF; substitute your own file name)

GrabCity("Indata->Address")

GrabState("Indata->Address")

GrabZip("Indata->Address")

The Grab() functions only work if the City-State-Zip field contains all 3 values. If the incoming value only contains City and State, you'll have to add the Zip Code to the expression, as in: GrabCity("Trim(InData->Address) + Trim(InData->Zip)").

 

Param 1 (reqd):

The Field or Expression containing the City-State-Zip value, surrounded by quotes.

 

Returns:

The stripped City, State or Zip, depending on which Grab() function you used.

 

FUNCTION / GxProper()

Description:

Turns the passed-in value into one that is Proper Case. This function replaces the standard Visual dBase Proper() function and should always be used instead. It is much more precise in its capabilities:

Capitalizes a letter if the separator is something other than a space, such as a period or apostrophe. Example: D.E. Petonic or Susan O'Leary.

Decapitalizes common short words such as and a, by, an, for, or, to, in, de, la.

Decapitalizes the contractions {'s} and {'t}. Example: Dave's or Won't

Recapitalizes the letter following Mc or Mac in typical Irish surnames. Example: MacDonald or McMahon.

Recapitalizes common acronyms such as USA, IBM, AT&T, NATO. For others, you may want to use the WordSwap() function if necessary.

Recapitalizes common short titles such as CEO, CPA, RN, LPN, ESQ., VP.

Recapitalizes Roman numerals up to 14. Example: IV, VII, XIII.

Recapitalizes the words PO and RR#, typically found in an Address.

Note: No Proper() function can handle every situation – you may need to manually alter some fields, such as those containing company acronyms.

 

Param 1 (reqd):

A field or STRING.

 

Returns:

The STRING in Proper Case format.

 

Example:

GxProper("DAVE PETONIC") (Result is Dave Petonic)

GxProper(Contact1->Company)

GxProper(Contact1->Contact)

GxProper(Contact1->Address1)

 

FUNCTION / HistoryCode()

Description:

GoldMine uses a single-character code to determine the type of Activity for Calendar and History. You might wish to translate this code into a meaningful word, on an Export, for example. This function returns one of two values, depending upon how many parameters you pass in. If you pass in the default 1 parameter, the word associated with the Record Type is returned. For example, "Call" is returned for Rectype "C", "Appointment" is returned for Rectype "A", etc.

If you pass a 2nd parameter such as the number 1, the 'Successful' status is returned. This works only if you pass in a History Record Type, but not for a Calendar Record Type.

Typically, you would use this function to export a calculated field. For example, when exporting from History as master, you would press {Nu-Field} at the mapping screen. Key in HistoryType as the name of the exported field. Select this function call as the expression.

 

Param 1 (reqd):

The Record Type field of History or Calendar. If you select this function call out of the functions box at the Expression Builder, the default is Conthist->Rectype. You can also pass in Cal->Rectype if you are evaluating Calendar as the master file.

Param 2 (opt):

Any value, such as the number 1. This is only used for History records. It will return either the word Successful or Unsuccessful for completed Appointments, Calls, Events, Other Actions, Forecast Sales or Next Actions.

 

Returns:

An associated word for the 1-letter Record Type, if you pass 1 parameter. If you pass a 2nd parameter, the word Successful or Unsuccessful when evaluating History, as per the above Param 2 description above.

 

Example:

HistoryCode(Conthist->Rectype)

Returns, for example, Forecast Sale if the current History Record Type is 'S'.

HistoryCode(Cal->Rectype)

Returns, for example, Appointment if the current Calendar History Record Type is 'A'.

HistoryCode(Conthist->Rectype, 1)

Returns Successful or Unsuccessful based on the Param 2 description above.

 

FUNCTION / IIF()

Description:

This is called an Immediate If. It's an IF...ELSE...ENDIF statement that you can put on a single line. Normally this function is used in expressions rather than filters, because the IF is already assumed in a filter. You'll usually use this for exports, imports and global replaces.

 

Param 1 (reqd):

The condition to be evaluated. Any legal expression can be entered.

Param 2 (reqd):

What should be returned if the condition is True.

Param 3 (reqd):

What should be returned if the condition is False.

 

Returns:

The result of the 2nd parameter if the condition is True. Otherwise, the result of the 3rd parameter is returned.

 

Example:

IIF(Empty(Contact1->Key1), "BLANK", Contact1->Key1)

Assumes you are exporting in GoldBox-5. You want to export the word BLANK if the Key1 field is empty, otherwise export the field value.

 

FUNCTION / InGMLookup()

Description:

A handy tool for database administrators, this function checks whether a particular GoldMine® field value is in the associated Lookup list. If the field value is found in the Lookup list, a TRUE is returned. If the field value is blank or the field value is NOT FOUND in the Lookup list, a FALSE is returned. For field maintenance by the database administrator, you may use the .NOT. connector in front of the function. See below.

The first 2 examples are the simplest use of the function, for Main Contact and user-defined fields. The 3rd example is examining the Result Code in History for Calls only. In this case you must pass in the Field Code, which is MCALLRSTCD. Many of the Calendar and History fields use a Field Code in the GoldMine® Lookup table because of the different activity types. To see a particular field code, choose option {Batch} {Verify Lists}. In the Fields Pick list, the last column displays the field codes for Calendar and History.

Example for usage: You want to Globally replace the Reference field with a beginning asterisk for all Completed Call History records where the Result Code is NOT in the Lookup list. Your global filter expression would be:

.NOT. InGMlookup("Conthist->Resultcode", "MCALLRSTCD") .AND.

Conthist->Rectype = "C"

Your Field Replace expression would be:

"*" + Conthist->Ref

 

Param 1 (reqd):

The GoldMine® Field Name, surrounded by quotes.

Param 2 (opt):

The Field Code for Calendar and History fields.

 

Returns:

TRUE if the Field value has an F2 Lookup entry.

 

Example:

InGMlookup("Contact1->Key3")

InGMlookup ("Contact2->Userdef09")

InGMlookup("Conthist->Resultcode", "MCALLRSTCD")

 

FUNCTION / InGroup()

Description:

In its most common usage, allows you to build a group based on the contact's membership in another group. You can string these calls together, for example, to require membership in 3 different groups. Plus, you can use the .NOT. connector when you don't want the contact to be found in a particular group. This function can also be used for exports, global replaces or deletes, or any filter prompt in GoldBox-5.

 

Param 1 (reqd):

The GoldMine® User Name (the owner of the group).

Param 2 (reqd):

The Name of the Group.

Param 3 (opt):

Any value, such as the number 1. Used only if you want to use the InGroup() function while Updating.

 

Returns:

TRUE if the contact is found in the group, FALSE if not.

 

Example:

InGroup("DAVE", "OHIO SOFTWARE PROSPECTS")

InGroup("DAVE", "PROSPECTS") .AND. InGroup("BILL", "HOT LEADS") .AND. .NOT. InGroup("SUSAN", "SENT SALES PACKAGE")

 

FUNCTION / InList()

Description:

This function lets you pass in a list of values and will then check a GoldMine® field to see any of the values from the list are found within the GoldMine® field. As soon as any of the list values is found, the search stops. This function precludes you from having multiple OR statements in the Filter or Expression, and possibly running out of space.

 

Param 1 (reqd):

An ARRAY which contains the list values. Don't be intimidated by the word "array" - it's very easy to create. Within curly brackets, you place the string values, each surrounded by quotes and separated by commas. That's all there is to it.

Param 2 (reqd):

The GoldMine® character field name, surrounded by quotes.

 

Returns:

LOGICAL True if any of the passed list elements is found within the GoldMine® field.

 

Example:

InList({"Crosby", "Stills", "Nash", "Young"}, "Contact1->Contact")

Returns True if Crosby or Stills or Nash or Young is found somewhere within the CONTACT field; otherwise it will return False.

 

FUNCTION / InOrgLevel()

Description:

This function allows you to determine whether a contact has a particular Org Chart entry, whether it is a Member or Level record. You can use it as part or all of the global filter for group building, global replacing or deleting, and exporting. It is also one of the functions used which allow you to "roll up" numeric values from Members to the Level record, or from section Levels to a higher Level. GoldMine's powerful Org Chart structure has a maximum of 6 levels: The Top Level, and up to 5 section levels underneath it. You can have any number of Sections at the same level, and any number of Members under any level. A typical usage of this function is rollup. Because of the ease with which you can create Top Level Org Charts in GoldBox-5, the below example assumes you will be working with the Top Level only.

Example: In GoldBox-5, you created Org Charts with {Batch} {Org Chart Creator} where the Break expression is the Key1 field and the Org Title expression is "TERRITORY - " + Contact1->Key1. In GoldMine, the Org Charts appear as TERRITORY - EAST, TERRITORY - CENTRAL, TERRITORY - WEST, etc., with the Members of each territory displaying underneath. You wish to roll up Completed Forecasted Sale amounts from the Members of each Territory and write the total amount into a user-defined field called Contact2->uSalesTot for each unique Territory.

Once the Org Charts are created, use the 2-step Data Shuffle to perform the rollup.

1. Export from History using the following global filter:

ContHist->RecType = "S" .and. InOrgLevel("TERRITORY", 1, "MEMBER")

Which says: Export the record if it is a Forecasted Sale and the Main Contact is a Member of the TERRITORY Org Chart, Level 1. You'll note that you can pass in a fragment of the Org Chart Title - this way, all Territories are picked up.

At the Field Template, select the ContHist->Accountno field and click [Exprn]. Key in: RollupAcct("TERRITORY") Also, select the Forecast Sale field ContHist->Duration.

2. Select {Batch} {Import/Update} {Update Main Fields}. Plug the ACCOUNTNO into the {Rec Match > ACCOUNTNO field for Record Match. Plug DURATION into the Contact2->uSalesTot field, which should be numeric. Click [Incrmnt] to turn *INCREMENT* on.

3. At the Import Saved Setup screen, you may wish to create a Group of matched records so in GoldMine® you can scroll through Top Level records that were incremented.

 

Param 1 (reqd):

A fragment of the Top Level Title surrounded by quotes, or, a space if you want to address a Section Level regardless of the Top Level Title. Typically, this might be the case where the Company Name is the Top Level Title, but there is a Section called SALES under it.

Param 2 (reqd):

The Level as a NUMBER. Pass 1 for the Top Level, 2,3,4,5 or 6 for the Section Levels.

Param 3 (reqd):

The word "MEMBER" or "LEVEL".

Param 4 (opt):

A fragment of the Section Level Title surrounded by quotes. This is not required if you passed in 1 as the 2nd parameter.

 

Returns:

TRUE if the Org Chart record was found, FALSE if not.

 

Example:

InOrgLevel("IBM", 2, "MEMBER", "SALES")

Returns TRUE if the record is a Member of the Sales Section under IBM as Top Level.

InOrgLevel(" ", 2, "MEMBER", "SALES")

Returns TRUE if record is a Member of any 2nd Level Sales Section.

.NOT. InOrgLevel("TERRITORY", 1, "MEMBER")

Returns TRUE if record IS NOT a member of a Territory Top Level.

 

FUNCTION / Int()

Description:

Strips off decimals from a number, returning just the whole number.

 

Param 1 (reqd):

The NUMERIC value.

 

Returns:

The NUMBER (whole number - no decimals).

 

Example:

Int(224.667)

Result: 224

 

FUNCTION / IsAlpha()

Param 1 (reqd):

The STRING or Field name.

 

Returns:

LOGICAL True if the first character is A-Z, a-z.

 

Example:

IsAlpha(Contact1->Key4)

 

FUNCTION / IsBlank()

Description:

This is similar to the Empty() function. Use for evaluating whether a Notes (memo) field is empty. For some reason dBase7 does not see an empty Notes field as empty when you use the Empty() function. This function will.

 

Param 1 (reqd):

The STRING or Field name.

 

Returns:

LOGICAL True if the field is blank.

 

Example:

.NOT. IsBlank((Contact1->Notes)

Exports record if the Notes field has something in it.

 

FUNCTION / IsFoundIn()

Description:

This function returns a TRUE if a field value is found in a user-entered list. It might be useful, for example, if you want to create a list of Users and return a TRUE if a GoldMine User Name is found, similar to GoldMine's User Groups functionality.

The list is created by going to {File} {Field Translator Table} and keying in the entries. The first 2 columns provide the identifier for the list. For example, you might enter USERGRP at the LABEL column and CALENDAR in the FIELD column. Then key the GoldMine User Names into the EXISTING VALUE column. You would not key anything into the REPLACE WITH column.

This function operates on the same principle as the GetCustom() function, except a replacement value is not returned. Instead, a TRUE is returned for a found value.

 

Param 1 (reqd):

The name of the label in the Field Translator Table, surrounded by quotes.

Param 2 (reqd):

The name of the field holding the value to be checked in the Translator Table, surrounded by quotes.

 

Returns:

TRUE if the field value is found in the list, FALSE if not.

 

Example:

IsFoundIn("USERGRP->CALENDAR", "Cal->Userid")

IsFoundIn("SALES->TERRITORY", "Contact1->Key1")

 

FUNCTION / LastFirst()

Description:

Handy for exporting or global replacing.

 

Param 1 (opt):

The STRING or GoldMine® Field name. If you don't pass a parameter, GoldBox-5 assumes Contact1->Contact, the Main Contact name.

 

Returns:

The STRING Name in Lastname, First Name format.

 

Example:

LastFirst("Contsupp->Contact")

Result: Petonic, David E

 

FUNCTION / LastWord()

Param 1 (reqd):

The Character field on which to return the result.

 

Returns:

The word after the last space in a character field.

 

Example:

LastWord(Contact1->Contact)

Result: Petonic (Assumes the name is David E Petonic)

 

FUNCTION / LatestSync()

Description:

This function may be useful for Exporting or Group Building. It finds the latest (most recent) sync entry in GoldMine's Tlog file and returns it as a true Date value. For example, you may wish to Export all records which were added or modified today, or build a Group.

This function is record-based, not field-based. The return value means the record was added, or one of its fields was modified. GoldMine does not track individual field edits on a newly-added record which has not synced. Therefore, this function will only tell you the most recent date the record was added or modified.

 

Param 1 (reqd):

The GoldMine table name, surrounded by quotes. When you pass in "CONTACT1" as the table name, LatestSync() automatically checks the Contact2 file as if Contact1 and Contact2 were just one record (which, in effect, they are).

 

Returns:

A true Date value indicating the latest (most recent) activity on the record. If no Tlog for the record is found, LatestSync() returns 01/01/1990 as a true Date.

 

Example:

LatestSync("CONTACT1")

Result: 02/03/2001

LatestSync("CONTSUPP")

Result: 02/05/2001

LatestSync("CONTACT1") = Date()

Result: Returns a True if the latest sync entry is equal to today's date.

 

FUNCTION / Len()

Description:

You can obtain the number of characters (or bytes) within a string or memo field.

 

Param 1 (reqd):

The STRING or field or memo.

 

Returns:

Number of characters as a NUMERIC.

 

Example:

Len(Contact1->Contact)

Result: 40

Len(AllTrim(Contact1->Contact))

Result: 15 (assumes David E Petonic)

Len(AllTrim(Contact1->Notes))

Result: 15,560 You may want to use the above example to determine whether to archive the Main Notes to a Linked Document if they are larger than a designated number.

 

FUNCTION / LinkedName()

Description:

Used for a specific purpose: To replace the display file fields of a Linked Document from the actual file name in the LINKEDDOC memo field.

The display file fields are Address1 and Address2 in the Contsupp Linked Document record. GoldMine does not actually use the values in these fields to initiate the link. They are currently used just to display as much of the file name as possible. Therefore, replacement of these fields is strictly for cosmetic purposes. The link is initiated based on the file name in the LINKEDDOC memo field.

Typically in a Global Replace of the display file fields, select Contsupp->Address1 as the Field-1 value and Contsupp->Address2 as the Field-2 value. See Example below.

 

Param 1 (opt):

The number 1, for example. This optional parameter is only used when replacing the Address2 field with the remainder of the file name, if it exceeds 40 characters.

 

Returns:

The full file name, if you pass in no parameters. If you pass 1 parameter, GoldBox-5 checks whether the file name exceeds 40 characters. If so, characters 41 through to the end of the file are returned. If the file name is 40 characters or less, a blank value is returned, which blanks out any extraneous characters in Address2.

 

Example:

LinkedName()

Result: the entire file name. This would typically be replaced into Contsupp->Address1.

LinkedName(1)

Result: characters 41 through the end of the file name, if the file name exceeds 40 characters. Otherwise, a blank value is returned. This would typically be replaced into Contsupp->Address2.

 

FUNCTION / LookupDesc()

Description:

This function returns the description in a Lookup entry. GoldMine allows you to track a Description for any Lookup, which is that portion following a double-slash //. For example, the Result Code Lookup for a Completed Sale might be: SCR // Sale on Credit. GoldBox-5 returns the "Sale on Credit" description, which you might wish to Export as a calculated field.

The Activity Code in Calendar and History and the Result Code in History have special "field names" for the Lookup values. To find these, go to {File} {Browse any dBase4 File} {FLDSETUP.DBF}. You will see the coded field names as the last column, titled {Pos Fld 1}. This is what you will pass as the 2nd parameter.

 

Param 1 (reqd):

The GoldMine Field Name, surrounded by quotes.

Param 2 (opt):

The Field Code for special Calendar and History fields, as outlined above.

 

Returns:

The Description if found, otherwise a blank value.

 

Example:

LookupDesc("Contact1->Key3")

LookupDesc("Conthist->Resultcode", "MSALERSTCD")

Returns the Description for the Result Code of a Completed Sale.

 

FUNCTION / LookupINI()

Description:

This very powerful function allows you to pluck a value from your GoldMine LOOKUP.INI file. It is typically used for Import/Update, Global Replace and Export. Use of this function is strictly based on field lookup-and-replace entries in LOOKUP.INI. It ignores entries such as {AutoUpdate] or {OnEditRun] or other operations performed by GoldMine when LOOKUP.INI is invoked. It searches only for field labels and their lookup-and-replace entries.

An unusual and powerful feature of this function allows you to define which LOOKUP.INI file to evaluate, and lets you append 2 or more LOOKUP.INI-type files together into a super-Ini for evaluation. This, in effect, breaks the 64K limit on the size of a LOOKUP.INI file imposed by GoldMine.

As of version 5.37, this function was changed in 2 ways:

GoldBox-5 puts the LOOKUP.INI file into its own system file called LOOKINI.DBF, then manipulates that file to return a value. So, before using the function, you must populate GoldBox-5's LOOKINI.DBF file by running a command line call (or a Q-file entry). This is very easy, and is accomplished like so:

C:\goldbox5\gx5 Dep /L c:\progra~1\gm5\lookup.ini

Where:

C:\goldbox5\gx5 = The drive, path and executable file call to GoldBox-5

Dep = sample login initials to GoldBox-5. Please substitute your own.

/L = the Operation Code

c:\progra~1\gm5\lookup.ini = File location. Please substitute your own.

By default, LOOKINI.DBF is cleared out (zapped) prior to appending LOOKUP.INI. However, you have another option available. You can combine one or more Lookup.Ini-type files together, and GX5, in effect, sees this as one big LOOKUP.INI. That is typically the case, for example, if you are using Zip Codes to define Sales Territories, and the standard LOOKUP.INI is not big enough to hold all the values. To do this, you simply pass in the parameter APPEND, like so:

1. c:\goldbox5\gx5 dep /L c:\progra~1\goldmine\lookup.ini

2. c:\goldbox5\gx5 dep /L c:\progra~1\goldmine\adlook1.txt APPEND

The first call clears out LOOKINI.DBF and appends the standard LOOKUP.INI. The second call adds a file called ADLOOK1.TXT into LOOKINI.DBF, preserving the existing entries. This assumes you have setup ADLOOK1.TXT in the exact same way as LOOKUP.INI. If you are continuing entries of a particular field label from LOOKUP.INI into ADLOOK1.TXT, just continue the entries – DO NOT put in the same field label! ADLOOK1.TXT file can be greater than 64K, since it is not evaluated by GoldMine. Make it as big as necessary. The file name ADLOOK1.TXT is only used as a suggestion – you can call it anything, as long as it conforms to the short-name convention of 8 characters for the file name and 3 for the extension (no embedded spaces).

You can also swap in different LOOKUP.INI files for your operation. For example, you may wish to do a Global Replace on some fields using a local LOOKUP.INI in the Contact directory, then follow with a Global Replace on other fields using the default LOOKUP.INI in the GoldMine root directory. A Q-file might look like so:

L c:\progra~1\goldmine\common\lookup.ini

R REKEYFLDS

L c:\progra~1\goldmine\lookup.ini

R REUDEFFLDS

CRITICAL: Based on the field name you pass in (NOT case sensitive, so you can use Upper or Lower case or both), GX5 attempts to locate the field label. For example: Your call is: LookupINI("Key1", "Contact1->Key1") GoldBox-5 searches for the [Key1] label. It then steps through your entries, attempting to find a match and a return value. If LookupINI() cannot find anything to return, it returns the value of whatever field you passed as the 2nd parameter. On a Global Replace, for example, this replaces the field with itself.

Typically, you'll probably replace the same GoldMine field as the label name. For example, if you are replacing Key5, you would call the Key5 label. However, this is not required. You can use any field label's lookup-and-replace list in Lookup.INI. For example: LookupINI("UserDef10", "Contact1->Key5") can be the field replace expression for Contact1->Key5. You are telling LookupINI() to use the UserDef10 label's lookup-and-replace list, and if it does not find anything, to return the value of Key5. If it does find something, that is replaced into Key5. In short: The field label does not have to match the GoldMine field you are replacing.

GoldBox-5 recognizes the {Otherwise} entry. It also recognizes the &Username and &Userfullname macro expressions. It does not evaluate the {Overwrite} entry or the lack of one, since you can easily control that in GoldBox-5. For example, if you only want to replace fields that are empty, include that in the Primary Filter.

 

Param 1 (reqd):

The Main Contact field name, surrounded by quotes. Do not pass in the file name of Contact 1 or 2; only the 10-character field name is needed. Do not pass in the square brackets, as GoldBox-5 automatically attaches those.

Param 2 (reqd):

The GoldMine field value you want returned if the function does not find a replace value in Lookup.INI. This ensures that you do not blank out the field you are replacing if the function does not return anything. Please make sure you surround the entry in quotes.

 

Returns:

The appropriate matching entry based upon your LOOKUP.INI setup. If it does not find an entry, it returns the value of the field you passed in as the 2nd parameter.

 

Example:

LookupINI("Key1", "Contact1->Key1")

(Assumes an Import and you pressed the [Exprn] button at the Import Field Mapping Template for the Key1 field. This is the Field Expression for Key1.)

LookupINI("UserDef02", "Contact1->Key3")

(Assumes a Global Replace of Key3. Even though you are replacing Key3, you can use the lookup-and-replace list for [UserDef02] in Lookup.INI. If LookupINI() does not return anything, the value of Key3 is returned, in effect replacing Key3 with itself.

 

FUNCTION / Lower()

Param 1 (reqd):

The STRING or Character field.

 

Returns:

The STRING in lower case.

 

Example:

Lower(Contact1->Contact)

Result: david e petonic

 

FUNCTION / Ltrim()

Description:

Trims off leading spaces from a string.

 

Param 1 (reqd):

The STRING or Character field.

 

Returns:

The trimmed STRING. If the string was empty, returns a null.

 

Example:

Ltrim(Contact1->Key3) = "1234"

 

FUNCTION / Make24hour()

Description:

This function has usage in one situation: When importing a time field into the CALENDAR file and the incoming time is in am/pm format. Although GoldMine® displays calendar time in am/pm format, it is stored in the data file in 24-hour format.

 

Param 1 (reqd):

The field name containing the am/pm time as a STRING.

Param 2 (opt):

Any value, such as the NUMBER value of 1. If you don't pass this, the time will be returned as a military time without the colon, as in hhmm. Normally you will want to pass the 2nd parameter so it will be returned as hh:mm.

 

Returns:

The 24-hour (military) time as a STRING.

 

Example:

Make24hour(Indata->Eventtime, 1)

Assumes value is 1:30pm. Result: 13:30

 

FUNCTION / Max()

Param 1 (reqd):

The first NUMBER.

Param 2 (reqd):

The second NUMBER.

 

Returns:

The larger of the 2 numbers as a NUMERIC.

 

Example:

Max(244, 687)

Result: 687

 

FUNCTION / Mline()

Description:

Extracts a particular line of text from a Memo (in GoldMine, referred to as NOTES). Can be exported with GoldBox-5.

 

Param 1 (reqd):

The Memo field.

Param 2 (opt):

NUMERIC - The line number. Default is Line 1.

Param 3 (opt):

NUMERIC - Length of line to be extracted, between 8 - 255 characters. Default is 50.

 

Returns:

The line of text as a STRING.

 

Example:

Upper(MLine(Contact1->Notes, 2, 50)) = "DIRECTIONS TO SITE:"

 

FUNCTION / Min()

Param 1 (reqd):

The first NUMBER.

Param 2 (reqd):

The second NUMBER.

 

Returns:

The smaller of the 2 numbers as a NUMERIC.

 

Example:

Min(244, 687)

Result: 244

 

FUNCTION / Month()

Param 1 (reqd):

The DATE value.

 

Returns:

The month as a NUMERIC.

 

Example:

Month(CtoD("02/01/97"))

Result: 2

 

FUNCTION / MultiTab()

Description:

One of GoldBox-5's most powerful functions, it can be used for 4 different purposes. Please note that you MUST be evaluating the Main Contact File as the master in the GoldBox-5 operation, such as the Export or Group Builder. The following are the 4 uses of this versatile function:

1. Checks Tab records attached to a Main Contact and returns a TRUE only if a series of sub filter conditions are ALL true. You may be familiar with building a filter that evaluates, for example, Detail records, such as: Return a TRUE if the Reference is Auto. With this capability, you can now say, for example: Check the 15 Details attached to this Contact record. Return a TRUE if there is an Insurance Detail Reference of Auto, another with Home and another with Life. If there are only 2 found for the Contact, let's say one with Auto and one with Life, but no Home, then the function returns FALSE. You can use this capability for building Groups, Exporting or Global Replacing a Main Contact field. Another typical example might be to export addresses for a mail merge if the contact has purchased 3 specific items. Tab file types that can be searched include Calendar, History, Additional Contacts, Details, Linked Documents, Referrals, Mailbox and the Opportunity Manager.

2. You can reverse the logic of the search by including the word NONE in the setup of the sub filter, making this function exceedingly powerful and flexible. In this way the sub filter returns TRUE if NO records were found based on the condition.

3. You can have MultiTab() return a TRUE if a certain NUMBER of Tab records meeting the sub filter condition is found.

4. You can have MultiTab() return a TOTAL of any numeric field (or numeric expression on a field, as with the Val() function). Or you can pass in the number 1 as the numeric expression to return the number of Tab records meeting the filter. This can be exported out or used as a value to be evaluated by a filter expression. For example, you may want to export the contact's total sales figure during the first quarter of 1998.

You can string MultiTab() calls into different Tab files within the same master filter, such as checking History and Detail records, making this even more powerful.

The master filter is the one you are presented with in the GoldBox-5 utility, such as the Group Builder. This is where the calls to MultiTab() are made, along with any other global conditions. The sub filters which are referenced by the MultiTab() function are entered at the {File} {Sub Filters / Seq # Generation} option. The only columns which must be filled in are DEF LABEL and EXPRESSION. At the DEF LABEL column, key in a code followed by a slash, then by a number or letter. You MUST use the forward slash character. At the EXPRESSION column key the filter directly. If you want the sub filter to return a TRUE if NO records were found meeting the condition, key the word NONE in the {NONE?} column. Examples of sub filter expressions:

DEF LABEL NONE? EXPRESSION

---------------- -------- ---------------------------------------------------

PRODUCT/1 Upper(Conthist->Ref) = "GOLDMINE"

.AND. Conthist->Rectype = "S"

PRODUCT/2 Upper(Conthist->Ref) = "GOLDSYNC"

AND. Conthist->Rectype = "S"

PRODUCT/3 NONE Upper(Conthist->Ref) = "GOLDBOX-5"

.AND. Conthist->Ref = "S"

SALES1Q98 ContHist->Rectype = "S" .AND. ContHist- >Ondate >= CtoD("01/01/98") .AND. ContHist->Ondate <= CtoD("03/31/98")

You are checking Completed Forecast Sales in the History file and want to place into a Group those contacts who have purchased GoldMine® & GoldSync but not GoldBox-5.

 

Param 1 (reqd):

The Definition Label as a STRING, surrounded by quotes. Please note that you do not pass in the slash character or what follows it - that portion of the Definition Label is used only for sorting the definitions in a logical order.

Param 2 (reqd):

The Tab file to be evaluated as a STRING, surrounded by quotes. There are only 5 valid entries and they are: CAL, CONTHIST, CONTSUPP, MAILBOX and OPMGR.

Param 3 (opt):

The Supplemental Record Type (required if Param 2 is CONTSUPP). Valid types are C for Additional Contacts, P for Details, R for Referrals, L for Linked Documents. NOTE: If you are going to use the following COUNT parameter, Calendar or History, you must pass something as the 3rd parameter so the 4th can be evaluated.

Param 4 (opt):

The NUMBER (Count) of Tab records which needs to meet the sub filter condition, or, the numeric expression on which to return a TOTAL (see next parameter).

Param 5 (opt):

Any parameter, such as the number 0, to indicate that you want to have MultiTab() return a TOTAL figure from the Tab records.

 

Returns:

Logical TRUE if a Tab record is found for each defined sub filter, or, if you are using the NONE indicator, will return a TRUE if that sub filter DOES NOT find a Tab record based on the condition. In other words, all sub filters have to return TRUE for the entire MultiTab() function to return a TRUE..

If you pass in a 5th parameter, MultiTab() will return a TOTAL as a Numeric value.

 

Example:

MultiTab("PRODUCT", "CONTHIST")

per the above example setup

MultiTab("POLICY", "CONTSUPP", "P")

Returns TRUE if the contact has Auto, Home and Life policies, but no Boat.

MultiTab("SALES97", "CONTHIST", "", 4)

Returns a TRUE if at least 4 records were found in History as Completed Sales for 1997. Note the 3rd parameter is empty, which is fine.

MultiTab("SALES1Q98", "CONTHIST", "", "Val(Conthist->Duration)", 0)

Returns the total of Completed Sales per contact for the 1st Quarter, 1998 to be exported out. In this case you would use MultiTab() function in 2 locations (see the above sub-filter example). The first is in the filter expression like so: MultiTab("SALES1Q98", "CONTHIST") This will only export records that have at least one sale in the first quarter 1998. At the Export Field Template, you would use a Numeric Calculated Field and use the above function call at the expression column to return the TOTAL of the History's Duration field (where the Sale Amount is stored).

 

FUNCTION / MultiTab2()

Description:

The basic operation of MultiTab2() is the same as the original FUNCTION / MultiTab(). The difference is that you would use this function when you are evaluating a Tab file as the master, and you wish to find another record in that same Tab file. This would allow you, for example, to do an Export based on a particular Profile and locate another Profile record meeting a sub-filter condition. In this way, you can export BOTH records out in the same flat file.

MultiTab2() opens up the 2nd occurrence of the Tab file under a different name. You must use this alternate name in your sub-filter creation, the 2nd parameter call in MultiTab2(), and as the file pointer when accessing the Tab fields (such as selecting them for an Export as calculated fields – see the information on the {Field} button for the Export Field Mapping Template).

The only difference between MultiTab() is that in your Sub-filters, use SUPP2ND in place of CONTSUPP, HIST2ND in place of CONTHIST and CAL2ND in place of CAL. This also holds true for the 2nd parameter you pass in with your MultiTab2() call – use SUPP2ND, HIST2ND or CAL2ND. For any fields you are accessing with MultiTab2(), always use these as file names.

 

FUNCTION / Pad() Functions

Description:

Pads a STRING, NUMERIC or DATE with an equal number of characters to the left if {L}eft, and onto the end if {R}ight.

 

Param 1 (reqd):

The STRING, NUMERIC or DATE value.

Param 2 (reqd):

Length of the padded STRING to be returned.

Param 3 (opt):

The character with which to pad. Default is space.

 

Returns:

The padded value in the form of a STRING.

 

Example:

PadL("GOLDBOX-5", 14, "*")

Result: ****GOLDBOX-5

PadR("GOLDBOX-5", 14, "*")

Result: GOLDBOX-5****

 

FUNCTION / PhoneStrip()

Description:

Strips formatting characters from phones, leaving only a straight string of numbers. Typically used in the export for updating mainframe systems, or for evaluation on the Merge-Purge record match expression.

 

Param 1 (opt):

The GoldMine® field for the phone number, surrounded by quotes. If you don't pass this optional parameter, Contact1->Phone1 is used as the default.

 

Returns:

The stripped phone number as a STRING.

 

Example:

PhoneStrip()

If the Phone1 field was (310)441-0782, the result is: 3108396530.

Contact1->Company + Contact1->Contact + PadR(PhoneStrip(), 20)

For Merge-Purge, uses Company plus Contact plus the stripped Phone1 number as record-matching scheme.

PhoneStrip("ContSupp->Fax")

Strips the Addl Contact Fax Number.

 

FUNCTION / PrimEmail()

Description:

Typically used when exporting or global replacing Email records stored as Details in GoldMine, it determines whether the current record is the Primary Email address. You can also pass in a parameter to determine whether the Detail record itself is an Internet Address, as in: PRIMEMAIL(1) This is a keystroke saver when keying in the filter expression. By passing in a parameter, the Primary Address flag is not checked.

 

Param 1 (opt):

Any value, such as a NUMBER 1.

 

Returns:

A TRUE if the Detail is the Primary Address (when passing NO parameter).

Returns TRUE if you passed a parameter and the Detail is an E-mail Address.

 

Example:

PrimEmail()

Assumes you are exporting. This is entered in the Filter prompt.

 

FUNCTION / ProDate()

Description:

Converts the formatted date in the CITY field of a GoldMine® Detail record into a true date, saving you from having to key in a lengthy expression. The date is the record's creation date by default. GoldBox-5 lets you import a value into this field to be used, for example, as an insurance policy expiration date, a hiring date, a purchase date, a shipping date, etc. The Detail date that you see displayed as the first column of a GoldMine® Detail record is stored in the Contsupp->City field, in positions 9-16, in the form yyyymmdd.

 

Returns:

The Detail date as a DATE.

 

Example:

ProDate() = Date()

Returns TRUE if the Detail Date equals Today's date.

 

FUNCTION / PullEmail()

Description:

Pulls the E-mail Address for the Main Contact (the Primary address) or from the Additional Contact, depending on the parameter label you pass in. Used for the Export, to allow you to export out the E-mail address along with other personal information.

 

Param 1 (reqd):

The word MAIN for the Main Contact's Primary Address, or the word ADDL for the Additional Contact's E-mail Address. It must be surrounded by quotes.

 

Returns:

The E-mail Address if found; otherwise, a blank string of 75 in length.

 

Example:

PullEmail("MAIN") or PullEmail("ADDL")

 

NOTE: When you use PullEmail(), one of two variables is populated with the Merge Codes value for that Email Address. You can then use either of these in a Filter, for example, to export only those email addresses that contain a specific value in the Merge Codes field.

For PullEmail('MAIN'), the variable is EmailMergeMAIN. For PullEmail('ADDL'), it's EmailMergeADDL. GoldBox-5 UPPER CASES and trims the variable.

An example of the variable's usage in a filter might be:

.NOT. Empty(PullEmail('MAIN')) .AND. "XYZ" $ EmailMergeMAIN

 

FUNCTION / PullWeb()

Description:

Pulls the PRIMARY Web Site for the Main Contact. Used for the Export, to allow you to export out the Web Site address along with other personal information, or as evaluation in a filter. If the Contact has one or multiple Web sites and none is flagged as Primary, GoldBox-5 returns the first one found.

 

Returns:

The Web Site Address if found; otherwise, a blank string of 75 in length.

 

Example:

PullWeb()

Result: www.goldboxonline.com

 

FUNCTION / Rat()

Description:

Returns a position of the found value. The search starts from the right. This is almost always used with the SubStr() function. This function is critical to pulling out the Last Name from the Contact field. At the Import Setup, you can choose to automatically replace the Last Name field at prompt {M}. When you select this option, GoldBox-5 automatically invokes the "walk-back" feature, which will walk back up to 2 words if, for example, your Contact name ends in Jr., M.D., CEO, Esq., etc.

 

Param 1 (reqd):

A STRING value, such as a space or comma or a particular word.

Param 2 (reqd):

The STRING or field you are searching.

 

Returns:

NUMERIC position within the string.

 

Example:

SubStr(Contact1->Contact, Rat(" ", AllTrim(Contact1->Contact)) + 1)

Pulls out the last word of the Contact Name, typically the Last Name, which might be replaced into the GoldMine® LASTNAME field.

 

FUNCTION / RealDate()

Description:

Converts a passed in value to another date form. There are 18 possible returns. When importing into a true DATE field and the incoming date is a STRING, you can click [DtMask] and select the appropriate format from the Date Mask table. This precludes you from having to use the function. This is "Date Conversion on the Fly" and is only available at the Import Field Mapping Template.

 

Param 1 (reqd):

The date value as either a STRING or a DATE.

Param 2 (reqd):

The NUMBER of the format you wish to be returned.

 

Returns:

A form of the passed date, based on the value of the 2nd parameter.

 

Example:

The following assumes Saturday, February 1st, 1997 as the example date. The letter following the call to RealDate() shows the data TYPE returned.: {C} is CHARACTER or STRING; {D} is DATE; {N} is NUMERIC.

RealDate(CtoD("02/01/97"), 1) {C} Saturday, February 1, 1997

RealDate(CtoD("02/01/97"), 2) {C} Feb 1, 1997

RealDate(CtoD("02/01/97"), 3) {C} February 1997

RealDate(CtoD("02/01/97"), 4) {N} 32nd Day of Yr (Julian date)

RealDate(CtoD("02/01/97"), 5) {C} February 1, 1997

RealDate(CtoD("02/01/97"), 6) {C} February 1

RealDate(CtoD("02/01/97"), 7) {C} 020197

RealDate("970201", 8) {D} 02/01/97

RealDate("19970201", 9) {D} 02/01/97

RealDate(CtoD("02/01/97"), 10) {C} FEB 1st

RealDate(CtoD("02/01/97"), 11) {C} FEB 1,97

RealDate("01-Feb-97", 12) {D} 02/01/97

RealDate("97-02-01", 13) {D} 02/01/97

RealDate("February 1 1997", 14) {D} 02/01/97

RealDate("1st February '97", 15) {D} 02/01/97

RealDate("01021997", 16) {D} 02/01/97

RealDate("010297", 17) {D} 02/01/97

RealDate(CtoD("02/01/97"), 18) {C} 970201

Notes:

Choice {8} is a quick way to convert the GoldMine® Creation Date into a True Date, which is stored as the first 6 characters of the Account Number. Your call:

RealDate(Contact1->Accountno, 8).

Choice {18} is the opposite, and can be used to evaluate the Creation Date on Main Contact records for Scoping.

Choice {13} is the way some TeleMagic systems store the Recall Date (field is RCL) and the Last Called Date (field is LCL). On an import, click [DtMask] and choose {yy/mm/dd} as the format from the Date Mask table.

 

FUNCTION / RealTime()

Description:

This function is the opposite of the Make24Hour() function. If you pass in a 24-hour time, it will return a civilian am/pm time.

 

Param 1 (opt):

Time to convert, in the form hh:mm as a STRING. If not passed, current time is used.

Param 2 (opt):

Any value, such as the NUMBER 1.

 

Returns:

The civilian time as a STRING.

 

Example:

RealTime("13:30")

Result: 1:30 pm

RealTime("13:30", 1)

Result: 1:30pm (no space between am/pm and time)

 

FUNCTION / RecNo()

Description:

Would have practical use in the GXW Browser, as part of a filter expression. The Record Number of any record in GoldMine® displays at the top left corner of the Status Bar of the GXW Browser.

 

Param 1 (opt):

dBase4 file name of the record number you wish to return, surrounded by quotes.

 

Returns:

The physical Record Number as a NUMERIC.

 

Example:

RecNo() = 155

Assumes an Export in GXW Browser, will only export Record 155.

Recno("CONTACT1")

Assumes you are doing a GX5 Export from History File as master and you wish to export the record number of the related Contact1 record.

 

FUNCTION / ReferValue()

Description:

If you use GoldMine's Referrals, this allows you access to any of the fields of the Referred record. Typically you might want this on an export for exported field values, or during filter evaluation. For example, if you have multiple contacts referred to the same Company record, you may wish to export fields from the Company record along with fields of the contact.

Typically you would be addressing the 'child' records, which contain {To} in the Referral field. The word {of} is found in the 'parent' record. Let's assume the Reference for the Referral is "Company Member". You would want to use the MultiTab() function in your global filter, as in: MultiTab("REFERTO", "CONTSUPP", "R") Your sub-filter, entered at {File} {Sub-Filters} would be: ContSupp->Contact = "To" .AND. ContSupp->ContSupRef = "Company Member". This will only address records which have the "Company Member" Referral record and are 'children' of the Company record.

Param 1 (reqd):

The Reference of the Referral, or a fragment of it.

Param 2 (reqd):

The Contact1 or Contact2 field name to be returned.

Param 3 (opt):

By default GoldBox-5 will return a null string (an empty character value) if the 'parent' Referral is not found. If you wish to return a Date field, pass in "D". If you wish to return a Numeric field, pass in "N".

 

Returns:

The value of the Referred record's field, which is the 2nd parameter.

 

Example:

ReferValue("Company Member", "Contact1->Key1")

Returns the value of Key1 of the 'parent' record.

ReferValue("West Sales Client", "Contact2->UDateBegin", "D")

Returns the value of UDateBegin of the 'parent' record as a true date value.

ReferValue("Central Sales Rep", "Contact2->ULYsales", "N")

Returns the value of ULYsales of the 'parent' record as a true numeric value.

 

FUNCTION / Replicate()

Description:

Allows you to repeat a character or group of characters a specified number of times.

 

Param 1 (reqd):

The character or characters to repeat, surrounded by quotes.

Param 2 (reqd):

The NUMBER of times to repeat the character or characters.

 

Returns:

A STRING comprised of the replicated character or characters.

 

Example:

Replicate("Judy ", 3)

Result: Judy Judy Judy

 

FUNCTION / RollupAcct()

Description:

This can only be used in the Export, and only in tandem with the InOrgLevel() function. It will return the GoldMine® Account # of the Section Level or Top Level Org Chart record to which you wish to roll up totals. Member records cannot receive rollup totals; only Section or Top Levels. The account number returned is used as the Record Match when you perform the Import/Update.

You can also pass in a Field Name as the 4th parameter of the function, and instead of returning the Account # of the Section or Top Level record, it will return the value of the field you passed in. This might be useful for including a field or fields from the Section or Top Level record when you are exporting data from Member records.

 

Param 1 (reqd):

A fragment of the Top Level Title surrounded by quotes, or, a space if you want to address a Section Level regardless of the Top Level Title. Typically, this might be the case where the Company Name is the Top Level Title, but there is a Section called SALES under it.

Param 2 (opt):

If you want to return the Account # of the Top Level record, do not pass this parameter. Otherwise, this is the NUMBER of the Section Level.

Param 3 (opt):

A fragment of the Section Level Title surrounded by quotes.

Param 4 (opt):

A CONTACT1 or CONTACT2 field name, surrounded by quotes, if you wish to include a field from the Section or Top Level record in the export.

 

Returns:

The GoldMine® Account Number of the found Section or Top Level record, or, if you passed a field name as the 4th parameter, the value of the field.

 

Example:

RollupAcct("TERRITORY")

Assumes you are rolling up totals from Members of the Top Level Title TERRITORY.

RollupAcct("IBM", 2, "SALES")

Assumes you are rolling up totals from Members of the Section 2 Level SALES for the Top Level Title of IBM.

RollupAcct(" ", 2, "SALES")

Assumes you are rolling up totals from Members of the Section 2 Level SALES for ANY Top Level Title

RollupAcct("TERRITORY", 1, "TERRITORY", "Contact2->Utotal")

Returns the contents of Contact2->Utotal of the found Section or Top Level record, to be included as an exported value.

 

FUNCTION / Round()

Param 1 (reqd):

The NUMBER to be rounded.

Param 2 (reqd):

The NUMBER of decimal places to round. Passing a zero rounds to the whole number, where if the decimal is 0 - 4, it is rounded down, 5 - 9 is rounded up.

 

Returns:

The rounded NUMBER as a NUMERIC.

 

Example:

Round(99.65, 0)

Result: 100

Round(122.48887, 2)

Result: 122.50

 

FUNCTION / RoundRobin()

Description:

Typically used with Import or Global Replace, RoundRobin() lets you populate a field from a list of values that have a common reference. GoldBox-5 scrolls through the list in a "round robin" fashion and sequentially returns the next value. When the last value in the list is returned, it goes back to the top of the list and starts over.

Please Note! You can only use RoundRobin() one time for one setup, unless you are using the same list! Create another setup if you are using RoundRobin() for another field with a different list. This should not be a problem, because you can stack multiple setups (such as Imports or Global Replaces) within a Q-file.

The ideal example for usage is assigning a Calendar Call record to a group of telemarketers when importing New Main Contacts. With RoundRobin(), you can evenly distribute the calls in a random fashion so each telemarketer gets the same number of records on their Calendar. For this example, you would use the 'plug-in' capability when importing New Main Contacts, by selecting the Calendar checkbox at the plug-in box of the Import Setup screen.

Before calling the function, you have to key the entries into the list. Go to {File} {Field Translator Table} and click {Add}. The first 2 columns indicate the identifier for your RoundRobin() function call. In this example, we'll put LEAD in the Label column and TELEMARKET in the Field column. Leave the Existing Value column blank. In the Replace With column, key in a telemarketer's name.

For multiple entries, press {Photo} to photocopy the current record, then change the telemarketer's name. Add as many entries as needed. Make sure the Label and Field column values are identical for each entry. Your entries might look something like this:

Label Field Existing Value Replace With

LEAD TELEMARKET DAVE

LEAD TELEMARKET ALINA

LEAD TELEMARKET GENE

LEAD TELEMARKET MICHAEL

LEAD TELEMARKET AUDREY

Exit the Browser and setup your Import of New Main Contacts. Plug-in Calendar records. At the black Field Mapping screen, press the green {CAL} button to get down to the Calendar fields. Press {Expression} at each field for which you want a hardcoded entry. For the GoldMine User Name, press {Expression} and key in:

RoundRobin("LEAD->TELEMARKET", "Upper('Dave')")

Assuming you are importing 1,000 records, the 5 telemarketers above will each get 200 scheduled callback records in their calendars.

 

Param 1 (reqd):

ID Label for entries in the Field Translator Table. This is always the value in the LABEL column, followed by a dash/greater-than, then the value in the FIELD column.

Param 2 (reqd):

The GoldMine field you are replacing, typically. You can also pass in any legal expression. GoldBox-5 replaces your field with this value if it does not find the above ID Label. It is really just a safeguard, because as long as you accurately pass in the ID Label above, the 2nd parameter is never evaluated. But it still is required as a failsafe device.

 

Returns:

A corresponding value from the 4th column of the table, the one labeled REPLACE WITH. GoldBox-5 "remembers" the last entry it returned, and for the next record, it skips to the next one. When the last entry is returned, for example AUDREY in the example above, the next record evaluated will get DAVE from the top of the list.

 

Example:

RoundRobin("SALES->REP", "Contact1->Key4")

 

FUNCTION / SmoothComp()

Description:

Please Note: This function should ONLY be used in a Record Match situation! Do not apply it against your actual Company Name in a Global Replace operation!

For Merge-Purge and Updating from an outside source, this function 'smooths' the Company Name into a value that may find more 'hits'. It is highly recommended that whenever you use the Company Name as all or part of a Record Match, apply this function instead of just including the Company Name.

Below, information for using this function in both the Merge-Purge and the Update/Attach operations is provided. Please pay special attention to the Update/Attach section!

By applying the function, the following Company Names would be virtually seen as the same:

The International Redstone Company AND Int'l Redstone Co.

Redstone and Associates AND Redstone & Assoc.

Redstone SoftBase Co., Incorporated AND Redstone SoftBase Company, Inc.

To reiterate: The actual Company Name is not altered, as long as you are not replacing it. Replacing the Company Name with the result of this function call is not recommended and is not supported by Redstone SoftBase Company.

 

Setup of the SmoothComp table:

The function uses values in the SMOOTHCO.DBF System File, accessible from the {File} menu. GoldBox-5 ships with 8 standard entries, which may be all you need, but you can add as many of your own as desired. Simply key the common company word or phrase into the Orig_Comp column, and what you want it to be translated to in the SmoothComp column. Please Note: Never include any punctuation in the entries, as GoldBox-5 transparently strips the returned entry of periods, commas, hyphens, parentheses, forward slashes, colons and semicolons. Case is not critical in the entries, since the function always virtually converts them to UPPER CASE during evaluation, but you may want to UPPER CASE them anyway for consistency.

Hint: The value in the SmoothComp column, which is what the function translates the original value into, should always be shorter than the original value in the Orig_Comp column.

You can also cause the function to virtually remove particular words or abbreviations from the Company Name for the sake of Record Match. In this case, you would key the entry to be removed in the Orig_Comp column, and a period in the SmoothComp column. What effectively happens is that the word is converted to a period and then, just before the translated Company Name is returned, it is stripped of all periods.

 

Param 1 (reqd):

The field to be translated, typically the Main Company Name. If you select the function directly out of the Functions box at the Expression Builder, you will see that the first parameter is already included.

 

Returns:

A 'smoothed' version of the Company Name, to possibly find more 'hits' in a Record Match situation. The returned value is always padded to 40 characters, since Record Matches require a consistent length.

 

Example:

SmoothComp(Contact1->Company) + Contact1->Phone1

This uses the 'smoothed' Company Name and the Main Phone Number as Record Match.

 

Usage in Merge-Purge:

Just key the entry, as above, when you press {Record Match} at the Merge-Purge Setup screen.

 

Usage in Update/Attach:

Map the incoming Company Name into the GoldMine Company Name field.

If you are doing an Attach into Tab files, ignore this step. When doing an Update of Main records, press the {Shield} button, found at the upper right of the black Field Mapping Template. This is critical, so that GoldBox-5 will not replace the actual Company Name on a match! An 'X' should appear in the Description column when the field is properly shielded.

Press the {Expression} button and key in: SmoothComp(Contact1->Company), or select it directly out of the Functions box by double-clicking it.

At the white Update Setup Screen, press {Record Match} and include the function call SmoothComp(Contact1->Company).

 

FUNCTION / SmoothName()

Description:

Please Note: This function should ONLY be used in a Record Match situation! Do not apply it against your actual Contact Name in a Global Replace operation!

For Merge-Purge and Updating from an outside source, this function 'smooths' the Contact Name of similar First Names into a value that may find more 'hits'. It is highly recommended that whenever you use the Contact Name as all or part of a Record Match, apply this function instead of just including the Contact Name. What the function effectively does is swap the first word of the Contact Name with a generic name, based on entries in the SmoothNm.DBF table. If the original Contact Name starts with Mr., Mrs., Ms. or Dr., these are stripped off, and the next word is then considered the First Name.

Below, information for using this function in both the Merge-Purge and the Update/Attach operations is provided. Please pay special attention to the Update/Attach section!

By applying the function, the following Contact Names would be virtually seen as the same:

Bill Jones (what is actually returned)

Mr. Billy Jones

Will Jones

Willy Jones

Willie Jones

Dr. William Jones

Sue Johnson (what is actually returned)

Mrs. Susan Johnson

Suzan Johnson

Susanne Johnson

Ms. Susanna Johnson

Suzanne Johnson

Suzanna Johnson

Dr. Suzy Johnson

Suzie Johnson

 

To reiterate: The actual Contact Name is not altered, as long as you are not replacing it. Replacing the Contact Name with the result of this function call is not recommended and is not supported by Redstone SoftBase Company.

 

Setup of the SmoothName table:

The function uses values in the SMOOTHNM.DBF System File, accessible from the {File} menu. GoldBox-5 ships with 340 standard entries, which may be all you need, but you can add as many of your own as desired. Simply key the First Name you want translated into the Orig_Name column, and what you want it to be translated to in the SmoothName column.

Hint: The value in the SmoothName column, which is what the function translates the original value into, should generally be shorter than the original value in the Orig_Name column.

 

Param 1 (reqd):

The field to be translated, typically the Main Contact Name. If you select the function directly out of the Functions box at the Expression Builder, you will see that the first parameter is already included.

 

Returns:

A 'smoothed' version of the Contact Name, to possibly find more 'hits' in a Record Match situation. The returned value is always padded to 40 characters, since Record Matches require a consistent length.

 

Example:

SmoothName(Contact1->Contact) + Contact1->Phone1

This uses the 'smoothed' Contact Name and the Main Phone Number as Record Match.

 

Usage in Merge-Purge:

Just key the entry, as above, when you press {Record Match} at the Merge-Purge Setup screen.

 

Usage in Update/Attach:

Map the incoming Contact Name into the GoldMine Contact Name field.

If you are doing an Attach into Tab files, ignore this step. When doing an Update of Main records, press the {Shield} button, found at the upper right of the black Field Mapping Template. This is critical, so that GoldBox-5 will not replace the actual Contact Name on a match! An 'X' should appear in the Description column when the field is properly shielded.

Press the {Expression} button and key in: SmoothName(Contact1->Contact), or select it directly out of the Functions box by double-clicking it.

At the white Update Setup Screen, press {Record Match} and include the function call SmoothName(Contact1->Contact).

 

FUNCTION / SnipWord()

Description:

Snips, or deletes, a numbered Word from any string, character field or Memo field.

 

Param 1 (reqd):

The STRING, CHARACTER field or MEMO field. If passing in a Character or Memo field, do not surround the field with quotes.

Param 2 (reqd):

The number of the Word you wish to delete.

 

Returns:

The passed-in string with the numbered Word deleted.

 

Example:

SnipWord("ONE TWO THREE FOUR FIVE SIX", 4)

Result: ONE TWO THREE FIVE SIX

SnipWord(Contact1->Contact, 2)

Result: David Petonic (Assumes David E Petonic)

 

FUNCTION / SoundEx()

Description:

Typically used only in the Org Chart Creation, and then sparingly. When you are building the record-matching expression you may want to Soundex() certain fields that may be misspelled, such as the Lastname field. Soundex() returns a "sounds like" or phonetic value and would find the names Smith and Smythe identical, for example. When Soundex() is evaluating a string, it ignores any non-alpha characters (any characters that are not A-Z). For this reason it should NEVER be used on fields such as Phone numbers and Zip codes. But it would be useful for matching on a company such as ATT and At&T, or Redstone Soft Base Co and Redstone SoftBase Co., etc.

 

Param 1 (reqd):

The STRING or field name to be converted into a Soundex value.

 

Returns:

A 4-byte STRING in the form of letter-number-number-number. You will normally never use the return value directly.

 

Example:

Contact1->Company + Contact1->Phone1 + Soundex(Contact1->Lastname)

An example of a record-matching expression for Org Chart Creation.

 

FUNCTION / Space()

Param 1 (reqd):

NUMBER of spaces you wish returned.

 

Returns:

The NUMBER of spaces you passed in.

 

Example:

AllTrim(Contact1->Key1) + Space(5) + AllTrim(Contact2->UserDef01)

 

FUNCTION / Str()

Description:

Converts a NUMERIC value to a STRING value.

 

Param 1 (reqd):

The NUMERIC value you wish to convert.

Param 2 (opt):

NUMBER: The total length of the returned STRING.

Param 3 (opt):

NUMBER of decimal places.

Param 4 (opt):

A value to pad leading spaces, as a single CHARACTER

 

Returns:

A STRING of the length and decimals specified by the parameters.

 

Example:

Str(CONTACT2->UTOTAL, 8, 2)

If the UTOTAL field is 5000, the result will be: 5000.00, with one leading space.

Str(22, 6, 0, "0")

Result: 000022

 

FUNCTION / StripFrom()

Description:

Strips the passed in field of all characters which you pass in as the 2nd parameter. You might use this, for example, to remove alpha characters from a field which contains numbers at the end of it. This then allows you to evaluate the numeric portion exclusively.

 

Param 1 (reqd):

The field to examine.

Param 2 (reqd):

The string of characters you wish to remove from the field.

 

Returns:

The STRING stripped of the passed in characters.

 

Example:

StripFrom("abcdefghijk", "def")

Result: abcghijk

Val(StripFrom(Upper(Contact1->Key1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ")) > 1000

This assumes that a numeric amount is included in Key1 along with alpha characters. The above example strips the letters from the field and evaluates the remaining numbers as a true numeric, by virtue of the Val() function. This expression, used in a filter, would return a TRUE if the numeric portion of the field was greater than 1000.

 

FUNCTION / StripKeep()

Description:

This one is the exact opposite of StripFrom(). It keeps whatever characters you pass in as the 2nd parameter, and strips anything else. Ideal for removing 'garbage' or unintended high ASCII characters from a field, perhaps after an import.

 

Param 1 (reqd):

The field to examine. Do not surround by quotes.

Param 2 (opt):

By default, GoldBox-5 will preserve all keyboard-entered characters if you do not pass a 2nd parameter. Otherwise, you can pass in your own set of characters to be preserved in the field (which is rare).

 

Returns:

The field value stripped of all except the default keyboard or passed-in characters.

 

Example:

StripKeep(Contsupp->Contact)

In this example, we're assuming some extraneous characters are in the Contact Name field of Additional Contacts. GoldBox-5 will remove everything except keyboard-entered characters.

 

FUNCTION / StripMrMs()

Description:

Strips the words Mr, Mr., Ms, Ms., Mrs, Mrs., Dr and Dr. if GoldBox-5 sees it as the first word of a string, typically the Main Contact Name.

 

Param 1 (opt):

The field to examine. If no parameter is passed, Contact1->Contact is assumed.

 

Returns:

The STRING stripped of the Mr/Ms/Mrs word if it exists.

 

Example:

StripMrMs("Contsupp->Contact")

If the Addl Contact name is: Mr. David E Petonic, result is: David E Petonic.

 

FUNCTION / StripSuffix()

Description:

Strips the last word from the Contact Name if it is evaluated as a Short Title. Examples of Short Titles include CEO, RN, Ph.D, CFO, VP, ESQ, etc. GoldBox-5 uses the Last Name Title Exception Table, accessible from the {File} menu, to determine whether the last word of the name is a Short Title. The file GBTITLE.DBF ships with standard titles, but you can alter this file as needed.

This function is unique in that it actually returns 2 items: The stripped name, and the stripped Short Title. The stripped name is returned directly by the function, as expected. The stripped Short Title is written into a public variable called ShortTitle. This allows you to replace the Contact Name with the stripped name and another field with the stripped Short Title in the same operation. For example: In a Global Replace, you select Contact1->Contact for Field-1. The replace expression is: StripSuffix(). You select Contact2->Userdef01 for Field-2. The replace expression, assuming you wish to replace User-Defined #2 with the stripped Short Title, is: IIF(Empty(ShortTitle), Contact2->Userdef02, ShortTitle)

IMPORTANT NOTE - When replacing a field with the ShorTitle public variable: Make sure you guard against a blank value being returned by the function! This is critical if you run the Global Replace operation more than once against a Contact File. In the above example, note that Contact2->Userdef02 is being replaced with itself if the ShortTitle public variable is blank.

GoldBox-5 automatically ignores Short Titles which are a part of a person's name. These include:

Jr, Sr, I, II, III, IV, V, 2nd, 3rd, 4th, 5th.

 

Param 1 (opt):

The field to examine. If no parameter is passed, Contact1->Contact is assumed. The field name must be surrounded by quotes.

 

Returns:

The Name stripped of the last word if it is determined to be a Short Title. The Short Title itself is stored to a public variable called ShortTitle. If no Short Title is found, the Name is returned as is.

 

Example:

StripSuffix() Example: David E Petonic, CEO

Returns: David E Petonic Writes CEO to the public variable ShortTitle.

StripSuffix("Contsupp->Contact") Example: Harry S. Callahan, ESQ.

Returns: Harry S. Callahan. Writes ESQ. to the public variable ShortTitle.

 

FUNCTION / StrTran()

Description:

This is short for String Translator. It searches an entire STRING or MEMO for a particular value. All matching values are replaced with the new one.

 

Param 1 (reqd):

The STRING or MEMO to be searched.

Param 2 (reqd):

The STRING to locate.

Param 3 (opt):

The STRING value to replace the found one with. If you don't pass this parameter, the found value is removed completely.

 

Returns:

The translated STRING or MEMO.

 

Example:

StrTran("Give him a sedagive", "sedagive", "sedative")

Result: Give him a sedative

StrTran(Contact1->Company, "Co.", "Company")

In Company field, replaces the word {Co.} with {Company}

 

FUNCTION / SubStr()

Description:

This is probably the most commonly used function. It allows you to evaluate or extract a portion of a whole STRING - thus its name, short for substring.

 

Param 1 (reqd):

The STRING or field to be evaluated.

Param 2 (reqd):

NUMBER: The starting position within the string to begin the evaluation or extraction.

Param 3 (opt):

NUMBER: How many characters to evaluate, starting with the position you passed in the 2nd parameter. If not passed, the rest of the characters are evaluated or extracted.

 

Returns:

The sub portion of the original STRING.

 

Example:

SubStr(Contact1->Zip, 7) = "1308"

Evaluates the Zip+4 value

SubStr(Contact1->Phone1, 2, 3)

Assume phone (310)441-0782, Result: 310

 

FUNCTION / TabEdited()

Description:

This function can only be used when the Main Contact File is the master and you are Exporting, Group Building or Global Replacing a Main Field. It gives you access to either the First record edited or the Last record edited. The fields evaluated by the function are the LASTDATE and LASTTIME, which are found in every Tab record type. Once the record is accessed, you can use its fields in a filter or a field expression.

You can also use this function to put the record pointer at the highest or lowest Tab record using date or numeric criteria instead of the default LastDate and LastTime. For example, you may want to put the pointer at the highest Completed Sale amount.

 

Param 1 (reqd):

The word FIRST or LAST, surrounded by quotes.

Param 2 (reqd):

The name of the GoldMine® Tab file, surrounded by quotes.

Param 3 (opt):

The Supplemental Record Type, surrounded by quotes, if you are evaluating Tab records in CONTSUPP. If evaluating Calendar (CAL) or History (CONTHIST), you can optionally pass in a record type so that only that record type is evaluated.

Param 4 (opt):

The date or numeric expression to be evaluated for Highest or Lowest.

Param 5 (opt):

You can pass in a filter, surrounded by quotes, to evaluate targeted Tab records.

 

Returns:

Nothing. Puts the record pointer at the First edited or Last edited record, or, if you pass a 4th parameter, the Highest or Lowest record.

 

Example:

TabEdited("LAST", "CONTSUPP", "P")

Puts record pointer at most recently edited Detail record.

MultiTab("HISTSALE", "CONTHIST") .AND. TabEdited("FIRST", "CONTHIST", "S")

Assumes you have a subfilter for HISTSALE where ContHist->Rectype = "S" so the MultiTab() will return TRUE only on those records having at least 1 Completed Fcst Sale. TabEdited() then points to the First Edited (oldest) Fcst Sale.

TabEdited("LAST", "CONTHIST", "", "Val(ContHist->Duration)")

Puts record pointer at Highest Sale Amount record in History. The word "FIRST" is associated with Lowest, and the word "LAST" is associated with Highest.

 

FUNCTION / TextSwap()

Description:

Swaps literal text values, based upon the entries in the {File} {Text Swap Table}. A typical usage of this function is to correctly format names such as MacDonald, McBain, O'Leary and O'Donnell after using the Proper function on incoming data in an Import. This function can be used on the Import or Global Replace. Typically, the Company, Contact and Address1 fields benefit from the use of this function when the incoming data is all in UPPER case, but it can be used upon any character field or Notes field. If you are importing and wish, for example, to use this on the Contact1->Contact field, you would:

1. Map the incoming name to the Contact1->Contact field.

2. Press the [Proper] button (assumes incoming data is all in UPPER case)

3. Press [Exprn] and key in: TextSwap(Contact1->Contact)

Since this function is based on the values in the TEXTSWAP.DBF table, ensure that file is properly maintained. At the {File} {Text Swap Table}, key in whatever entries are needed. When this function is called, the entire list is compared against the character field, and any matches found (from the Find This column) are swapped with the Repl With column value.

 

Param 1 (reqd):

The STRING field or memo to be searched. Must NOT be surrounded by quotes.

 

Returns:

The swapped version of the passed STRING.

 

Example:

TextSwap(Contact1->Address1)

 

FUNCTION / Time()

Returns:

Current system time, in hh:mm:ss format as a STRING.

 

FUNCTION / Transform()

Description:

Formats any data TYPE into a character STRING, using the Picture Clause you pass in as the 2nd parameter. Typically you might use this for exports or global replaces.

 

Param 1 (reqd):

The STRING, NUMBER, DATE or LOGICAL value.

Param 2 (reqd):

The formatting mask, also known as a picture clause, which MUST be surrounded by quotes. There are 2 types of designations you can use to format the value:

The first one deals with the entire value, so it can be considered global. You designate this by passing in the {@} sign followed by a single character. The table is below:

@B - Displays numbers left-justified.

@C - Displays letters CR after positive numbers (for Credit).

@D - Displays a Date in the SET DATE format, normally USA.

@E - Displays a Date in the British format, which is dd/mm/yy.

@R - Inserts Nontemplate characters. Example: "@R # # # # # # # #". The @R forces a blank between each character, and the {#} sign forces only numeric values.

@X - Displays letters DB after negative numbers (for Debit)

@Z - Displays zeros as blanks.

@( - Encloses negative numbers in parentheses.

@! - Displays characters A-Z in UPPER CASE.

The 2nd designation deals just with individual characters and is not global. These are:

9 - Displays a digit for any data type. You'll use this one a lot for numeric values.

L - Displays LOGICALS as T or F.

Y - Displays LOGICALS as Y or N.

! - Converts an alpha character to UPPER CASE.

$ - Displays a dollar sign in place of a leading space in a numeric.

* - Displays an asterisk in place of a leading space in a numeric.

. - Specifies a period.

, - Specifies a comma.

 

Returns:

The passed in value in the form of a formatted STRING.

 

Example:

Transform(12345.6, "$999,999.99")

Result is: $ 12,345.60

 

FUNCTION / Trim()

Description:

Trims off trailing spaces from a string. Identical to Rtrim().

 

Param 1 (reqd):

The STRING or Character field.

 

Returns:

The trimmed STRING. If the string was empty, returns a null.

 

Example:

Trim(CONTACT1->KEY3) = "1234"

 

FUNCTION / UDTbanner()

Description:

Returns a User/Date/Time banner for Notes entries, including a Char Return/Line Feed.

 

Param 1 (opt):

A GoldMine® name other than the one assigned to you by GoldBox-5.

Param 2 (opt):

A true date value. If passing this, you MUST pass the above parameter.

Param 3 (opt):

A time value in the form hh:mm. If passing this, you MUST pass the first 2 parameters.

 

Returns:

A banner in the form: *** USERNAME *** Month Day, Year hh:mmam/pm A character return / line feed is included.

 

Example:

UDTbanner("DAVE")

Result: *** DAVE *** February 2, 1997 1:30pm

 

FUNCTION / Upper()

Param 1 (reqd):

The STRING or Character field.

 

Returns:

The STRING in UPPER CASE.

 

Example:

Upper(Contact1->Contact)

Result: DAVID E PETONIC

 

 

FUNCTION / UpperStrip()

Description:

This function may be useful for generating a descriptive code. It strips special characters from any string or character-type field(s), including spaces. The only characters left in the string are the numbers 0-9 and letters A-Z. By default, the result is returned in UPPER case, or you can choose to not Upper Case the result.

 

Param 1 (reqd):

The field name or string, surrounded by quotes. If you don't pass this required parameter, you are prompted to exit GoldBox-4.

Param 2 (opt):

Any value, such as the number 1. The existence of the 2nd parameter tells GoldBox-4 to NOT Upper case the result.

 

Returns:

The stripped STRING.

 

Example:

UpperStrip("Contact1->Address1") (123 Main St. #202 returns 123MAINST202)

UpperStrip("Contact1->Address1", 1) (123 Main St. #202 returns 123MainSt202)

 

FUNCTION / USA()

Description:

Checks whether the field is a USA state or the District of Columbia. Valid entries are AK, AL, AR, AZ, CA, CO, CT, DC, DE, FL, GA, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MI, MN, MO, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VA, VT, WA, WI, WV, WY.

 

Param 1 (opt):

A field or STRING. If not passed, CONTACT1->STATE is assumed. You must surround the field with quotes.

 

Returns:

LOGICAL True or False.

 

Example:

USA() .AND. CONTACT1->KEY1 = "PROSPECT"

 

FUNCTION / USterr()

Description:

Checks if a USA Territory. Valid entries are AS, FM, GU, MP, MH, PW, PR, VI.

 

Param 1 (opt):

A field or STRING. If not passed, CONTACT1->STATE is assumed. You must surround the field with quotes.

 

Returns:

LOGICAL True or False.

 

Example:

USterr() .and. Contact1->Key1 = "PROSPECT"

 

FUNCTION / Val()

Description:

You'll probably use this a lot if you need to perform math on numeric values that are stored in GoldMine® CHARACTER fields, such as the UserDefined fields 1 through 10. To perform math, xBase needs to see the values as true NUMERICS. This function fools xBase into thinking that the field in question is a numeric, allowing you to perform math on numbers that are really strings.

 

Param 1 (reqd):

The STRING value to be converted.

 

Returns:

The NUMERIC value of the characters in the STRING. If an alpha character is found in the STRING or it is blank, the function returns a zero.

 

Example:

(Val("24") * 60) * Val("60")

Result: 86,400 (number of seconds in a day)

 

FUNCTION / vCRLF

Description:

Shortcut variable for Chr(13)+Chr(10), which is a character return / line feed pairing.

Example:

Indata->Line1Text + vCRLF + Indata->Line2Text + vCRLF + Indata->Line3Text

Expression for putting 3 lines of incoming text into Notes on an import.

 

FUNCTION / VLink2dBase()

Description:

This feature opens a whole new area for GoldMine batch processing using GoldBox-5. It provides you with options in data management you may not have thought possible, all contained in a single function call.

VLink2dBase(), which is short for 'Virtual Link to a dBase Table', allows you to link a GoldMine table to any other dBase table, or to a source ASCII file that has first been auto-converted by GoldBox-5 to dBase. The term 'virtual' means you can use any of the records and fields of the linked table in your GoldBox-5 operations, without those records or fields being stored in GoldMine itself. This scenario is typical for Exporting and Group Building. However, you do have the option to Import, Update or Replace GoldMine fields with values from the linked dBase table. In many cases, this is what you will use the function for, especially for a faster and more direct way of Updating GoldMine from an outside source.

Not only can you READ any of the fields of the linked dBase table, you can also WRITE to any of them, by using a literal value or a GoldMine field or field(s) expression.

The function works when there is a 1-to-1 or a many-to-1 relationship between the GoldMine table and the linked table. For example, if using an Account ID in Key5 to link to an Accounting System table for a Global Replace operation, GoldBox-5 will find only 1 occurrence in the linked table (if it exists). However, if you have multiple Contact records with the same Account ID, each will find the same record in the linked table, allowing you to update multiple matches from 1 source record. In review: In the linked dBase table, only one match (if it exists) is ever found. In the GoldMine table, you can have multiple matches, but each of those matches will find only the 1 linked table record. The lookup into the linked table is based on an index, therefore multiple occurrences of the same key value will never be seen. Only the first one that is found by the index.

VLink2dBase() also allows you to link a Contact File back into itself, or into another Contact File anywhere on your system. The fields of the linked Contact are now available to you (typically for READ only). This is ideal if you keep 'child' records in one Contact file and 'parent' records in another (or even in the same Contact file). When you call the function correctly (see the information for Param 7 below), VLink2dBase() automatically establishes a relation to the Contact2 fields (containing your user-defined fields) so that you have access to them as well.

A typical example for using VLink2dBase() is if you purchase an updated Postal Code table from a vendor (there are many offering such services on the Web). In GoldMine, you can only track City and State (or Province) based on Postal Code. In your purchased table, you have Postal Code, City, State, County, Time Zone, Country, Region, Phone Area Code, Longitude and Latitude. You now have access to all of these extra fields for Importing, Updating or Replacing GoldMine fields, or, for Exporting and Group Building. You do not necessarily need to bring the extra demographic fields into GoldMine – they are available to you on a virtual basis. And, of course you can write to this Postal Code table from GoldMine, if desired, although in this situation that would probably be rare.

Another typical example for usage is linking to dBase tables in an Accounting System. You may wish to link with a table to populate user-defined fields with sales data, or build Groups based on sales data contained in the linked records. Again, you can also write to the Accounting System table from GoldMine if desired.

Following are the preparatory steps before using this powerful function:

NOTE: You will be using the BR7 Utility (BR7.EXE) to view and setup the linked dBase table. If this is not in your GoldBox-5 path, or if you are not on BR7 version 2.35 or later, please download BR7UP.ZIP from the Web site and unzip it in your GoldBox-5 path – overwrite all files if prompted.

The linked table must be a dBase4, dBase5 or dBase7 table. A dBase3 table may work – you'll know it didn't when you try to create the linking index. If an error comes up, you can Export it to dBase4 format. If you need to do this, click {Open} after the Export and open up the dBase4 table you just created with Export. If your source file is in ASCII format, you will need to convert it to dBase first. This can be done in GoldBox-5 (via {Misc} {Parse ASCII to dBASE}, Excel, Access or another program.

If it does not exist, you must create an Index Tag for the linked dBase table so a match from the GoldMine record can be found. First, click {View} to see the current Index Tags and expressions. If you want to refresh the Index Tag, click {Reset} to rebuild all the Index Tags from scratch. If the Index Tag does not exist, click {AddTag} to begin the process of creating it. Before continuing, please note the following:

To create the Index Tag, click {AddTag}. At the next prompt, key in the Index Tag Name, which must be 10 characters or less and must start with A-Z. Click {Ok} and you are taken to the Expression Builder for creating the Index Tag expression. Start the expression with Upper(, then double-click a Field from the Fields Box. If just a single field, close the Upper() function off with the right parenthesis. The following are points to remember when creating the expression.

This concludes the discussion on how to setup the linked dBase table with its Index Tag. You are now ready to use VLink2dBase() in your GoldBox-5 operations.

Please note: All parameters passed to VLink2dBase() must be surrounded by quotes! Case is not sensitive in the parameters.

PLEASE NOTE: At the Expression Builder, there is a button at the bottom right called [VLink2dBase]. This is an assembler of the function call, just to make it a bit easier to key in the parameters. When you key in the parameters, key them in directly – do not surround them with quotes! The assembler will do that for you. If you are going to use a literal text value surrounded by quotes, always use single-quotes! When you are linking to Contact1, a GoldMine Contact file, the assembler will automatically add the 7th parameter.

Param 1 (reqd):

The Drive, Path and File Name of the linked dBase table. You do not need to pass in the {.DBF}, as GoldBox-5 assumes that. If the path uses long file names, please use the 8-character short path name. Example: "d:\progra~1\data\acctfile"

Param 2 (reqd):

The Index Tag of the linked dBase table you are using to find the GoldMine Match value. Example: "AcctID"

Param 3 (reqd):

The field in the linked dBase table to be returned if you are doing a READ from the table, or the field to be replaced if you are doing a WRITE. If linking to a non-Goldmine dBase table, you may just need the field name, as long as that field name is different from any GoldMine field name. If in doubt, use the file pointer in front of the field name. If using an Alias (see Param 7 below), you must ALWAYS use the file pointer. Examples: "SalesTotal" (no file pointer, because there is no GoldMine field called SALESTOTAL) or "AcctFile->Contact" or "C2GMFILE->UserDef01"

Param 4 (reqd):

The GoldMine Match value. This is the field, or field expression, from the GoldMine record that will match with a record in the linked dBase table, based on your Index Tag. This can be a Key field, a User-defined field, the Reference field from a Profile record, or a combination of GoldMine fields, such as Company + Contact. GoldBox-5 transparently UPPER-CASES and TRIMS this value so you do not need to include those functions. Examples: "Contact1->Key5" or "Contact2->UserDef07" or "Contsupp->Contsupref" or "Contact1->Company+Contact1->Phone1"

Param 5 (reqd):

When you are READING a field value from the linked dBase Table: The value to be returned by VLink2dBase() if no match is found in the linked dBase table, based on what you passed in as the 4th parameter above. If you will be replacing a GoldMine field, typically this would be that GoldMine field name. The effect of this is the GoldMine field is replaced with itself if no match is found in the linked dBase table. You can also have the function return a Space(1) result, which indicates NOT FOUND if you want to evaluate it in a Primary Filter. Examples: "Contact1->Key1" or "Contsupp->Title" or "Space(1)" Please Note: This value must always be a field name or the result of a function call! Using a literal value, such as the words "NO MATCH" or a plain Numeric value such as the number 1, will cause an error.

When you are WRITING a value to a field of the linked dBase table: The value from GoldMine with which to replace the field in the linked dBase table. This can be a GoldMine field value, the result of an expression or function, or a literal value. Examples: "Contact2->Uregion" or "Contact1->Accountno" or "PullEmail('MAIN')"

Param 6 (opt):

This parameter is optional, as the word "READ" or "WRITE". GoldBox-5 assumes that you want to READ a field value from the linked dBase table on a match if you do not pass this parameter. If you are passing a 7th parameter, you must pass this one as well. For a READ when you are passing a 7th parameter, you can just pass 2 double-quotes, back to back, or the word "READ". For a WRITE when you are passing a 7th parameter, pass in the word "WRITE".

If you intend to WRITE to the linked dBase table, you must always pass the word "WRITE" for this parameter.

Param 7 (opt):

This parameter is optional, and is the Alias of the linked dBase table. An 'Alias' is just another name for the linked dBase table. You never need to pass this parameter if your linked dBase table is a non-GoldMine file. If you are linking, for example, to another Contact File, or the same Contact File you are working on, then you MUST pass in an Alias so that GoldBox-5 can open it under a different name. If you want to link to another Contact File, or the same one you are working on, pass in the word "C1GMFILE" as the Alias. When VLink2dBase() sees this, it transparently opens up the Contact2 file and sets a relation into it, so you can use any of the User-defined fields. The Alias for Contact2 then becomes C2GMFILE. Please note that if you are linking to a GoldMine table with VLink2dBase(), you would only want to use READ capability. If you use WRITE, the change won't sync.

If using the above Alias for a linked GoldMine file, always use the Alias as the file name pointer for Parameter 3, the field value of the linked dBase table you want to READ. For example, if you wanted to read the UserDef01 field of the linked dBase table, you would pass in "C2GMFILE->Userdef01" as the 3rd parameter. If you wanted to read the Key3 field of the linked dBase table, you would pass in "C1GMFILE->Key3".

 

Returns:

For READ: The field value in the linked dBase table you passed in as the 3rd parameter.

For WRITE: Returns TRUE for a match found in the linked dBase table, FALSE if not.

 

Examples:

VLink2dBase("c:\mydata\postcode", "zipcode", "CountyName", "Contact1->Zip", "Contact1->Key5") In this example, you are linking into a POSTCODE table you purchased, and you want to populate the Key5 field with the County from the table.

.NOT. Empty(Contact2->UserDef01) .AND. .NOT. Empty(VLink2dBase("d:\progra~1\goldmine\common\contact1", "contkey1", "C1GMFILE->Company", "Contact2->Userdef01", "Space(1)", "", "C1GMFILE") In this Export example, you are using all 7 parameters because you are linking your current GoldMine Contact File back into itself. The call to VLink2dBase() is actually done in the Primary Filter, not as an Export field expression. In this case, you are evaluating Client records and want to link to the related Lawyer record, and return the lawyer's Company Name to Export it out. In the Lawyer records, the Lawyer ID is stored in Key1. In the Client records, the Lawyer ID is stored in UserDef01 and NOT in Key1. You are passing in the UserDef01 value for lookup by the Key1 index to find the Lawyer record. If no match is found, VLink2dBase() returns FALSE. Your Primary Filter will then ignore those Contacts that do not have a match because you passed in a Space(1) to be returned on No Matches, and you have a .NOT. Empty() around the VLink2dBase() function call. In your Field Mapping Template, to export out the lawyer's Company Name, create a calculated field by pressing the {Field} button. The field name might be: LAWYERCOMP. The Description can be: Lawyer's Company Name. The Expression would be: C1GMFILE->Company.

VLink2dBase("f:\acctdata\acctsale", "acctid", "acctsale->salestotal", "Contact1->Key2", "Contact2->UsalesTot") In this example, you are Globally Replacing a User-defined field called Contact2->UsalesTot with the Sales Total value found in your Accounting System table. The call to VLink2dBase() is the field expression. You would press {Field-1} and select the Contact2->UsalesTot field. At the Expression screen, you would key in the above example. You are using the Key2 field to find a match in your linked dBase table called ACCTSALE. You are passing in Key2, and GoldBox-5 uses that value to find a match in ACCTSALE, based on the ACCTID Index Tag that you created. You want to return the value of the SALESTOTAL field to populate Contact2->UsalesTot. If no match is found, you want to replace Contact2->UsalesTot with itself.

VLink2dBase("f:\acctdata\acctsale", "acctid", "GMacct", "Contact1->Key2", "Contact1->Accountno", "WRITE") In this example, you wish to find a match in your ACCTSALE linked dBase table and write the GoldMine Account Number into a field of that table called Gmacct.

 

WRITING to a linked dBase table:

This can only be done via {Batch} {Global Replace}. When you press one of the {Field} buttons, for example, {Field-1}, you are taken to the Expression Builder where you select the field to be replaced. Notice in the Fields box that the first entry is called: REPLACE->LinkedDBF. That is what you will select anytime you want to replace any field in the linked dBase table. Go ahead and double-click it, then click {Go}. This is just an indicator to GoldBox-5 that you are not replacing a GoldMine field, but an outside field. So the field name will always be REPLACE->LinkedDBF. It is in the field expression where you key in your call to VLink2dBase() to tell it which field in the linked dBase table is to be replaced, and by what. Don't forget to include the 6th parameter of "WRITE"!

 

KEY HINTS FOR USAGE OF VLink2dBase():

 

FUNCTION / VirtualFld()

Description:

Used primarily by the Import/Update, allows you to use an expression to define an incoming field. This may not seem useful because you can map any incoming field to any GoldMine® field. Yet, it does have one particular usage in the following scenario:

Scenario: You have one user-defined field in GoldMine, called UsaleGoal, which tracks the current month sales goal figure per client. So, if you go to ABC Company, their sales goal figure might be $10,000 for the month of November. Next month, it will change to a new value perhaps. The sales goal figure comes in from your AS-400 accounting system, which is an automated weekly update.

Problem: The Incoming File from the AS-400, called SALEDATA.DBF, has all twelve sales goal figures from January to December, each in a separate field. The fields are named: SalesFor1, SalesFor2, SalesFor3, etc. The final number of the field name represents the month of the year, all the way up to 12. How can you determine to import the SalesFor11 field value ONLY (which is the sales goal figure for November, the 11th month), and ignore the other 11 fields? A nested IIF() statement would do it, but you would exceed the 254 character limit on expression length. The xFrag() function does not help in this area. The solution is to use the VirtualFld() function to assemble the correct field name from the incoming file.

You would NOT map an incoming field to GoldMine's Contact2->UsaleGoal field. Instead, you would press the [Exprn] button, and key in the following expression:

VirtualFld("SaleData->SalesFor" + AllTrim(Str(Month(Date()))))

What you've done is pass in the Incoming File name, the arrow as a dash-greater than, and the alpha part of the field name. You then use the Month() function to determine the current month number, based on today's date. The function will return the field value of SalesFor11, assuming today's date is November 6th.

 

Param 1 (reqd):

The assembled field name. Field Name must result in a STRING value.

 

Returns:

The field value, which can be any TYPE.

 

Example:

See above.

 

FUNCTION / WordOccur()

Description:

Returns the number of occurrences of a character, word or phrase found in a field.

 

Param 1 (reqd):

The STRING or Character field.

Param 2 (reqd):

The character, word or phrase you are looking for, surrounded by quotes.

 

Returns:

The number of occurrences, as a NUMERIC.

 

Example:

WordOccur(Contact1->Contact, ".") Assumes name is: David E. Petonic, ESQ.

Result: 2 (found 2 periods)

 

FUNCTION / WordSwap()

Description:

Swaps Words or Phrases from the {File} {Word Swap Table}. A typical usage of this function is to recapitalize a word in a field after formatting it with Proper Case. For example turn Ibm to IBM, At&T to AT&T, And to and, Of to of, etc. Replacements are based strictly on values in the SWAPWORD.DBF file, which you must maintain.

When searching the STRING field or Memo, this function will only look at values that have a space on either side of them (standalone words). The function will "stuff" a space in front of the first word and after the last word so that they get evaluated.

This function is automatically invoked if you used the [Proper] button at the Import Field Mapping Template for a field.

 

Param 1 (reqd):

The STRING field or memo to be searched. Must NOT be surrounded by quotes.

 

Returns:

The swapped version of the passed STRING.

 

Example:

WordSwap(Contact1->Company)

 

FUNCTION / xFrag()

Description:

If you are using a very long filter or field expression which won't fit in the standard 254-character prompt at the Filter & Expression Builder, this function is the answer. Short for Expression Fragment, xFrag() effectively breaks the 254-character limit on expression lengths. It allows you to store multiple fragments of a long expression in the Sub-Filters file. This is the SEQNBRS.DBF data file, accessible from the {File} menu. Each fragment can be a maximum of 254 characters. If you used a single-character for the Definition Label, you can fit about 17 xFrag() calls in your filter or expression.

The function returns the result of the Expression Fragment you stored in the Sub-Filters file. And it's easy to setup. All you need to enter at the Sub-Filters file is a unique Definition Label (the Def Label column) and the expression. You can string as many xFrag() functions together in you Primary Filter or Field Expression with the AND, OR, NOT, or with mathematical operators such as Plus, Minus, Equals or Not Equals.

 

Param 1 (reqd):

A unique Definition Label, surrounded by quotes. Case is not critical, as GoldBox-5 automatically converts your passed-in Definition Label to Upper Case.

 

Returns:

The result of the expression you stored in the Sub-Filters file. The result can be any Type you require: Character, Numeric, Date or Logical (True / False).

 

Example:

xFrag("company") .AND. Contact2->Uemployee > 2000 .AND. Contact2->UtotSales > 10000000 .AND. Upper(Contact1->Key1) = "WEST TERRITORY"

Assumes you have an entry in the Sub-Filters file with a Definition Label of COMPANY and an expression of: Contact1->Company = "Redstone SoftBase Company" .OR. Contact1->Company = "GoldMine® Software Corp." .OR. Contact1->Company = "Corporate Computer Center". xFrag() returns True or False, depending on whether the Contact record being evaluated meets or does not meet the expression.

 

FUNCTION / Year()

Param 1 (reqd):

The DATE value.

 

Returns:

The year as a 4 digit NUMBER

 

Example:

Year(CtoD("02/01/97"))

Result: 1997

 

 

IMPORT / UPDATE

The Import/Update tandem in GoldBox-5 is one of its showcase capabilities. Barring the writing of your own custom application, or the use of a custom utility provided by GoldMine® Software, this is the best method for getting data into GoldMine. You may want to contact GoldMine® Software to see if they can provide you with a custom utility for transferring data from Act!, TeleMagic, Maximizer, Ecco, etc.

Importing is the most complex operation in GoldBox-5 but you should not be discouraged - that's just the nature of it. All other GoldBox-5 operations start from within your GoldMine® data, with which you are already familiar. Importing is the assimilation of non-GoldMine® data into your system, so naturally there are going to be variables involved. Non-GoldMine® data can be anything, can be formatted different ways, and is usually set up to run a certain way in another system. So it's a bit of a leap to transform this data into meaningful records in your GoldMine® system. But not to worry - you can do this! There is no magic involved in any computer program - they all follow a logical path to accomplish a task. And besides, GoldBox-5 anticipates many of the Import issues you will encounter. That said, let's go forward.

Implementing a successful import strategy, whether a one-time conversion from another contact manager or a recurring update on a weekly basis from a mainframe accounting system, requires careful planning. It's like painting a room - most of the work is done in the preparation. Therefore, please read the entire section on Import/Update before even selecting an option from the menu. Even if you are just importing NEW Main Contacts into GoldMine, read the following first, because how you set up that import can adversely affect subsequent imports if not carefully planned and done properly.

The import always requires an Incoming file, or perhaps files, especially if you are importing into the Tab Files in GoldMine. The Tab Files are those tabs along the bottom half of the GoldMine® main screen, specifically the Contacts, Details, Pending, History, Links etc.

GoldBox-5 will only import from 1 Incoming File at a time. GoldBox-5 does not deal with specific contact managers or applications when importing - it only deals with standard file formats. So, the first issue to be resolved: Get the incoming data you wish to import into one of these standard formats: dBase3, dBase4, ASCII Delimited or SDF Fixed Length Text. But read on, because GoldBox-5 requires that the final Incoming File is only a dBase3 or dBase4 file!

 

If you incoming data is not already in dBase format:

Please check out dBase4 File & Field Naming Conventions

This is critical information if you are, for example, converting an Excel spreadsheet to dBase for importing.

If you already have your incoming data in a standard ASCII file, see Parse ASCII to dBase

GoldBox-5 can create a dBase table directly from an ASCII file.

If your incoming data is in SDF Format, as fixed length text, see dBase4 File Creation in BR7

This might be the case if your incoming data was created by a report.

You can use the BR7 Utility to view incoming dBase data and maybe do some preliminary cleanup before bringing it in. Within GoldBox-5, you also can use the {File} {Browse ANY dBase4 File} option. This might be useful to eliminate dupes, for example, from your Incoming File before importing.

 

IMPORTING DATA:

Before the import, you have to determine exactly where in GoldMine® you wish the incoming data to reside. For clues, please review:

 

GoldMine MAIN CONTACT File

GoldMine TAB Files

GoldMine CALENDAR File

GoldMine HISTORY File

GoldMine SUPPLEMENTAL File

Although the following information is certainly a bit geeky it is provided because you may want to understand the basic concept of how GX5 imports data. GX5 actually shields you from how things are really done as much as possible, and you are prompted for what is needed to run an operation. But this will help you understand a bit of the logic on this most complex of operations, the Import/Update.

The import of NEW Main Contacts is the most straightforward. Although much more powerful than GoldMine's standard import, the basic concept is the same. You select your Contact File and Incoming File, choose basic options, map incoming fields to GoldMine® fields, and run it. Plug-in of Tab records is a twist, and will be fully discussed in Plug-In Tab Records. When this operation runs in the GX5 Batch Processor, it's a single process. Please Note: There is no import into the Updater Contact File when you want to import NEW Main Contacts! In fact, the [Contact File] button at the Import Setup Screen is specially programmed to exclude the Updater Contact File from the list box. When importing NEW Main Contacts, always choose your real Contact File, the one you wish to find the new records lovingly nestled in after running the procedure - Do Not import into Updater!

Having said that, it's just the opposite for all other Import/Update scenarios. The data always initially comes into the Updater Contact File, and only into the Updater Contact File! Actually you don't have to sweat this because GoldBox-5 won't allow you to bring the Incoming data into any other Contact File.

To setup an Updater Contact File, see UPDATER Contact File

The flow of the Update/Attach process looks something like this:

Incoming UPDATER ­ Record TARGET

DBF Data ® Contact File Match ® Contact File

__________________________ _____________ ______________

PHASE 1 PHASE 2 PHASE 3

 

Please do not be intimidated by the above information! GX5 knows what it needs and will prompt you for missing entries while you are setting up the operation. Still, we're going to get a bit geeky here. To explain the above figure:

Phase 1: Incoming data is first 'parked' in a special Contact File called Updater. This is why you were directed at the beginning of this manual to create a new Updater Contact File in GoldMine. The Updater Contact File (from here on called Updater for brevity) is a 'work area' or 'temporary holding area' for Incoming data. You're never going to open this file with GoldMine® (unless you are curious), the data won't sync, even many of the indexes of this Contact File are not activated during GoldBox-5 operations (for speed). This file's sole purpose is to transform 'wild' Incoming data into 'tame', or consistent data, so that GoldBox-5 can then go ahead and do further processing with it.

Let's say you are attaching Detail records. You might assume that GX5 takes Incoming records and creates Details in Updater, then re-attaches them to the Target Contact File. Nope! Incoming data, no matter where it will eventually end up in GoldMine, is always first placed into Contact1 and Contact2 fields. Always! If you do your Attach of Details successfully and then get curious and say: "I want go see what the Updater file looks like after this", you can open the Updater file in GoldMine, choose [Maintain Databases] to reset the Contact1 File indexes on it, then scroll through the records in Updater and have a good look. What you'll see is data all over the place. That's because GX5 parks the Incoming data in whatever convenient fields exist in Contact1 and Contact2. It's during Phase 3 that GoldBox-5 transforms the Updater data into Tab records and attaches them.

Enough about Phase 1 for now. Put simply: Phase 1 parks Incoming data in Updater, and only in Contact1 and Contact2 fields.

 

Phase 2: Record Match. This is the most critical issue to resolve when updating or attaching. Without a reliable record match, the 'parked' records in Updater won't find their mates in the Target Contact File, and therefore nothing gets updated or attached.

For Updating Main Fields, you can use any of the fields in the Target Contact File, including all user-defined fields. When you are attaching to Tabs, you can choose from 21 fields for Record Match. These are Company, Contact, Phone1, Secr (a.k.a. Assistant), Country, the 5 Key fields and user-defined fields 1 through 10. Typically you'll use no more than 3 fields to match, and in most cases, just 1. The key point is that the result of your Record Match cannot exceed 100 characters (that's a Visual dBase limitation). For example, the following is a Record Match of exactly 100 characters: Contact1->Company + Contact1->Contact + Left(Contact1->Phone1, 20). The Company and Contact fields are both 40 in length, and that plus the 20 from Phone1 equals 100.

This is most critical: Before you even begin the import into Updater, you have to determine the record match in the Incoming File. You have to know it beforehand so you'll know where to map the field(s) when at the Field Mapping Template.

 

Phase 3: The actual update or attachment, from Updater to the Target Contact File. This piece roughly corresponds to the 3rd main screen of the Import/Update and will be discussed later.

We'll stop here on pure theory and dive right into the actual setup of the Import/Update operation.

In GoldBox-5, the Import/ Update is comprised of 3 major screens, each a different color for clarity: Import Setup Screen (gray), Field Mapping Template (black) and Update Setup Screen (white). The Update Setup Screen is not presented when you are importing NEW Main Contacts.

Further information on Import/Update is found in the below links, which can also be accessed directly from the appropriate screens:

Import Setup Screen

Import Field Mapping Template

Update Setup Screen

 

IMPORT Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /I IGMAIN

NOTE #1: When launching from a Command Line or Q-file, you can pass in a 4th parameter called OPENLOCK to force GoldBox-5 to open GoldMine® exclusively (if you are sure no one else is in GoldMine). Normally GoldBox-5 determines this automatically, but on rare occasions it might see a CLOSED GoldMine® system as OPEN, which can greatly slow down the Import.

NOTE #2: You can also pass a 4th parameter called SHARED, which forces GX5 to Import into an OPEN GoldMine® system (even if no one else is in GoldMine). This is generally only used when you are importing a relatively small number of records into a large GoldMine® system. In this case, the index tags are updated on the fly, instead of all indexes being reset at the end of the operation.

NOTE #3: Let's say you start an Import and the GX5 Batch Processor box shows that you are importing SHARED. This is visible in the blue title bar of the box. You realize that the import may take a very long time and want to continue it into a LOCKED GoldMine® system. You can press {F10} to halt the process, then do the following. First, ensure no one else is in GoldMine. Next, go into GoldBox-5 and access {File} {Batch Session Summaries}. Click [View]. Note the number to the right of the label: Done. Go back to the Import Setup and access the {Start w/Rec} prompt. Key in the Done number, plus 1. Exit GoldBox-5, then launch from a Command Line using the OPENLOCK parameter mentioned in Note #1. The import will pick up where it left off, but this time into a LOCKED GoldMine® system, and should proceed much faster.

 

Update Main Fields

This operation takes incoming data and attempts to find a match in your Target Contact File. If a match is found, the fields you mapped update the Contact fields. By default, GoldBox-5 updates all the fields you mapped. If the incoming value is exactly the same as the value already in the GoldMine field, GoldBox-5 transparently sees this as a non-update of that field and will not add a Tlog entry (for sync).

For more information on Record Match, please see Update/Attach Record Match

You can use the Update Main Fields operation to stop duplicates from getting into GoldMine, and you can also update just a certain number of fields on a match, but add an entire new record if no match is found. For more information, please see the {Shield} button at Import Field Mapping Template. Also see the {Records finding NO MATCH: Add as NEW?} checkbox at the Update Setup Screen

The above 2 links also provide information on the many options available to you when updating, such as conditionally updating individual fields, Notes updating and writing back to the Incoming File for Matches or No Matches.

GoldBox-5 provides an additional service during updating. In the Updater Contact File, the CREATEBY field is used to note whether the record found a match (the word DIDMATCH appears in the field) or whether the record did not find a match (the word NOMATCH appears in the field). You could then go into GoldMine, select the Updater Contact File, reset its Contact1 indexes, then build a filter or Group based on this field value to determine the success of the operation.

 

Update/Attach Record Match

This is the most critical issue to resolve when updating or attaching. Without a reliable record match, the 'parked' records in Updater won't find their mates in the Target Contact File, and therefore nothing gets updated or attached.

For Updating Main Fields, you can use any of the fields in the Target Contact File, including all user-defined fields.

When using Company in the Record Match, recommend using: SmoothComp(Contact1->Company)

When using Contact in the Record Match, recommend using SmoothName(Contact1->Contact)

When you are attaching to Tabs, you can choose from 21 fields for Record Match. These are:

Company

Contact

Phone1

Secr (a.k.a. Assistant)

Country

The 5 Key fields

User-defined fields 1 through 10

Typically you'll use no more than 3 fields to match, and in most cases, just 1. The key point is that the result of your Record Match cannot exceed 100 characters (that's a Visual dBase limitation). For example, the following is a Record Match of exactly 100 characters:

SmoothComp(Contact1->Company) + SmoothName(Contact1->Contact) + Left(Contact1->Phone1, 20)

The Company and Contact fields are both 40 in length, and that plus the 20 from Phone1 equals 100.

This is most critical: Before you even begin the import into Updater, you have to determine the record match field or fields from the Incoming File. You have to know this beforehand so you'll know where to map the field(s) when at the Field Mapping Template.

 

Import Setup Screen

IMPORT / UPDATE

Import Field Mapping Template

Update Setup Screen

Plug-In Tab Records

[Primary Filter] This prompt should be selected after you have mapped your fields! In most cases you probably won't be using a filter - you'll want to import all of the Incoming records, which is the default. However, you can limit the import by evaluating any of the Incoming fields. For example, if you have a huge mailing list Incoming file but only want to bring in those contacts located in California, your filter might be: Upper(Trim(InFile->TheState)) == "CA" Another time-saving capability of the filter is when you are Attaching Tab records. Each Tab Import requires that at least 1 or 2 fields contain a value, otherwise the Tab record is not attached. They are called "Tab critical" fields and are discussed a bit later on. The non-attachment of Updater records which have an empty "Tab critical" field is handled transparently in GoldBox-5 during Phase 3, the Attach phase. But you can prevent the record from coming into Updater in the first place, thereby saving time. For example, if you are importing into Additional Contacts, the Contact Name is the "Tab critical" field. To prevent blank incoming records from coming into Updater, your filter might be: .NOT. Empty(InFile->Name) .

[Contact File] If importing NEW Main Contacts, this is Contact File receiving the NEW records. Example: The COMMON Contact File. If updating or attaching Tab records, this is the Target file. It is the Contact File to be updated or against which Tab records will be attached or updated. Example: The COMMON Contact File.

(Contact File) Displayed as a prompt in case GoldBox-5 cannot open a path formatted with UNC, with the double-backslash as the first 2 characters. Replace with standard Drive-Colon-Backslash if necessary.

[Incoming File] This is the dBase file you are importing. You'll notice that only files with the extension of DBF are listed. If your incoming dBase file does not have an extension of DBF, please rename it!

(Incoming File) Displayed as a prompt in case GoldBox-5 cannot open a path formatted with UNC, with the double-backslash as the first 2 characters. Replace with standard Drive-Colon-Backslash if necessary.

[Browse] Allows you to open the Incoming File in the GXW Browser.

[Updater File] NOTE: This button and its related prompt will not appear if you are importing NEW Main Contacts. Normally the Updater file is pre-selected by GoldBox-5 and you can skip past it. If you don't have an Updater file, GX5 reminds you to create it in GoldMine® and provides the steps.

(Updater File) Displayed as a prompt in case GoldBox-5 cannot open a path formatted with UNC, with the double-backslash as the first 2 characters. Replace with standard Drive-Colon-Backslash if necessary.

[Write Back] NOTE: This button and its 2 related text display entries will only appear if you are importing NEW Main Contacts. They will be hidden for Updating and Tab Record Attachment. This option allows you to write back a value into a field of the Incoming File if the incoming record was imported into GoldMine. For example, you may wish to write the GoldMine® Account Number into an Incoming File field. Or, maybe just replace a logical field with the value TRUE. You are first prompted to select the Incoming field, then the expression with which to replace it. For example, the Incoming field might be InFile->Gmacct and the expression would be Contact1->Accountno.

(Qty to Import) How many records you wish to import. The number 0 means import ALL, the default. Typically you might change this to 10, for example, if you are testing. Make sure you put it back to zero when you do the actual import!

(Start w/Rec #) Which record in the Incoming File that you wish to start importing. The default is Record # 1, the default, which translates to the top of the Incoming File. Typically you would change this if an import errored out for some reason and you need to restart it.

(Name Format) Incoming Names typically are tracked 1 of 3 ways: 1 = First-Name Middle Last-Name as in David E Petonic. 2 = Last-Name, First-Name Middle as in Petonic, David E. 3 = Last-Name First-Name Middle as in Petonic David E. The default is 1. This precludes you from having to write a complex expression to turn a name around, since GoldMine® tracks contacts as First-Name Middle Last-Name.

(Default Area Cd) For USA / Canada phone numbers: If incoming Phone numbers are missing the area code and you know the common area code for them, you can key it in here. GoldMine® requires the area code for each phone number.

(Translation Label) This prompt relates to the Field Translation check box discussed below. It defaults to the current Launch ID. The Launch ID is used as the first part of the search value when using the Field Translation feature. The 2nd part is the GoldMine® field name. For doing similar imports and using field translation entries you have already keyed in for another Saved Setup, change the name to that saved IG file name (leave off the .DBF). This precludes you from having to rekey the entries (or duplicate them). NOTE: Be extremely careful about which Field Template name you key in! The Launch ID can be seen in the list box when you select {Saved Setup}. Please DO NOT add the DBF extension to this prompt.

Ö Attempt to format ALL Incoming Phones to USA? Ö This defaults to checked but you can uncheck if you are importing International phone numbers exclusively.

GoldMine® stores phone numbers in (###)###-#### format unless International. Regardless of the incoming format (I.e. ###-###-####) GoldBox-5 puts the number into GoldMine® format if you select this option.

Incoming numbers are determined to be USA format only if, after stripping out non-number characters, the length of the remaining value is either 7, 10 or 11. If it's 7, the default area code is inserted. If it's 11 and the first character is a (1), the (1) gets stripped off and number is assumed to be USA. If the length is anything other than 7, 10 or 11, the number is replaced into the field with no formatting and the phone status is flagged International.

Phone numbers auto-formatted by GoldBox-5 include PHONE1, PHONE2, PHONE3, FAX and user-defined fields added which begin with UPHONE as the first 6 characters of the field name.

The 1st character of the STATUS field in GoldMine's Contact1 file determines whether all phone numbers are displayed as is (International) or USA format.

Recommendation: You may want to make 2 passes over the incoming data. The first pass would bring in all USA/Canada numbers, and you would check this option. You can set a filter to identify USA records Example: USA() .OR. CANADA() .OR. USTERR(). The 2nd pass, for non-USA format, would have this as the filter: .NOT. USA() .AND. .NOT. CANADA() .AND. .NOT. USTERR(). These 2 expressions are shipped with GoldBox-5 and are accessible by pressing [Get] at the Filter and Expression Builder.

Ö Auto-replace LastName? Ö GoldMine® has a LASTNAME field in its Main Contact file, which allows you to search rapidly for a contact by last name. When you add a record in GoldMine, the LASTNAME field gets automatically replaced with the last word of the Contact field. This option does the same thing as each record is imported. If checked, the expression to place the Contact's last name into the field is automatically written into the Field Mapping Template (unless you already have an expression keyed in).

Bonus: GoldBox-5 transparently handles the situation where a title appears as the last word of the Contact name. Examples:

Lando Calrissian III

Perry Mason Jr., Atty

James Kildare/ M.D.

In each of the above cases, the last name will be correctly placed into the LASTNAME field. In the 2nd example, GoldBox-5 will walk back 2 fields to put the word "Mason" into the LASTNAME field.

See the option {File} {Last Name Title Exceptions} for more information.

Ö Auto-replace Dear? Ö If checked, the expression to place the Contact's first name into the field is automatically written into the Field Mapping Template (unless you already have an Expression keyed in).

NOTE: If some of your incoming contact names begin with Mr., Ms. or Mrs. you may want to press [Exprn] at the Field Mapping Template for the CONTACT field and select StripMrMs() from the Functions list box. This will strip the salutation off, so that the actual first name of the Contact is placed in the DEAR field.

Ö Perform Field Translation for marked Fields? Ö Activates lookup into GX5's Field Translator Table, called IMP_LOOK.DBF. If checked, the Translator step is included in the Import operation. Otherwise, it won't occur, even if you have Translation entries for fields at the Field Mapping Template.

This option provides you with a powerful shortcut to doing global replaces as each record is imported. Essentially you are translating a field from one value to another. GX5 takes the field value, searches the Translator table for that value, and if it finds it, returns the value to replace it with. Otherwise, the original value is retained. It is exceedingly powerful if your import happens to require this capability and will save you a ton of work.

The Translation values are setup at the Field Mapping Template. See [Translt] button at the Field Mapping Template section later for more information.

Ö Create GoldMine® Group? Ö If you are importing NEW Main Contacts, the rest of this prompt will say: "of successfully Imported records". This allows the automatic creation of a GoldMine® Group whose members are those records you just imported. This capability can be used as a reference or audit later on so you can easily see exactly when a Contact was imported. If you are doing an Update or Attach to Tabs, the rest of this prompt will say: "of successfully Matched records". This Group shows successful Record Matches from Updater to Target, so you can determine which records were "touched". The following 2 items directly relate to this one.

[Grp-Ref] This button allows you to overwrite the default Group Name with an expression of your own. Mostly you should not do this, except if you wish to add to an existing Group. The default expression which appears to the right of this button is nice because it marks the date and time of the Import. If you do choose your own Group Name, you would key it in literally, surrounded by quotes, at the Filter and Expression Builder.

<Grp-Ref> Displays the result of the Group Reference expression. As mentioned, stick with the default unless you are adding to an existing Group.

PLUG IN TAB RECORDS

Please see Plug-In Tab Records

[Map Fields] The final item at the Import Setup Screen, this takes you to the Field Mapping Template. Underneath this button is displayed the name of the Template.

 

After exiting the Field Mapping Template, remember you can click the [Primary Filter] button now to limit the Incoming records. As previously stated, most of the time you won't do this - you'll be bringing in all the Incoming records.

If you are happy with the Import Setup so far, click [GO}. If you are importing NEW Main Contacts, GX5 presents the Setup Action Box and you can choose the next action.

When you click [GO] on an Update or Attach to Tabs procedure the first time, you are taken to the final major screen of the Import, the Update Setup Screen, the dreaded white screen. Just kidding - nothing to dread here. If you re-access the Import Setup Screen later, you can access the Update Setup Screen again, anytime, by clicking [GO] and selecting * Go to Update Setup * from the Setup Action Box.

 

Import Field Mapping Template

Import Setup Screen

Update Setup Screen

When you press the [Map Fields] button, a lot is happening behind the scenes before the screen is displayed. We'll only mention 4 things though, because you may receive an acknowledgement prompt before you can proceed.

1. GX5 checks that the Contact File, Incoming File and Updater File are valid. If not, you are informed and are placed at the offending button to reselect. Also, GX5 checks that the file extension is DBF.

2. Next, GX5 checks that the Incoming File is not reserved. There are 30 reserved DBF file names, and here they are! CONTACT1, CONTACT2, CONTSUPP, CONTHIST, CONTGRPS, CONTTLOG, GMTLOG, LOOKUP, CAL, IMP_LOOK, ZIPTABLE, SEQNBRS, GXSETUP, BEGINIMP, GBSIC, GBTITLE, GX4ADDL, GX4PROF, GX4CAL, GX4HIST, GX4TRACK, GX4LINK, PROFILER, C1TEMP, C2TEMP, SUTEMP, HHTEMP, CLTEMP, CTTEMP and GTTEMP. If your Incoming File is in this list, you have to rename it! Critical: If the Incoming File has a memo field (a.k.a. Notes) and you have to rename the DBF, remember to rename the DBT file too!

3. If you are doing a {NEW Main Contacts} import, GX5 helps you out by attempting to auto-map as many fields as it can. This only happens the first time you press the [Field Mapping] button. You are informed to verify that the auto-mapping went according to your intentions. If not, you can blank out the field(s) or substitute another field when you get to the Field Mapping Template.

4. If you are re-accessing the Field Mapping Template, GX5 verifies that the fields you have mapped actually exist in the Incoming File. If one does not, GX5 keeps the mapped field, but offsets it by a space so that the GX5 Batch Processor will ignore it and not error out. GX5 could have been programmed to just blank it out, but it is offset instead so you can see what was originally mapped. Normally this won't be a problem, but sometimes, an Incoming File is altered after the Import Setup. Maybe you add, modify or delete a field name in the Incoming File. This feature is a graceful way to inform you that your original field mapping no longer conforms to the current state of the Incoming File. And of course this will occur if you select a different Incoming File from the one you originally chose and mapped!

A Field Mapping Template stores the mapping of incoming fields, or dBase expressions, or both, to your GoldMine® fields. It is a standard dBase4 file, stored in the GoldBox-5 directory. The file name starts with IG and ends in DBF as the extension. This is also the Launch ID for the Import Saved Setup. So, when you access the Field Mapping Template, you are actually browsing a DBF file.

A lot of information is displayed on this screen so let's take a look and find out what it all means:

At the very top, the blue title bar displays the Template name, which is the Launch ID. Also in the blue title bar, one of 3 things will display: VALUE >> followed by the value of the Incoming field you have mapped; VALUE >> followed by the result of an Expression; or, nothing will display, meaning nothing is going to happen on that GoldMine® field.

Directly underneath are the 22 buttons for various actions on the Template and we will skip past these for now. Each will be documented a bit later.

Under the 22 buttons is a Status Bar. This displays which Incoming record is currently being viewed, the Incoming File name, how many Fields it contains and how many Records. To assist you in Field Mapping, you can move around in the Incoming File to view certain records. Those buttons will be discussed shortly.

Just to the right of the Status Bar are the 2 buttons which allow you to instantly access the Top of the Template [7 T] or the Bottom [8 B].

The black screen area is the Template itself. The first 4 columns are self-explanatory, showing the GoldMine® Field Description, Field Name, Type, Length and Decimals. The "L" column is normally blank but will contain the small letter "x" if you want to populate a GoldMine® Lookup list for that field. Next we see the 3 columns with the headings of Field-1, Field-2, Field-3.

Field-1 is where most action occurs, and it displays in light-blue to stand out. Only 1 of 3 things will be in this column: It can be blank, meaning nothing will happen for that GoldMine® field. It can contain an Incoming field name. Or, it can contain the small letter "e", which means only the result of an Expression will populate the GoldMine® field.

The Field-2 and Field-3 column usage is related for character-type fields. The sole reason for their existence is to make it easy for you to import multiple incoming fields into one GoldMine® field without having to key in an expression. Example:

In the Incoming File, the Contact is stored in 3 separate fields:

FIRSTNAME, MIDNAME and LASTNAME. Plug FIRSTNAME into Field-1, MIDNAME into Field-2 and LASTNAME into Field-3. GoldBox-5 prompts you for a custom separator between fields. Usually you'll take the default of a space, but in the case where a zip code is stored in two separate fields, you may want to choose a hyphen. You can key in X for no separator (if for example, a zip code is stored in two fields and the second field contains the plus 4 already with a leading hyphen). When importing 3 lines of text into a Notes field you can choose a character return/line feed as the separator to make the lines of text appear on separate lines in the Notes entry.

Please note that if, for example, you only had FIRSTNAME and LASTNAME fields you would plug them into Field-1 and Field-2. You cannot skip Field-2 and then plug something into Field-3; GoldBox-5 won't see it and your data won't be properly imported.

On GoldMine® fields which are Date or Numeric type, the Field-2 and Field-3 columns are used only to display helpful information and are ignored by the Import process.

If you click on the scroll bar at the bottom, several other columns reveal themselves.

The DBF-File column is the actual name of the GoldMine® file being imported into.

The Ord column shows the order in which Expressions are implemented.

The Field Replace Expression column is self-explanatory.

The Sep column shows separator values between Field-1 and Field-2, and between Field-2 and Field-3, if you are mapping into them, as discussed above.

None of the columns are directly editable - you access them via the buttons at the top.

When GoldBox-5 imports, each record is taken care of entirely before moving on to the next one. The following is the sequential action taken on each imported record:

1. GoldMine® fields are first replaced with the Incoming File's field. If you have a small "e" in Field-1, it is not evaluated here, but in step 2. If you pressed [UPPER] at some fields, their values are converted to UPPER CASE. If you pressed [Proper] at some fields, their values are converted to Proper Case and the WordSwap() function is automatically invoked. If you have ending titles in the Incoming contact name, GoldBox-5 'walks back' to get the actual Last Name and puts it into the GoldMine® LASTNAME field. NOTE: When GoldBox-5 imports into GoldMine® character fields (most are character), the values are always flushed left automatically, regardless of whether the incoming value had leading spaces. This is OK most of the time. A possible problem would be if you import a numeric value into an indexed GoldMine® field, like a KEY field, which you want to be properly indexed. You can get around this in GoldBox-5 by pressing [Exprn] to reinsert leading spaces, as in: Example: PadR(Trim(Contact1->Key2), 8) This forces all numbers to have up to 8 leading spaces so that they line up properly for the index. If you wanted to pad the number with leading zeros the expression is: PadR(Trim(Contact1->Key2), 8, '0').

2. The expression column is then examined, by default, from top to bottom. If you use the [Order] button, they are evaluated according to the numbers assigned. Expressions found are evaluated and fields are replaced with the results. This allows you to use an imported field value in an expression to replace another field.

3. If you checked the Ö Perform Field Translation for marked Fields? Ö check box at the Setup Screen and have created field translator entries by pressing [Translt] at fields of your choosing, the field translation takes place.

4. Finally, if you marked fields by pressing [Lookup], GoldMine® lookup lists are built from the imported values.

In the black screen area, there is a large black arrow on the extreme left which indicates the current record. You can use the mouse to rest on a different record, or use the Up and Down arrow keys. You can also press PgUp or PgDn to advance 1 screen up or down. If you press Home, you are taken to the 1st column, the one labeled "GoldMine® Field Description". Press End, and you are taken to the last column, the one labeled "Sep".

And now to those 22 color-coded buttons up top - in just a moment.

One of the buttons, [Map] is defaulted, which means that if you press Enter, it is selected. This is certainly the most common button you'll be pressing which is the reason for the default. A note about pressing Enter to select [Map]. Although you can't see it (because Edit mode is turned off in this Browse window), every time you press Enter, the next column in the black screen is accessed. Eventually you'll see the display shift one column to the left. Simply press Home to re-establish the "GoldMine® Field Description" as the 1st column. Sorry - nothing can be done about this - it's the way Visual dBase7 operates. Another way to select [Map] is to double-click with the left mouse button at the record of your choice. That does not shift the display. So, to review, there are 4 ways to select [Map]: Click the [Map] button once; Double-click in the black screen area at the desired record; Press Alt-M; press Enter.

The buttons up top are color-coded for specific purposes:

Blue: General-purpose buttons, most having to do with setting up a GoldMine® field.

Black: Allows movement within the Incoming File, strictly to assist you in mapping fields.

Green: Visible and active only for the Update of Main fields.

Red: Exit from the Field Mapping Template.

We will start with the [Map] button, move left, down and then right to cover all 12 blue buttons.

Blue Buttons:

[Map] Pops up a white list box in the center of the screen of all Incoming fields, in the order in which they appear in the file. There's more to this list box than is immediately apparent.

The first item in the list is <Blank Out>. Select this to blank out, or space out, a field you had previously mapped. There is also one of these at the bottom of the list. The description is <* = Mapped> but the effect is the same.

Speaking of which, you will notice that an asterisk appears at the far right of some fields. This indicates Incoming fields which you have already mapped, just as a bit of helpful feedback.

You can select a field by highlighting and double-clicking, highlighting and pressing Enter, or highlighting and clicking the [Go] button at the bottom.

If you selected [Map] on a GoldMine® field which has an Incoming field in the Field-1 column, that field is the one initially highlighted. Otherwise, GoldBox-5 tries to anticipate your mapping by moving 1 down in the list.

If you click [Find], GoldBox-5 will take you to the GoldMine® field where the highlighted field has been mapped. Use the asterisk marking as a guide to determine whether the field is currently mapped.

Finally, you can click [Cancel] or press Esc to abort mapping a field.

[Map-2] This is only active for character-type fields and will allow you to map a field to the Field-2 column, as discussed previously. You must have a field mapped to Field-1 before invoking.

[Map-3] Allows you to map a field to Field-3. You must have a field mapped to Field-2 before invoking.

[DtMask] Short for Date Mask, this is only active if you are mapping to a date-type field and the Incoming date value is character-type. It is automatically invoked when you first map the field.

A list box appears with a selection of date format types. To help you select the correct one, it is best to look directly above the box to the VALUE >> entry which is now grayed out but still visible. It will show you the Incoming date as it appears in the Incoming File. If it's blank, you might want to use the black buttons to find an Incoming record which has a value in that field.

When you select a value from the | Date Mask | list box, the format code you chose appears in the Field-2 column as a guide.

[UPPER] This is a toggle. Forces the mapped value to be UPPER-cased in the GoldMine® field. The capital letter "U" appears at the end of the "GoldMine® Field Description" as an indicator.

[Proper] This is a toggle. Forces the mapped value to be Proper-cased in the GoldMine® field. The small letter "p" appears at the end of the "GoldMine® Field Description" as an indicator. When this is active the WordSwap() function is automatically invoked by GoldBox-5 to replace words that may have been inadvertently decapitalized (such as IBM or AT&T). These replacements are based on the SWAPWORD.DBF file, which you can access and modify at {File} {Word Swap File}.

[SubFilt] Provides instant access to the Sub-Filters file, if, for example, you wanted to use the Generate() function to put a sequential number in a field. You can also access this file from the {File} tab at the Top Level Menu.

[Translt] This lets you build a list of Translation entries for the field. You are taken to the Field Translator Table in the GXW Browser. If there are no current entries for the field, a blank one is created. You'll see that the Label column is populated with the Launch ID and the Field column is populated with the GoldMine® Field you wish to translate. You should not edit these entries. The only columns which should be modified are the Existing Value column and the Replace With column.

Here are the 2 translation options available:

Incoming Value matches the value in the Existing Value column: This is the most common usage of the table. You key a single value into the Existing Value column, corresponding to the Incoming value. Example: Press the [Translt] button at the Contact TITLE field. Key in VP at the Existing Value column. Key in Vice President at the Replace With column. As each record is imported, if the incoming TITLE is VP, it is replaced with Vice President. Example: Key in SLM at the Existing Value column. Key in Account Executive at the Replace With column. If the incoming TITLE is SLM, it is replaced with Account Executive. Example:

IGMAIN TITLE VP Vice President

IGMAIN TITLE SLM Account Executive

IGMAIN TITLE FINO Financial Officer

IGMAIN TITLE PRES President

IGMAIN TITLE MKTE Marketing Executive

Another example is when importing into Calendar (or History), and the incoming Sales Person name is a full name, but you want to translate it to a standard GoldMine® User Name of 8 Upper-case characters. Example for Calendar:

IGCAL DEPARTMENT WILLIAM KIRK WKIRK

IGCAL DEPARTMENT LEONARD SPOCK LSPOCK

IGCAL DEPARTMENT DEFOREST MCCOY DMCCOY

IGCAL DEPARTMENT NICHELLE UHURA NUHURA

Incoming Value is contained within a range: Assume you want to replace the KEY1 field with a sales territory based on zip code ranges. Import the first 5 characters of the zip code into KEY1 (you can use the [Exprn] button to remove Zip+4 characters as in: SubStr(Contact1->Key1,1,5). Then set up the table like so:

44000|44060 WEST

44200|44220 CENTRAL

44303 SOUTH

44400|44500 NORTH

When GoldBox-5 finds a pipe character in the Existing Value column, it converts the value to the left of the dash as the low end and the value to the right into the high end. The incoming value is then evaluated to see if it falls within the range provided by the low and high ends. If so, the Replace With value is written into Contact1->Key1. Zip-codes-into-territories is just a single example of this powerful capability. Another example might be to rate your customers based on their total sales, or number of employees, etc.

[Lookup] This is a toggle. Note: This button is disabled when Attaching to or Updating Tab files.

You can add the final field value to GoldMine's Lookup file as the last step before GoldBox-5 advances to the next record. This saves you from rekeying data into F2 Lookup entries in GoldMine.

This feature exists only for Importing directly into the Target file or Importing to later Update the Target file. It is not available for Attaching to Tab Files. It is active only for character and numeric type GoldMine® fields, including any user-defined fields. It is inactive for the ZIP/POSTAL CODE and NOTES fields.

The Main Lookup file in the GMBASE path of GoldMine® is the only one addressed by this procedure.

The small letter "x" appears in the L column when active.

Special Scenario: All your records are in GoldMine® and you don't want to import new contacts, but you want to import a Lookup list for a particular field, let's say UserDef05. You're going to pretend to do an [Update Main Fields] procedure. At the Field Mapping Template screen, plug the incoming value into the UserDef05 field, then press the [Lookup] button. [Quit] out of the Template. When you click [GO] at the Import Setup Screen you will be taken to the Update Setup Screen. Only 2 things you have to do here. Click on [Record Match] and select the UserDef05 field as the Record Match field. Critical: check the prompt labeled Ö STOP after Import of records into Updater? Ö. Quit out and back to the Import Setup, click [GO], and Run the Operation.

[Order] This is very rarely used but is handy in the following example: Let's say you are using an expression to populate the UserDef10 field. You then want to take the result of what is in UserDef10 and use it in an expression at the Key2 field. Since GX5 by default evaluates the Expressions from top to bottom, this won't work, because the result won't have been put into UserDef10 before the Key2 expression can use it. In this case, click [Order] and change the number to anything higher than zero. That will cause all the other Expression results to be done first, then the Key2 expression.

[Exprn] Allows you to apply the result of an expression to the GoldMine® field. The Field Replace Expression is classified as either exclusive or secondary. Exclusive simply means that the expression is the only thing happening to the GoldMine® field. For these, the small letter "e" is written into the Field-1 column. Secondary means that you are first mapping an Incoming value to the GoldMine® field, then applying an expression result to it.

Exclusive example: GoldMine® field: UserDef01. You wish to put a USA time zone into User-defined field #1. Click [Exprn] and select the GeTimeZone() function from the Functions list at the Filter and Expression Builder. Make sure you close the function off with a right-parenthesis. When you [GO] back to the Template, you will see a blue small "e" in the Field-1 column, and the GeTimeZone() function in the Field Replace Expression column.

Secondary example: GoldMine® field: Contact. Incoming names are coming in with the Mr. or Mrs. or Ms. in front of them and you wish to strip it off. You would first map the Incoming field to the GoldMine® field. Then click [Exprn] and select the StripMrMs() function. Make sure you close the function off with a right-parenthesis. The Field-1 column won't show the small "e" because you have a field mapped to it. But you will see the StripMrMs() function call in the Field Replace Expression column.

Please note that all fields of the GoldMine® record which are receiving Incoming values can be used in your Field Replace Expression. You can also use any of the Incoming fields. For example, the following Total Sale Amount could be placed into the UserDef01 field:

Ltrim(Str(InFile->Quantity * InFile->UnitPrice, 12, 2)) This multiplies the Quantity times the Unit Price, uses the Str() function to turn that result from a numeric to a character value (because UserDef01 is a character-type field), and then trims off leading spaces with the Ltrim() function.

Previously we discussed how GoldBox-5 only imports into Contact1 or Contact2 fields, even if you are Attaching to Tab files. This is important to remember when keying in a Field Replace Expression. Always write the expression using the actual Contact1 or Contact2 fields! As an example, when importing into Details, the Detail value is temporarily stored in the Updater File's Contact2->PrevResult and the Reference in Contact2->Comments. You'll notice that the actual Detail fields, ContSupp->Contact and ContSupp->ContSupRef, don't even appear in the | Fields | list box at the Filter and Expression Builder. Also, when importing NEW Main Contacts and you wish to plug in Tab records, you'll notice that those File and Field names are different as well. The File name begins with GX4_ and the field name is not a standard GoldMine® field name. Example: GX4PROF->PF1_REF (The Reference field of the first Detail record you are plugging in). This point is made as a reminder that when using a field in an expression, always select it from the Fields list box when you are at the Filter and Expression Builder screen.

The pipe character |, which is normally found on the backslash key, is used in the Field Replace Expression for a very specific purpose: When updating the CONTACT1 or CONTACT2 fields, you can replace the Target field with an expression instead of the Updater field value. The pipe is used to split the Expression into 2 separate expressions in case you first want to use one during Phase 1, when importing into Updater, then another during Phase 3, when updating the Target Contact file. Even if you are not using a Phase 1 expression, you must still start the expression with the pipe so GoldBox-5 sees it as an Update expression and only uses it during Phase 3. Example:

 

str(val(contact2->userdef01),8) | iif(val(c2upd->userdef01)=0, 'X', c2upd->userdef01)

­

pipe

The statement to the left of the pipe is evaluated during the Phase 1 Import into Updater, which replaces Updater's User-Defined 1 with the incoming number padded by up to 8 leading spaces.

The statement on the right of the pipe is ignored during the Phase 1 Import, but is evaluated at the Phase 3 Update, where Target's fields are replaced by Updater values. The expression says: If the numeric value of the Updater value is zero, EMPTY is written into the Target's User-Defined 1. Otherwise, the Updater's User-Defined 1 value is used. Important points when using this powerful feature:

 

[Lock] Allows you to lock, or freeze, a number of columns starting from the left. They will stay frozen to the left as you scroll right in the Browse window. Key in zero to unfreeze all columns.

 

Black Buttons:

[>>] Moves ahead 1 record in the Incoming file. Click the [25] to move 25 records ahead.

[<<] Moves back 1 record in the Incoming file. Click the [25] to move 25 records backward.

[Browse Incoming] Allows you to open the Incoming File in the GXW Browser. Here, you can view the entire record, locate any record, etc.

 

Green Buttons:

[Blank] This is a toggle. Inserts a small "b" in the GoldMine® Field Description column, and also inserts a pipe expression at the Field Replace Expression column. We discussed pipe expressions above in the [Exprn] button section, so this is a great way to see what is meant by a pipe expression and how one is properly written. This expression means: If the Updater value is blank, do not blank out the corresponding Target value. When you toggle this off, the "b" is removed and so is the expression.

[TgtVal] This is a toggle. Inserts a small "v" in the GoldMine® Field Description column, and also inserts a pipe expression at the Field Replace Expression column. We discussed pipe expressions above in the [Exprn] button section, so this is a great way to see what is meant by a pipe expression and how one is properly written. This expression means: If the Target value is not blank (has something in it), do not update it with the Updater value. When you toggle this off, the "v" is removed and so is the expression.

[NoteAp] This is a toggle. When you are updating Notes, the default GX5 uses is to completely overwrite the Target Main Note with the Incoming Note value. However, this button allows you to append to an existing Target Note value. When you select it, the GoldMine® Field Description column will read: NOTES {NotAp} APPEND TO. Also, the Len column for this field will read -10. When you toggle it off, the GoldMine® Field Description column will read: NOTES {NotAp} OVERWRITE. The Len column will read 10. Later, at the Update Setup Screen, several check boxes are displayed for Notes updating, and these will be discussed later. Incidentally, the {NotAp} in the GoldMine® Field Description column does not mean Not Append. It is just an indicator to press the [NoteAp] button to change.

[Incrmnt] This is a toggle. It is active for Numeric fields only. Allows you to increment the Target field's numeric value (add to it) instead of completely replacing it. You could do this with a pipe expression too but this is so much easier. The word *INCREMENT* appears in the Field-2 column when this is toggled on.

[Shield] This is a toggle. It always means, when toggled on: Never update the corresponding Target field. The letter 'X' will appear in the GoldMine® Field Description column. This is a very powerful option, used for two particular situations when updating.

Situation #1: You are updating certain Main Contact fields, but you want to add those records which didn't find a match as full records into your Main Contact File. Example: You import 25 fields into Updater. For those records which did find a match in Target, you only want to update 5 fields. You should press [Shield] at the other 20 fields so they do not get updated. For an Updater record which did not find a match, you want all 25 field values to go in on the New record, the one which gets added into Target on a No Match. A check box called Ö Records finding NO MATCH: Add as NEW? Ö appears at the Update Setup Screen, which is discussed later. It is related to the [Shield] button.

Situation #2: You want to 'dump' incoming data into Updater fields so you can use their values in pipe expressions. For example: You are updating GoldMine® from an accounting system. You track both Prospects and Clients in the same Contact File. Prospects and Clients are assigned ID numbers by the accounting system, but when a Prospect becomes a Client, the ID number changes. The record match is in Key1, the ID number. When Prospects become Clients, the accounting system gives you a file with the old ID number and the new one. You want to match to Target using the old ID number found in Key1, then change that ID number to the new one, all in the same operation. Sounds impossible but GoldBox-5 can handle this. Plug the old ID number into Key1. Plug the new ID number into UserDef01, then click the [Shield] button so the 'X' appears in the Description column. At the Key1 field, click [Exprn] and key in a pipe expression like so: | C2upd->UserDef01 The effect of this is: During Phase 3 of the operation, GX5 finds a match in Target using Key1, then replaces the Key1 field with the result of your pipe expression. The Target's UserDef01 field does not get updated, because you shielded it.

 

Red Button:

[Quit] Always select this button to exit from the Field Mapping Template. You are taken back to the Import Setup Screen.

Remember that you can always press [Map Fields] to go back to the Field Mapping Template, and your previous work is automatically saved.

 

Update Setup Screen

IMPORT / UPDATE

Import Setup Screen

[Update Filter] For Update Main Fields: This is optional and most of the time you will ignore it. The filter is examined during the Phase 3 Update. There is a twist with this filter, so please be careful. The twist is: If the result of the filter is TRUE, the Target record which Updater is matched to is bypassed and is not updated at all. For example: You use Key Field #2 to track the type of contact - Vendor or Client. You don't want to update Vendor records. Filter is: Upper(Trim(Contact1->Key2)) == "VENDOR"

This button operates in a completely different way for Attaching to Tabs.

Tab Attach, Update, Dupe Detection

[Record Match] Required entry. The most critical item on this form. Click and select a Field expression for matching an Updater record to a Target record. Pick fields only from the Fields list box. You can string fields together, or even pieces of them together. The result of the Record Match cannot exceed 100 characters.

If you are Attaching to Tabs, the Record Match is defaulted to the field(s) you selected for Record Match at the Field Mapping Template. There are 21 fields you can choose from when Attaching to Tabs: Company, Contact, Phone1, Secr, Key1 through Key5, Country, Accountno and UserDef01 through UserDef10.

For Updating Main Fields, you can use any of the Main fields in the match, including user-defined fields.

Naturally the best match is a single field such as an Account number or ID number. But you can go for a multi-field match like so: Contact1->Company + Contact1->Contact + SubStr(Contact1->Phone1, 1, 20)

You can also use the GoldMine® ACCOUNTNO field as Record Match. Sometimes you might generate the Incoming file from your GoldMine® data itself, via a GoldBox-5 Export. For example, maybe you imported (in GoldMine® or GoldBox-5) and the Incoming data was all in UPPER case. You want to make the fields Proper case. Best way to do this is export out the UPPER-cased fields along with the GoldMine® Account #, and use the ACCOUNTNO field as Record Match. Plug the other fields in where they go, and press the [Proper] button for each. Return to the Import Setup Screen, press [GO], and at this button of the white screen, [Record Match], you would choose Contact1->Accountno as the Record Match field.

Ö Literal Match? Ö Very rarely used. GX5 automatically does an UPPER case match by default. You would only check this off if, incredibly, an Incoming match field was case sensitive. For example: ABCDE12345 is seen as different from abcde12345. As mentioned, rarely ever the case.

Ö Do Not ZAP? Ö Very rarely used. By default, GX5 clears out the Updater Contact File just prior to 'parking' the incoming records in it, during Phase 1. Normally that is exactly what you want. However, there are 2 scenarios where you would select this option as a time and processing saver:

Scenario #1: You are doing an Update of Main Fields and the Incoming data is spread across 2 or more files. For this example, let's say it is contained in 2 identically formatted files, called InFileA.dbf and InFileB.dbf. You would first create a Setup for bringing in InFileA data. When you get to the Update Setup Screen, do not select this option. DO select the option to STOP after Import of records into Updater. Run the operation. Now create a Setup to bring in the InFileB data. At the Update Setup Screen, select this option. Run the operation. The effect of this is: When bringing in the InFileA data, GX5 exits out of the operation after 'parking' the records in Updater – Phase 2 and Phase 3 never occur. When bringing in the InFileB data, GX5 won't clear out the Updater Contact File, but will add the InFileB data to it. The records already in Updater are from the InFileA operation. For the InFileB operation, the InFileB data is added to Updater and Phase 2 and 3 of the operation proceed normally. This saves some processing time, since the Phase 2 and Phase 3 portions of the operation did not occur for the InFileA data. It happens all at once during the InFileB operation.

Scenario #2: You are importing NEW Main Contacts. Your Incoming File, let's call it InFile.dbf, contains 10 sets of fields to track equipment. You want to put these in as Detail records. GoldBox-5 nicely handles the first 6 pieces of equipment, because you can 'plug in' up to 6 Details. Now you have 4 sets of fields left, and you must make a separate pass over each.

For bringing in Set # 7: Select the option to STOP after Import of records into Updater.

For bringing in Set # 8: Select the Do Not ZAP option and the option to STOP after Import of records into Updater.

For bringing in Set # 9: Select the Do Not ZAP option and the option to STOP after Import of records into Updater.

For bringing in Set # 10: Select the Do Not ZAP option only.

The effect of this is that you do only a 'park' of incoming data for Sets # 7, 8 and 9. Set # 10's operation brings in the Set # 10 fields, then proceeds normally with Record Match (Phase 2) and Attach (Phase 3).

Ö STOP after Import of records into Updater? Ö Normally never selected. This means that after the records come into Updater during Phase 1, Phase 2 and Phase 3 never run. The records are imported into the Updater File, then GX5 exits (or continues with the next Q-file entry). 1st reason to use: You are importing Lookup lists for fields that already exist in the Target file. Please see the [Lookup] button section at the Field Mapping Template for more information. Second reason to use: You are doing multiple passes over the Incoming File to attach Tab records. Please see the information for the Ö Do Not ZAP? Ö checkbox above for an illustration of how this is used.

 

The following items appear only for Update Main Fields:

Ö Records finding NO MATCH: Add as NEW? Ö You can have GoldBox-5 add an unmatched record as a New one to the Target Contact File. There are 2 reasons you may want to do this: First, you want to update some Target fields on a match, but add a new one for unmatched. Or, you want to stop a dupe from getting into the Target file on an import. In the first case, you would [Shield] all fields you do not want updated on a match. See the [Shield] button section above. In the second case, where you want to stop a dupe from getting into the Target file, you would [Shield] all fields.

Note: If you import an email address and plug it into its spot (actually the Contact2->NextAction field), it will be attached properly when the New record is added. Normally you would [Shield] this field at the Field Mapping Template. However, this is not how to add email addresses to existing records. You would choose {Batch} {Import/Update} {Email Addresses} and attach them just like any other Tab type.

Ö MULTIPLE Matches in Target: Update ALL? Ö Normally the Updater record will find only 1 match in Target, which is ideal and is the default way GX5 operates. Even if there is another Target record which matches, it is never accessed. In some rare cases, users track multiple records in Target which have the same Record Match. This option lets you update all of them with the Updater record.

Ö PRE-SAVE Target fields to a History Note? Ö Before the Target fields get overwritten from Updater, you can choose to save the original values to a History Note as a kind of audit trail.

Ö Notes: Insert Date Banner above New Note? Ö If you are appending a single Note entry, such as a memo field, to the TOP of the existing Target Main Note, you would normally check this box. If you are appending multiple text lines into the Target Main Note, you would normally not select it, otherwise you would have a Date Banner in between each line.

Ö Notes: Append entry to the TOP of existing? Ö This is checked by default, and assumes you are updating the existing Target Main Note with a single entry, such as a memo field. If you are appending multiple text lines into the Target Main Note, you would normally de-select it so the lines appear chronologically, one after the other.

Ö Notes: 1 blank line btwn existing and New? Ö If you are appending a single Note entry, such as a memo field, to the existing Target Main Note, you would normally check this box. If you are appending multiple text lines into the Target Main Note, you would normally not select it, otherwise you would have a blank line in between each line.

Ö Update the Target w/ NO Index Tags Active? Ö By default, GX5 performs the Update of Contact1 and Contact2 fields with the indexes active. This is normally fine, and it lets other users into GoldMine® while the Update is proceeding. For a possible increase in speed, you might want to select this option if you are updating a large number of indexed fields, namely, the Company, Contact, Phone1, LastName, City, Zip and the 5 Key fields. Also, if you are adding Non-Matched records as new and you suspect a large number of NoMatches, again you may wish to select. Choosing this option cuts loose the Contact1 index file, then resets it from scratch after the Update is completed. It is strictly used as a possible speedup of the process. If selected, no other users can access GoldMine® while the Update is processing!

Ö MATCHES: Replace an Incoming Field? Ö When selected, replaces a field in the Incoming File wiith a value. Example: On matched records, you wish to replace an Incoming Field called GMACCTNO with the GoldMine Account Number. When this is selected, you cannot select the NO MATCH option below.

Ö NO MATCHES: Replace an Incoming Field? Ö When selected, replaces a field in the Incoming File with a value. Example: On unmatched records, you wish to replace an Incoming Field called FULLIMPORT with an X. You will then be able to use that value in the Primary Filter of the {Import} {NEW Main Contacts} so it will only bring in those records not found in GoldMine. Your Primary Filter at the Import Setup of NEW Main Contacts with Tab Record Plug-in would be: Incoming->Fullimport = "X" (Naturally, you would replace the word "Incoming" with your actual File Name). When this is selected, you cannot select the MATCH option above, but you can use the DEFINE option to populate fields on a Record Match.

Ö DEFINE: Replace Incoming Fields? Ö When selected, on a Record Match, you can replace any number of defined Incoming fields with values. If selected, press the [Define Fields] button to enter your fields. Key the Incoming Field into the first available column, then press {Exprn] and key in the Field Replace Expression. You will notice that the Launch ID automatically is populated and you should leave it as is. This is the same file used for Org Chart Filters, so if you see entries in the file beginning with OC, that is normal. GoldBox-5 will not evaluate them for the Update operation. Please note that in your Field Replace Expression, you can evaluate or use values from any Contact1 and Contact2 fields in the Target File (designated with the file pointer Contact1-> or Contact2), OR values from the Contact1 and Contact2 fields in the Updater File (designated with the file pointer C1upd-> or C2upd).

[Incoming Field] This is the field in the Incoming File you wish to replace. You will be prompted for the Field and the Field Replace Expression.

[Incoming Record Match Field Expression] An index tag in the Incoming File is created based on this expression. That allows GoldBox-5 to take the Record Match value from an Updater record and find it in the Incoming File immediately, so its field can be replaced. Please ensure that the Record Match result for the Updater is the same length as this expression result. Example: Your Record Match expression is: Contact1->Company + Contact1->Contact. Each of these fields is 40 characters. But in the Incoming File, the Company field is only 35 characters and the Contact is 30. To match up the lengths, your expression here would be: PadR(Incoming->CompName, 40) + PadR(Incoming->ClientName, 40) (Again, this assumes the incoming DBF name and the field names - substitute your own).

[GO] Always click this button to exit so that your item entries are saved. You are returned to the Import Setup Screen. You are now ready to Run the Operation, assuming that your Import Setup Screen and Field Mapping Template are complete.

Other Information on Updating Main Fields:

You can do further processing on records, for example, which did not find a match. GoldBox-5 flags unmatched records by putting the word NOMATCH in the CREATEBY field of the Updater records. If desired, you could then run a GX5 automatic export of these records, re-import them into Updater, then use a different matching scheme to try and find a match in the Main Contact File. If you are going to run a GX5 Export on records in Updater, remember to first pass in a call to rebuild the Updater indexes, since GX5 does not maintain Updater's indexes (greatly increases the speed of the operation). Typically you'd have 3 entries in a Q-file for the Index Rebuild, the Export and the Import/Update using a different Record Match. You can also use this method if you want to run an update against more than 1 Target file. You could export NOMATCHes out of Updater and use that as the Incoming File to match against a different Contact File. Typical case: You track Clients in one Contact File and Prospects in another.

 

Plug-In Tab Records

This rectangle and its associated 6 check boxes appear at the bottom of the Import Setup Screen only when you are importing NEW Main Contacts. It is not visible for any other scenario.

PLEASE NOTE: If your incoming Tab data is held in related tables, you must use the standard routine of importing into Updater, then Attaching.

The "plug in" of related Tab records at the same time you are importing full Main Contact records puts the GoldBox-5 import in a class by itself. This situation is ideal if you are importing from a flat file, such as a D&B file, where Tab data is held in sets of fields in the same record as the Main data. It precludes you from having to make separate passes over the flat file into Updater, and then Attaching. It is also handy if you just want to "hard code" Tab records as new contacts are imported (for example, an A/P Track or Scheduled Callback). The process allows you to plug in, all at the same time, up to:

Tab Record Tab Critical Field(s)

The fields for the Tab record plug-ins appear after the Main and User-defined fields at the Field Mapping Template (the "black screen"). Simply go to as many records as you need and plug in their values, just as if they were incoming Main or User-defined values. You can press [Exprn] at any fields in the plug-in area and hardcode an expression. Basically, all the keys and capabilities active for the Main and User-defined fields are valid here, except for [Lookup] (add to Lookup List).

GoldBox-5 has hardcoded logic in it to examine the one critical field for each Tab record type to determine whether the record actually gets added. In other words, if that critical field is blank, the record is not added. Please examine the above table to be aware of the critical field(s) for each Tab record type.

Please note that if your incoming flat file has, for example, 17 sets of fields for Additional Contacts per Main contact, you can still get them all in. You would bring in 15 with this method, then make a separate pass over each of the 2 remaining into Updater, and Attach.

To plug in Tab records, check the appropriate item in the PLUG IN rectangle.

The following is specific information for each Tab file type and is germane when you are at the Field Mapping Template:

Additional Contacts:

You can plug in up to 15 Additional Contacts. The CONTACT field must contain a value in order for GoldBox-5 to attach the record.

The fields for this Record Type are pretty straightforward. Please note that if you plug in a value at the EMAIL field, GoldBox-5 will automatically create the related E-mail Address Detail record.

 

Details:

You can plug in up to 15 Detail records. The DETAIL and REFERENCE fields must both contain values in order for GoldBox-5 to attach the record.

Normally you need to hardcode the DETAIL value, since this is used as the Category, or Type, of Detail record. Press [Exprn] and key in a string surrounded by quotes. Example: "Insurance Policy"

If you want the REFERENCE value to be included in a Lookup table, press [Exprn] at the field directly under the PROF DATE field and key in "Y" at the Expression prompt. You may wish to do this when the Reference value is generic and applies to many Details. You normally don't want this if the Reference is unique to the Contact, such as a policy #, serial #, etc.

The DETL DATE field defaults to the Creation Date. If you want to put a more meaningful date in the Detail, such as an Expiration Date or Birth Date, plug in the incoming date value directly. If the incoming date is contained in a Character field, remember that you can press [DtMask] to have GX5 format it on the fly.

Please note that the DEAR, FAX, ADDRESS3 and MERGECODES fields appear in the Field Mapping Template even though GoldMine® does not yet display them. GoldBox-5 operations will address these fields in Exports, Global Replace, Group Builds, etc.

 

Calendar Items:

You can plug in up to 15 Scheduled Calendar Activities. The ACTIVITY DATE field must contain a value in order for GoldBox-5 to attach the record.

The RECORD TYPE field usually must be hardcoded, unless your incoming data tracks the type of activity. This field in the Template is 20 characters just in case you need to do Field Translation on an incoming activity type. To hardcode a Record Type, key in one of the following single-letter codes after pressing [Exprn]:

"A" (for Appointment or Meeting)

"C" (for Call)

"E" (for Event)

"M" (for Message - rarely used for imports)

"O" (for Other Action)

"S" (for Scheduled Forecast Sale)

"T" (for Next Action)

The ACTIVITY DURATION field, if used, is in minutes only. For example, a 3 and a half-hour activity would be 210 minutes.

The ACTIVITY COLOR defaults to blue. Press [Exprn] and hardcode a single-character code if you want your activity to be a different color. Note: Since the single and double quotes are codes, use square brackets as the string delimiters instead, like so:

[(] Lt. Gray

[.] Dark Gray

[/] Black

["] Red

[%] Yellow

[+] Green-Yellow

[$] Lt. Green

[*] Dark Green

[#] Lt. Cyan

[&] Dark Cyan

[ ] Blue (this is the default)

[,] Dark Blue

[!] Violet

[-] Dark Violet

[)] Maroon

['] White

The SCHEDULED CONTACT NAME defaults to the Main Contact but you can plug in an Additional Contact name if desired.

 

History Items:

You can plug in up to 15 Completed History Activities. The ACTIVITY DATE field must contain a value in order for GoldBox-5 to attach the record.

The RECORD TYPE field usually must be hardcoded, unless your incoming data tracks the type of activity. This field in the Template is 20 characters just in case you need to do Field Translation on an incoming activity type. To hardcode a Record Type, key in one of the following single-letter codes after pressing [Exprn]:

"A" (for Appointment or Meeting)

"C" (for Call)

"E" (for Event)

"F" (for Literature Fullfillment)

"L" (for a Sent Letter)

"M" (for Message - rarely used for imports)

"O" (for Other Action)

"S" (for Completed Forecast Sale)

"T" (for Next Action)

 

Linked Document:

You can plug in 1 Linked Document. The DOCUMENT DRV:\PATH\FILE field must contain a value in order for GoldBox-5 to attach the record.

The SOFTWARE PKG NAME field is usually hardcoded and is something like: "Microsoft Word 6"

The DOCUMENT DESCRIPTION is usually hardcoded and might be: "Incoming History Narrative"

The DOCUMNT 3-LTR EXTENSION defaults to "doc" if left blank (for MS Word document). It's the extension code that Windows uses to correspond to file types. Other valid entries might be "txt" or "zip".

For the DOCUMENT DRV:\PATH\FILE field: If you are mapping to existing files, just import the value from the incoming file. If you are CREATING a disk file from an incoming memo (Notes) field, for example, press [Exprn] and hardcode a path, but leave the file name OFF! Please note that the path must

already exist on your system - GoldBox-5 will not create it. An example might be: "C:\INCOMING\DOCLINKS\" Please note that GoldBox-5 will add the final backslash if you leave it off.

The GoldMine® USER NAME is self-explanatory; the default if left blank is the name assigned by your GoldBox-5 login.

If you are creating a disk file from incoming text you must select the incoming value (usually a memo (Notes) field) and pop it into the NOTES field. When GoldBox-5 sees something in NOTES, it creates a unique file name and places it in the directory you keyed in at the DOCUMENT DRV:\PATH\FILE field.

The DON'T CREATE FILE? Column is used only when you want to import descriptive text into the Notes of the Linked Document, but don't want to create it as a text file. Press [Exprn] at this column and key in: "Y"

 

Automated Process Tracks:

You can plug in 2 different Automated Process (A/P) Tracks. The TRACK # field must contain a value in order for GoldBox-5 to attach the record.

You will not be importing an incoming value into any of the fields of the A/P Track. All values must be hardcoded by pressing [Exprn] and keying in a literal string, surrounded by quotes. To determine the hardcoded values, please do the following:

>> If you don't already have an A/P Track for a contact to use as a guide, add one in GoldMine.

>> At {Misc} {GXW Browser}, browse the CONTSUPP file. Press [View] to select the CONTSPFD tag.

>> Press [Find] to FIND the A/P Tracks. At the prompt, key in a capital letter E . View the records with E in the RECTYPE field until you get to the one you wish to assign. Press [Write] to display the record. Print this as a guide for the next step.

>> Back at the Field Mapping Template, using this output as a guide, hardcode the corresponding values into the A/P Field Template by pressing [Exprn] and entering the literal value surrounded by quotes. Notice that the Fld # in the Description column corresponds to the field # on the record printout. Any field that is blank in the output won't need a value at the Field Mapping Template.

 

Tab Attach, Update, Dupe Detection

The mechanism for attaching, or adding, new records into the related Tab Files is virtually identical to the Update procedure so you should review the above information before proceeding. It is most critical, when you are presented with the Import sub-menu, that you choose that particular Tab file and NOT the 2nd choice (which says Update Main Fields).

The following will note those parts of the process which differ from the Update.

The Field Mapping Template (black screen) which displays for each type of Tab File looks different from the standard list of fields you see for a regular Update of Main fields. It is broken down into 2 sections:

1. Tab File fields which can be mapped into.

2. Record Match fields.

TAB FIELDS WHICH CAN BE MAPPED INTO:

These always appear first. The following defines the particular Tab fields and any information pertinent to them which is not immediately apparent. Please remember to focus your attention on the GoldMine® Field Description column, not the Dbf-Name and Field-name columns. The latter 2 columns display where in Updater the incoming data is 'parked', during Phase 1 of the operation.

RECORD MATCH FIELDS:

The 2nd section of the Field Mapping Template displays the 21 fields which can be used for record matching. Pay no attention to the values in the Dbf-Name / Field-Name columns - it's what is in the {Description} column that counts. Wanted to mention, as an example, that you will see in the GoldMine® Field Description column that ACCOUNTNO is a valid Record Match field. But if you look in the Dbf-Name / Field-Name fields, you will see CONTACT1 / SOURCE !! Don't worry - GX5 knows how to handle this and your Accountno Record Match will work perfectly.

GoldBox-5 forces you to map into at least one of these 21 fields. An advantage to designating certain fields for Record Match is that GoldBox-5 automatically assembles the [Record Match] expression at the Update Setup Screen from the mapped fields here. Normally you never have to alter it. Remember: The result of your Record Match cannot exceed 100 characters!!

 

UPDATE / NOT-ADD TABS:

There is another capability in this procedure that actually allows you to stop a duplicate Tab record from going in, or lets you update fields of an existing Tab record. This feature exists for Additional Contacts, Details, Calendar and History.

If you are interested ONLY in updating Tab records, and not adding a new one if no match is found, you may be able to use FUNCTION / VLink2dBase()

Here's how the regular Update/Not-Add works:

Normally, if you are simply Attaching new Tab records, the [Update Filter] button at the Update Setup Screen is ignored. However, when you wish to stop a dupe or update a found Tab record, you MUST key in an expression. When GoldBox-5 is running through the Phase 3 step of Attaching and it sees something in this filter, it takes a little side trip. Example: You are Attaching Details and you want to update some of the Expanded fields if the Detail already exists.

When you are just Attaching records (the filter is blank), GoldBox-5 takes the Updater data and adds the Detail record directly into CONTSUPP, the GoldMine® Supplemental File. But if there is a filter it doesn't do that - instead, it first adds the Updater data into a "ghost" Detail record in a data file called UX. The UX file will contain only 1 record - the current one you wish to evaluate. This allows you to compare the UX record against the existing Tab records attached to the Main Contact. Let's say you already have 7 Detail records attached to the Main Contact. GoldBox-5 will scroll through those 7 Detail records and see if the filter finds a match on one.

A typical comparison filter for Detail records would be: UX->Contact == ContSupp->Contact .AND. UX->ContSupRef == ContSupp->ContSupRef

This is comparing the Detail and Reference fields. It is up to you to determine what constitutes a match from the available fields of a Tab record. Recommend you always use the double-equal (==) when comparing fields to ensure an exact match.

When you click [GO] to exit the Filter and Expression Builder, a small dialog box called "Tab Record Match" pops up if you have keyed in a filter.

If you select * DO NOT ADD if Found * that's exactly what will happen. If, based on your filter, the Detail is found, the incoming Detail is not added. That's how you stop a dupe from coming in.

If you select * UPDATE the Found Tab Record * you would then click the [Mark Fields to Update] button. GX5 will display a field grid, and all you have to is put the letter 'X' in the first column next to the field you want updated. It's very rare, but you can also click the [Exprn] button and replace the field with the expression result.

Geek Stuff: The field grid mentioned above is actually the file GUPDATE.DBF with GUPDATE.MDX, a GX5 system file. GoldBox-5 transparently creates a duplicate of this file and its index so it stays attached to your Saved Setup. This allows you to have multiple Tab updating scenarios for the same Tab type, such as Details. You may want to update certain types of Details one way, and certain other types another way. The duplicate files of GUPDATE.DBF/MDX are named UU(Launch-ID).DBF/MDX. If your Saved Setup Launch ID is IGPROF01, the UU files would be UUPROF01.DBF/MDX.

Please note that if you have this set up and later wish to alter it, you must click the [Update Filter] button to cause the "Tab Record Match" box to pop up - even if you are not changing the filter.

If GoldBox-5 does not find a match, the Tab record is added as new.

 

Attach Additional Contacts

1. The {Addl Contact Name} field MUST be imported into.

2. The {Dear/Salutation} field has a literal expression in it. The expression strips out the first word of the {Addl Contact Name} field and puts it here. You can clear this out if desired - click on [Exprn] and remove the expression from the prompt.

3. The {Email Address} field can directly receive an incoming address, and GoldBox- 5 handles the creation of the related "E-mail Address" Detail record transparently.

 

Attach Details

1. The {Detail} field is usually a hardcoded text label so you'll normally start by clicking [Exprn] here. At the Filter & Expression Builder, key in the Detail Type, surrounded by quotes. For example: "Insurance Policy" or "Invoice Summary" or "Property Type" or "Equipment Type". The Detail field categorizes the Detail record so you can easily ascertain its usage. It also determines which custom labels are assigned to Expanded Fields and which Tabs relate to the Detail Type.

2. The {Reference} field MUST be imported into. This is normally the most important piece of information of the Detail record (especially because it is indexed and can be easily searched).

3. The {Detl Date} field defaults to the creation date of the Detail but GoldBox-5 lets you use this to store a more meaningful date, such as an Expiration Date, Birth Date, Renewal Date, etc.

4. The rest of the fields are Expanded fields. Typically you would first create a "dummy" Detail record in GoldMine® of the same Detail Type, click on P-roperties, S-etup, and label these fields for your purpose. Then, Alt-Tab or click back and forth between GoldMine® and GoldBox-5 so you know where to plug in the incoming fields. If you do this, please make sure the Detail field described above is exactly the same name and spelling as the "dummy" one you created in GoldMine! Otherwise, the custom labels (or Tab) won't match up to the imported Detail records.

Ö Add Detail Reference value into Lookup Table? Ö At the Update Setup Screen for Attaching Details, this check box appears. It allows you to create nested lookups for the Reference field. Normally you would only do this if the Reference data is general, and will occur more than once in your system. If the Reference is specific, for example an Insurance Policy Number, you normally don't want to create a lookup on the Reference for these types of Details.

Please note that because GoldMine® Software added a Dear, Fax, Address3 and Merge Codes field to Additional Contacts, these also exist in a Detail (since both record types are stored in the same CONTSUPP.DBF file). Although they appear in the Field Template and you can import into them, GoldMine®, as of this date, does not allow direct access of these fields. You can access them with any GoldBox-5 operation, including via the GXW Browser.

 

Attach Email Addresses

You may never need to use this one because GoldBox-5 provides an Email Address field for importing new Contact records (Contact2->NextAction field) and provides a field when importing into Additional Contacts. GoldBox-5 transparently handles the creation of the Email Detail record. Typically you would only use this if your incoming Email addresses were in a separate related table.

1. The {Email Address} field MUST be imported into.

2. The {Primary Address Flag} field defaults to making the incoming Email address the Primary address if that is what you selected when creating the Import Setup. At the Import Field Mapping Template, press [Exprn] and change the 2nd position to a 0 if you don't want this. There are also other settings related to the Email Address and these are discussed below.

The ContSupp->Zip field stores the settings for the Email Address, as either a 1 or a 0. Currently there are a maximum of 4 settings.

Position 1 of the Zip field is the indicator for RTF format. Normally this is 0, or no RTF format.

Position 2 is the indicator for Primary - 1 = Primary, 0 = not primary.

Position 3 is the indicator to Wrap Lines. 1 = Wrap, 0 = do not wrap.

Position 4 is the Mime indicator. 1 = Mime on, 0 = Mime off. When Mime is off, Wrap and RTF are also off.

A typical setting for a Primary Email Address is: 0111

This indicates Primary, Mime on, Wrap on, and RTF off.

GoldMine® sets Mime on, Wrap on by default, and GoldBox mimics this. You can, however, alter these settings to suit your needs.

 

NOTE: GoldBox-5 will not check if you already have an email address marked as Primary, since this would require that GoldMine® be open, which could greatly slow down the Import. Therefore, after the Import, you may wish to run a Group Builder using MultiTab() to determine those contacts who have more than one email address marked as Primary. You could then activate the Group and choose which email address to deactivate as Primary. Add an entry to the {File} {Sub-Filters} like so:

Definition Label: EMAILPRM/1

Expression: ContSupp->Contact = "E-mail Address" .AND. SubStr(ContSupp->Zip, 2, 1) == "1"

Go to {Batch} {Group Builder}, choose the Main File as Master.

The Primary Filter for the Group Build would be:

MultiTab("EMAILPRM", "CONTSUPP", "P", 2)

This will return a TRUE if there are at least 2 records marked as Primary, meaning the Contact will be added to the Group.

 

Attach Web Sites

You may never need to use this one because GoldBox-5 provides a Web Site field for importing new Contact records (Contact2->PrevResult field). GoldBox-5 transparently handles the creation of the Web Site Detail record in that case. Typically you would only use this if your incoming Web Sites were in a separate related table, or were longer than 65 characters. Please note that GoldBox-5 will always put the incoming Web Site address in the Notes section of the Web Site Detail record. This allows you to use the Detail Reference as a description. For example, you may want to map a company or contact there.

1. The {Web Site Address} field MUST be imported into.

2. The {Primary Address Flag} field defaults to making the incoming Web Site the Primary one. Press [Exprn] and remove the expression if you don't want this.

NOTE: GoldBox-5 will not check if you already have a Web Site marked as Primary, since this would require that GoldMine® be open, which could greatly slow down the Import. Therefore, after the Import, you may wish to run a Group Builder using MultiTab() to determine those contacts who have more than one Web Site marked as Primary. You could then activate the Group and choose which Web Site to deactivate as Primary. Add an entry to the {File} {Sub-Filters} like so:

Definition Label: WEBPRIME/1

Expression: ContSupp->Contact = "Web Site" .AND. SubStr(ContSupp->Zip, 2, 1) == "1"

Go to {Batch} {Group Builder}, choose the Main File as Master.

The Primary Filter for the Group Build would be:

MultiTab("WEBPRIME", "CONTSUPP", "P", 2)

This will return a TRUE if there are at least 2 records marked as Primary, meaning the Contact will be added to the Group.

 

Attach Linked Documents

1. The {S/W Pkg Name} is optional, and might be something like "Microsoft Word 6". Press [Exprn] to hardcode in a value, unless your incoming file has a corresponding field.

2. The {Document Description} can also be hardcoded with a value such as "Imported Documents", unless you have a corresponding field in the incoming file.

3. The {Document 3-Ltr Extension} defaults to "doc", or a Word document. Press [Exprn] to put in another extension, such as "txt", if desired.

4. The {DOCUMENT Drv:\Path\File} MUST be imported into. See below for creating a document from incoming text, as from a dBase memo. In that case only the path is keyed in and may be hardcoded.

5. The {Overflow Drv:\Path\File} is only used if your incoming file name exceeds 65 characters. Let's say your Incoming File is InFile.dbf and the Document File is stored in a field called DocFile. You would map this to the field mentioned above, the {DOCUMENT Drv:\Path\File}. At this field, however, you would not map it. Instead, press the [Exprn] button and key in: SubStr(InFile->DocFile, 66).

6. The {GoldMine® User Name} should be hardcoded with the user you want the documents assigned to.

7. The is left blank if you just want to link to existing documents. If you want to create documents from incoming text, import it here. You also must ensure the {Document Path\Name} contains only a path, and not a document name! This path must already exist on your system - GoldBox-5 won't create it. Please ensure you are using the tilde-translated short directory names, as GoldBox-5 won't recognize the long version of a path name! The file created is standard ASCII so you may use 'txt' as the 3-Ltr extension to have the file opened in NotePad, although the default is 'doc'. GoldBox-5 creates a random unique file name for the created document. When you go into GoldMine® after the records are added and click on the Linked Document, GoldMine® will open the correct file. If you wish to archive existing Main Notes, this is a great way to do it! You would export out the Acct # and Notes field to create the Incoming file, then import it back in to create the Linked Documents. The ACCOUNTNO field is the Record Match.

8. The {DON'T CREATE FILE?} column is used only when you want to import descriptive text into the Notes of the Linked Document, but don't want to create it as a text file. Press [Exprn] at this column and key in: "Y"

 

 

 

 

 

 

 

Attach Calendar

1. The {Scheduled GM User} will default to "GOLDBOX5" if you don't key one in. If importing user names, this is an ideal use for the Field Translator, to translate the incoming name to a standard GoldMine® 8-character name.

2. The {Activity START Date} field MUST be imported into.

3. The {Scheduled Contact Name} defaults to the Main Contact name if left blank.

4. If importing into {Fcst Sale Total Amount}, this value is multiplied by the value in {Fcst Sale Unit}, which defaults to 1. That lets you import a Unit Price and have GoldBox-5 calculate the total for you. GoldMine® doesn't store the Unit Price, only the total.

[Activity Color] This appears at the Update Setup Screen. The default is blue, but you can select from 1 of 15 other colors in the list box.

GoldBox-5 prompts you for a Record Type when selecting Import into Calendar. If your incoming data has multiple record types, again you may be able to use the Field Translator to convert them to GoldMine® standard 1-character codes.

 

 

Attach History

1. The {Activity Date} field MUST be imported into.

2. The same information found above for Calendar in the case of {Scheduled GM User} and {Fcst Sale Total Amount} applies here.

As with Calendar, you are prompted for a Record Type when selecting Import into History. This appears as an expression in the first field at the Field Mapping Template, the one called Single-Char Rectype. Directly underneath is a field called Multi-Char Rectype. If you leave it blank, GX5 automatically populates it with the same value as the single-character Record Type. GoldMine® uses this field to track Call types, for example. Some codes: CC = Successfully Completed Call; CI = Incoming Call; CO = Outgoing Call. Please see your GoldMine® manual for more information on Record Type codes. You would click the [Exprn] button and hardcode in the code of your choice. Or, if this info is tracked in the Incoming File, you can build a Field Translation Table by mapping the field, then clicking the [Translt] button. NOTE: The Multi-Char Rectype is temporarily stored in the Contact1->Zip field, so you only have 10 characters to work with if you are translating. Make sure your entries in the Translator Table do not exceed 10 characters for this particular field.

 

 

Attach A/P Tracks

The {TRACK #} field must contain a value in order for GoldBox-5 to attach the record.

There is no Incoming file for a A/P Track since it is specific to GoldMine. Therefore, you would first create the incoming file of just a Record Match, typically the ACCOUNTNO, by doing a GoldBox-5 Export. Use the Export's global filter to determine which records will receive the Track (remember, you can use the InGroup() function if you have already made a Group of targeted records).

Please see the "PLUG IN TAB RECORDS" section and find the label Automated Process Tracks for information on how to setup this Field Mapping Template. The information is identical.

 

 

Attach Referrals

Creation of Referrals is a very rare situation but is possible in GoldBox-5 if the proper conditions are met. All contacts you wish to refer must already exist in the SAME Contact file. Like A/P Tracks, you must generate the Incoming file from your GoldMine® data:

Export the Account # and the Referred Match field from CHILD records. If you want the 'For: ' Referrals in the PARENT record to note something other than the CHILD's Company Name, such as the Contact Name, export that field out as well. There is a place to plug it in at the Field Mapping Template.

For the sake of definition the records you are Referring {To} are called the Parent records. The records being referred to the Parent are Child records. You will be exporting the Child records only.

In order for this to work, a Referred Match value must exist in one field of the Parent and another of the Child records. Further, the Referred Match value must exist in an INDEXED field of the Parent. These include Account #, Company, Contact, Last Name, Phone1, City, Zip and the 5 Key Fields. The Referred Match value for the Child records must NOT exist in the same field as the Parent, but can exist in any other field, even a user-defined field (you can see why importing into Referrals is a rare situation!).

In this example, you wish to refer records to Sales Reps, whose names exist in KEY1 of the Parent records. In the Child records, the Sales Rep names appear in the COMMENTS field, but NOT in KEY1. For Parent records, the COMMENTS field is blank, and this fact is used in the Export filter.

1. Export the Acct #, Comments, and optionally the Contact Name fields to the default file of GMEXDATA.DBF. Your Export filter would be: .NOT. EMPTY(CONTACT2->COMMENTS)

2. Import into Referrals. Plug COMMENTS into the Referred Match field and the ACCOUNTNO into the Recd Match for Account #. These are the only 2 required entries. For the Reference field, GoldBox-5 will put the phrase {GoldBox-5 Referral Import} in by default, but you can plug in anything you want. Also, if you want the Contact Name, for example, of the CHILD records to appear in the 'For:' Referrals (which list out under the PARENT record), plug that in as well. Otherwise the Company Name of the CHILD will appear there.

3. [Referral Tag] This appears at the Update Setup Screen and is required. For this example, select the CONTKEY1 index. The Record Match is already populated with SubStr(Contact1->Source, 1, 20) and should be left alone - it is fine.

Run the procedure and the CHILD records are now referred TO the PARENT records. In GoldMine, the Referral records for the PARENT records will all start with "For:", and there should be multiple entries. The Referral records for the CHILD records will start with "To:" and there should be just one.

 

Attach Record Alerts

Record Alerts can be globally assigned to Contacts by GoldBox-5. See the GoldMine® Help on Record Alerts for more information.

GoldBox-5 creates the Alert reference in the Supplemental File as record type "A".

Before proceeding, you must know the 3-letter Alert Code you wish to assign, because you'll be keying it in as a literal expression.

To create the Incoming File for this attachment, you must first do an Export of the ACCOUNTNO field, based on a Primary Filter for those Contacts to which you want to attach the Alert. The ACCOUNTNO will be used as the Record Match. Suggest keeping the default Export File Name of GMEXDATA.DBF.

When you click {Map Fields} at the Import Setup screen, there are only 3 fields that receive a value, and all of them are by Expression. Press {Exprn} to key in the literal value, surrounded by quotes.

For assigning Alert Code CRH, click {Exprn} and key in: "CRH"

At the next field, press {Exprn} and key in the GoldMine® User Name, such as: "DPETONIC"

These 2 are required entries, and GoldBox-5 will force you to populate them.

The 3rd field is optional and is used if you want a History record to be attached when the User acknowledges the Alert. If you want this, click {Exprn} and key in: "Y"

Go to the Record Match area and map the ACCOUNTNO field to the ACCOUNTNO Record Match field.

When you click {Go} at the Import Setup screen, you are taken to the Update Setup screen (white screen). Normally you will just click {Go} to exit back to the Import Setup screen. GoldBox-5 automatically checks for a duplicate Alert in the Update Filter.

Run the Operation and that completes the procedure. This is a standard Tab record attachment and can be assigned to a Q-file to run as part of a process.

 

Attach Generic Supplemental

This is for advanced users and was added only as a concession. It should generally never be selected. Its sole purpose is to import Supplemental Records with a Record Type different from the standard ones supplied by GoldMine. You must hardcode a Record Type at the Field Mapping Template.

 

 

Attach Opportunities/Projects

OPPORTUNITY/PROJECT MANAGER:

You'll see this option in GoldMine® via [View] [Projects]. You may want to create a test Opportunity just to get familiar with the fields and data GoldMine® tracks, to compare what you have in your Incoming File. When importing Opportunities or Projects with GX5, the Opportunity or Project Name is a required field.

GoldBox-5 creates the 2-tiered record layout for each incoming Opportunity in the OPMGR.DBF GoldMine® file, and also a related Forecast Sale record in the Calendar. For Projects, no Forecast Sale record is created, as a Project does not typically track financial information.

Other Notes:

1. The Manager must be a GoldMine® User Name. If left blank, GOLDBOX5 is used.

2. The first 3 characters of the Code / Cycle field are placed into the Activity Code of the related Forecast Sale for Opportunities, so you may want to have a 3-character code followed by a space and description.

 

Attach Personal Rolodex

You can import into the PERPHONE.DBF file, known as the Personal Rolodex, which is normally found in the GMBASE path of GoldMine. The setup is similar to a standard Import, except that only 3 fields are presented at the Field Mapping Template: the GoldMine® User Name, the Contact Name and the Phone. If you don't map a field or expression to the GoldMine® User Name, GX5 uses the GoldMine® User Name assigned to your GX5 login initials. Like all imports, the new Rolodex records are marked for sync awareness in the Tlog.

 

 

Attach Zip Codes into Lookups

You can import your own zip/postal code table into GoldMine® to take advantage of automatic population of City and State when a postal code is entered on a new record. This option is the final entry at the submenu which displays when you highlight {Batch} {Import/Update}.

The procedure follows the basic import setup. Incoming postal codes are first put into the Updater Contact File, then added from there into the Lookup table. When you press [Map Fields], you will see only 3 fields at the black screen: Postal Code, State and City. Plug in your incoming values as desired. Notice that the incoming values are temporarily placed in the Updater file's Zip, Company and Contact fields, so if you are using an expression, please use those field names.

For USA Zip Code import:

If you will be using GoldBox-5's ZIPTABLE.DBF file (available at www.goldboxonline.com, the {Support} page) as your incoming file, you can't import from it directly because it is a system file. You must first access it via the {File} menu and Export it to a new name, for example, USAZIPS.DBF. Then you would use USAZIPS.DBF as your Incoming File on the Import.

 

Attach Virtual Lookup Table values

Select this option to import into ZIPTABLE.DBF, called the Virtual Lookup Table, to which 10 Get() functions are tied.

Please note that with the new VLink2dBase() function, you can link to a Zip/Postal code table directly and may not need the Get() functions.

 

Attach Area Codes

GoldBox originated the Area Code Split Replacement logic, based on a table with the appropriate information. The file is AREACODE.DBF, accessible from the {File} menu, where you can enter area code splits manually anytime. This option allows you to import into AREACODE.DBF if you have a data file of area code splits.

Your Incoming File must consist of the Old Area Code, the New Area Code and the Exchange (or Prefix) affected by the split.

Simply select your Incoming File at the Import Setup, click Map Fields, and plug in the appropriate information. The City field is optional, since some area code splits are based upon it.

 

Attach Translator Table values

The Translator Table in GoldBox-5 is called IMP_LOOK.DBF and is used by the GetCustom() function. See FUNCTION / GetCustom() for more information.

The Translator Table is also used when you press {Translt} at the Import Field Mapping Template to translate incoming values on the fly.

You can now import into this table if you have a data file which contains at least 2 fields: The original value, and the value to be returned when translated.

Just select the Incoming File at the Import Setup, then press Map Fields. You will see 4 fields, all of which must contain a value in order for this operation to work. The first 2 are the identifiers, which, when GoldBox-5 combines them, separated by a dash-greater than pointer, allows GetCustom() to scan only those entries for 'hits'.

As an example (Assumes you wish to translate the Contact1->Source field)

Press {EXPRN} at the first row and key in: "SOURCE"

Press {EXPRN} at the second row and key in: "FIELD"

Double-Click the third row and map your Original value from the Incoming File.

Double-Click the fourth row and map your Translated value from the Incoming File.

Run the operation.

Please note that you can use any values for identifiers for doing a Global Replace.

If you are running a Global Replace on, for example, the Source field which you want to be translated, your GetCustom() call, based on the above example, is:

GetCustom("SOURCE->FIELD", "Contact1->Source")

If you plan to implement this on a standard Import and want to use the }Translt} button, you must first setup that Import. Note the Launch ID (the identifier which begins with IG). Let's assume it is IGMAIN. When setting up this import into the Translator Table, key in IGMAIN at the first row and SOURCE at the second row. Run this Import first, then run the standard Import. At that standard Import, make sure you select the checkbox to use the Translator Table and at Map Fields, make sure you press the {Translt} button at the field you wish to be translated.

See Import Field Mapping Template for information on the {Translt} button.

 

EXPORT

Export Setup Screen

Export Field Mapping Template

The GoldBox-5 Export is another key feature in the successful management of your contact data. In anticipation of a common request, GoldBox-5 ships with several sample export scenarios that are ready to run (barring path name changes). See below for more information.

In GoldBox-5, an export is the creation of a flat file containing a number of fields from 1 or more GoldMine® data files. You might use this exported file for one of the following reasons:

Whenever you do an export, GoldBox-5 needs to know the master file to be evaluated. In the GoldMine® export, the Main Contact file is the master. In GoldBox-5 you can select the Main Contact file as master, or any of the Tab files as master. In this way, you can directly evaluate History or Calendar or Additional Contacts or Details with the global filter. Because GoldBox-5 transparently sets a relation from the Tab file to the Main Contact file, you can include any fields of the Main Contact record in the global filter or select any of them at the Field Mapping Template.

 

Sample Export Scenarios:

Sample export scenario #1 shipped with GoldBox-5 consists of an export from the Main Contact file, followed by a 2nd export from the Additional (Tab) Contacts, which gets appended to the 1st. You will notice that the E-mail Address is included in the Field Template. GoldBox-5 has a function called PullEmail() which can pluck the Primary E-mail Address, attached to a Main Contact, or an Additional Contact E-mail Address.

If you wish to use the sample export scenario you should access each of the Setups and alter them as necessary, especially in the areas of Exported File Type, Exported File Name, Contact Path, Global Filter and which fields to include at the Field Template.

Sample export scenario #2 creates an ASCII report of identified dupes based upon your last Count Mode Merge-Purge session. Please see {Merge-Purge} {Preview Report} for more information.

A sample Q-file called QADDRESS.DBF is included with GoldBox-5 and is accessible from {Misc} {Q-file Setup}.

Don't forget that you can relate 2 Contact Files together and can address any fields of the related record! See Blue Line Fields in the Export Field Mapping Template panel.

 

Please note that the Export can be called in Interactive Mode. See the section in this document called 'Interactive Mode' for more information

Interactive Mode

EXPORT Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /E XPHIST99

 

Export Setup Screen

EXPORT

Of the 12 setup screens in GoldBox-5, this is the busiest. And yet, there are only 3 required items on it - the [Contact Path], [Exported File] and the [Map Fields] buttons. If exporting from Supplemental as master, you'll also need to select the Record Type. But all the other items on this screen can be bypassed and in most cases, they are. These items have simply been added to the export over the years in response to user feedback. And they give you some handy options you may not have thought possible..

[Primary Filter] Limits the records being exported.

[Contact File] The Contact File you are exporting from. In the case of exporting from Calendar as master, this is the Contact File to link with.

[Export File] Takes you into a special form called EXPORT FILE SELECTION:

| Create File as | Highlight the Type of file you wish the records to be exported to.

(File Name) Key in an 8-character file name. Make the first character A-Z. The remaining 7 characters should be A-Z, 0-9 or the underscore. Please do not key in an extension.

(Extension) This is optional. If left blank, GX5 will assign the proper extension of DBF for dBase3 or dBase4, TXT for ASCII or SDF and DB for Paradox. Please remember that if you later change the Exported File Type at the list box, ensure that the extension is appropriate! The extension of TXT can be changed to whatever you want, but you should generally not deviate from DBF for dBase3 or dBase4 and DB for Paradox!

[Exported File Path] Click to select the path of the exported file.

(Complete Exported File Name) This displays, based upon your selections above. It shows the full path and file name of your exported file. It is automatically populated if you select [Exported File Path], but you can also key the value in directly. If keying directly, please make sure you use standard Drive-Colon-Backslash naming for the drive, and do not key in long path or file names. If you are using long path names, best to click [Exported File Path] and have GX5 tilde-translate them for you.

[GO] Exits and writes your choices into the 3 text items to the right of the [Export File] button at the Export Setup Screen.

[Cancel] Exits but does not change the 3 text items at the Export Setup Screen.

 

[Supplemental Record Type] This button only appears if you chose {Supplemental} as the master file. It is a required entry. Please select the desired Record Type from the list box. Your choice displays to the right of the button.

Ö Append to Existing? Ö Normally you'll be creating a new file from the exported records. Check this item if you want to append, or add to, an existing exported file. If this is the case, at the Field Mapping Template, you must ensure that the Exported Field Names and the Order in which they are setup are identical to the original file! If not, you will get inconsistent results.

Ö Unhide <deleted> ? Ö Normally never selected. Lets you export records marked for deletion.

(# to Export) Default of zero means export all records. This allows you to export just a certain number of records, independent of the [Primary Filter]. Used most often for testing the export, on, say, 10 records.

[Sort File by] By default, the exported records appear in the order they are evaluated. You should always select this after you are finished at the Field Mapping Template, so that your selected fields for export appear in the Fields list box. This allows you to sort the exported file using any of the exported fields. Result cannot exceed 100 characters. To the right of the button displays the sort expression you keyed in at the Filter and Expression Builder.

[Replace Field] For each successfully exported record, you can replace any field with a value. For example: You have a Contact File of 20,000 records. Each week, you export 500 random records out, for example as a mailing list. You only want each record exported once for this purpose. You could replace the UserDef01 field with a value as the record gets exported, such as MAILING001. At the [Primary Filter] you would exclude these records by including: Contact2->Userdef01 <> "MAILING001". The effect of this is that GX5 will ignore those records which have already been exported. There are many uses for this feature, and it saves you from having to run a separate Global Replace after the Export runs.

Ö ASCII Export: Label Record for Character Fields? Ö Rarely used, but this puts labels as line 1 of the ASCII text file for Character fields you are exporting, used perhaps as a guide at the other end, the end receiving the ASCII file. The label is the value in the Description column at the Field Mapping Template. Please note that Numeric, Memo, Logical and Date values exported won't get labels - they will be blank.

(Delimiter) The default is a double-quote, and since this is a standard you'll mostly leave this as is. The delimiter is what surrounds character values. If you are going to choose a different delimiter, suggest something like the pipe, or some other character which would never appear in your ASCII field values.

(Separator) Rarely used. Leave this field blank if you want to use the standard default of a comma as the field separator in an ASCII file. If you are going to choose a different separator, suggest something like the pipe, or some other character which would never appear in your ASCII field values. For Tab Separated ASCII, key in the word TAB. For Space Separated ASCII, key in SPACE.

Ö Create a 1-Field-per-line TEXT File from DBF? Ö This option is only active when you have chosen to create a dBase DBF file from your exported GoldMine® data. GoldBox-5 not only creates the DBF file, it can also create an ASCII text file in the following format. This allows you to create a simple report.

Record 00001 (Expression - see below)

John Smith (Contact)

President (Title)

ABC Company (Company)

123 Main Street (Address1)

Small, MI 43333 (City, State Zip - see below)

(Expression – see below)

Record 00002

Betty Jones

Account Executive

DEF Company

456 Elm Road

Tinytown, VA 22334

Record 00003

Bill Johnson

Financial Officer

GHI Company

789 Oak Lane

Littleburg, OH 44070

Each line of the text file is one field from the DBF file in the sequence in which they were exported.

The text file is named the same as the DBF file, but with a TXT extension as default. The following prompt allows you to use a different extension.

Important Note: When you are setting up the Export Field Template, all fields MUST evaluate to Character type. If necessary, use a calculated Character field to convert a date or a numeric to a Character value. The following are examples for the conversion, which you key into the expression column:

For Date called UEXPDATE: DtoC(Contact2->Uexpdate)

For Whole Number Numeric called UCOMMISSN: Ltrim(Str(Contact2->Ucommissn))

For Decimal Numeric called UTAXAMT: Ltrim(Str(Contact2->Utaxamt,8,2))

The expression for Record Counter in the above example is: 'Record ' + Strzero(ExpCount+1, 5)

The City/State/Zip expression for the above example is:

Trim(Contact1->City) + ',' + TrimContact1->State) + ' ' + Contact1->Zip

The expression for the blank line is: ' ' or, Space(1)

You can export more than 100 calculated Character fields per export session.

NOTE: Remember to increase the Length of the exported value if necessary.

 

(Extension) The default is TXT for the above file, but you can key in a different one.

Ö Squeeze Blank Lines? Ö This removes blank lines from the above text file

Ö Sort Zip Codes by USPS 3/5 digit Method? Ö The bulk sorting method is the USPS 10+ 5-Digit/3-Digit/State/Multi-State.

All addresses having the same zip code with a quantity of 10 or more come out first. For the remaining records all addresses having the same 3 digits of a zip code with a quantity of at least 10 come out next. These are followed by all records with the same state of at least 10. The remaining are multiple states of less than 10 each. Non-state records come out last.

Included are the 50 states, Washington DC, Puerto Rico, U.S. Virgin Islands.

NOTE: Zip+4 or Carrier Route sorting is not performed.

A field called SORT3_5 is automatically added by GoldBox-5 when you choose to Bulk Sort. This field is filled with one of the below lines, as an example:

***********************5 DIGIT: 90210

**************************3 DIGIT: 902

******************************STATE: CA

*****************************MULTI-STATE

///////////////////////////////NON-STATE

On a 6-line label, this would typically be the first line. You then have 5 remaining lines for Contact, Company, Address1, Address2, and City-State-Zip.

Record 1 of the exported file contains totals for the above 5 categories, saving you from having to count them manually. The Grand Total of all labels excludes the NON-STATE count. Based on the sort, this is the first label printed. You can also use the BR7 Utility to view the file and see the totals.

[Sub-category Record] This relates to the above check box. Valid choices are Y, N, or E.

GoldBox-5 tracks the sub-category totals while sorting the bulk mail file.

Example: For the category 5-digit, sub-category totals might be 235 90210s, 349 90064s, 117 90034s, etc. 3-digit sub-category totals might be 458 901s, 298 913s, etc. State sub-category totals might be 569 CAs, 23 NYs, 785 DCs, etc. Whether these total records stay in the bulk file and where they print depends on your response:

Y: The total record is added immediately after the sub-category.

N: No sub-category total records are added.

E: All sub-category total records appear at the END of the bulk file.

Ö Add History? Ö If you check this, a History record is created for each successfully exported record, which gets attached to the Main Contact.

[Rtype] This is the Record Type of the History record. Default is L for "Sent Letter".

(Act) The Activity Code of the History Record.

(Rslt) The Result Code of the History Record.

[H-ref] You can override the default Reference value of the History record with your own. If desired, you can include field values from the composite exported record in the expression.

[Map Fields] This takes you to the Field Mapping Template, where the GoldMine® and Calculated fields to be exported are selected and ordered.

 

Export Field Mapping Template

EXPORT

Export Setup Screen

This is similar to the Field Mapping Template for Import/Update. You browse a DBF file which is the Launch ID and begins with the letters XP. Let's take a look at the basic layout of this screen:

In the blue title bar at the top is the instruction "To Select for Export: Make POSITION less than 999", which means to change the first column to a number other than 999 if you wish to select it for export. The number also determines the order in which the fields are exported. Any field with 999 in the (Pos) column is ignored and not exported. If you have selected a field and then decide that you really don't want to export it, change its (Pos) value back to 999. To the right of this instruction is the Template name and description.

Just below are the 10 major buttons of the template, which will be discussed later.

The black screen area shows the Position, Exported Field Name, Type, Length, Decimals, GoldMine® File Name, GoldMine® Field Name, Description and Expression columns. The Expression column can be viewed by clicking on the scroll bar at the bottom of the screen. Notice that the {Dbf Name} value for calculated fields is XXXXXXXX instead of a GoldMine® File Name.

Prior to version 5.31, you could not export a memo field (typically the NOTES field) to an ASCII Delimited file. This is now possible. When GoldBox-5 detects you are exporting NOTES and the type of Export File is ASCII, the file is created record-by-record. The entry will appear as one long string of text, in essence a Character-type field. GoldBox-5 replaces hard carriage returns and line feeds to the soft carriage return ASCII-141. These normally appear in a Windows editor of NOTES as a square box. In your other application, you may wish to globally replace these with a hard carriage return plus line feed. In dBase, for example, you would be replacing like so: StrTran(Contact1->Notes, Chr(141), Chr(13)+Chr(10))

Following are the button definitions:

ALL] This selects all GoldMine fields for exporting, with a 1-digit gap between each. The (Pos) column is populated with 0, 2, 4, 6, 8, 10, etc.

[None] This is the opposite of the above - all fields are de-selected for export.

[Exprn] By default, GX5 will export the GoldMine field value. If you key in an expression, that result is exported instead. Please note that for calculated fields, you must have an expression.

[Nu-Field] This allows you to add any number of Calculated Fields to the exported flat file. Select a field TYPE from the list. Please note that even though GoldMine itself does not contain the LOGICAL field type in its data files, you can still export one out as a calculated value. For example, if you wanted to export a TRUE if the Contact was in California, your Expression would be: IIF(Contact1->State = "CA", .T., .F.)

You are prompted to rename the actual field (which defaults to ?_CALC_xx, where the ? is the field TYPE). You are also prompted for the Description, and finally for the Expression, since all Calculated Fields REQUIRE one. There are defaults for the field length and decimal but you can change these by selecting the appropriate button at the top. In the final exported flat file, these Calculated Fields are treated just as any other field in the file – you can even Sort the file based on them.

[Rename] By default, the (Export Fld) column defaults to the GoldMine field name, or a generic name for calculated fields. This lets you change the name of the exported field for any in the Template. GoldBox-5 contains error checking to ensure a legal field name. Please see dBase4 File & Field Naming Conventions This option is very useful if you are exporting calculated fields or if you are APPENDING to an existing exported file You MUST name the fields the same in each Template in order for the APPEND TO feature to operate properly. This is demonstrated in the sample Export scenario shipped with GoldBox-5, where an Additional Contact export is combined into a Main Contact export of addresses.

[De-Select] Deselects the current field from being exported, simply by making its POS value 999. The advantage to using the button instead of keying it in yourself is that GoldBox-5 will stay in the general area of the display, rather than bouncing you down to the end of the display.

[Length] Allows you to change the length of the exported field.

[Decimal] Allows you to change the number of decimals for numeric exported fields.

[Desc] Lets you change the Description of the exported field.

[Index] This is a toggle, used as an aid in field selection. By default, the (Pos) field index is ON, and when you select a field for export, it 'jumps' to its export position. If you are selecting user-defined fields, for example, the field jumps to the top and then you have to scroll down again to select the next one. Who needs the aggravation? To stay within a certain field area, click this button to turn OFF the index and you will remain in the area. After you are done selecting fields, click back to ON so you can verify the order. Notice to the immediate right of the button is a text box displaying the status of the index, ON or OFF.

[Up-Angled-Arrow] Takes you to the top of the Template.

[Down-Angled-Arrow] Takes you to the bottom of the Template.

[Quit] Always click this to return to the Export Setup Screen.

 

MERGE-PURGE

Merge-Purge Setup Screen

PLEASE READ THIS ENTIRE SECTION BEFORE PROCEEDING. PLEASE DO A COMPLETE BACKUP OF YOUR GoldMine® DATA BEFORE INVOKING A MERGE-PURGE OPERATION!

This is the original and most complete Merge-Purge, begun in 1993 with the first version of GoldBox.

Merge-Purge Terms

No matter how many dupes of a contact record exist, GoldBox-5 works with them 2 at a time. The record you are keeping is referred to as the {Saved} dupe. The record to be eventually purged or deleted is called the {Deleted} dupe. All dupes of a record are eventually handled, but always in pairs.

Dupe Detection

GoldBox-5 scans 1 Contact File for dupes based on a record-matching scheme which you determine. You can use field fragments, regardless of where the fragment resides in the field. Example: The first 15 characters of Company plus 10 character of Comments, beginning with position 11. Your record match expression would be: SubStr(Contact1->Company, 1, 15) + SubStr(Contact2->Comments, 11, 10).

IMPORTANT: The result of the record-matching expression cannot exceed 100 characters! If it does, GoldBox-5 will truncate it to 100 characters anyway.

The Sounds-Like function {Soundex()} should be rarely used, and then only on alpha character fields, since it ignores non-alpha characters. Do not use this on a Phone field. Use for Count Mode only.

You may want to "set up" certain records in your contact file so GoldBox-5 will detect them as dupes. The less complex the record-matching scheme, the more dupes you will detect.

Whenever you start the record match with the COMPANY field GoldBox-5 will:

Merge-Purge Modes of Operation

BATCH is the standard mode. The 1st record encountered is considered the Saved dupe. The 2nd, 3rd, 4th etc. occurrences of a dupe are always deleted and their related records are merged into the 1st record. GoldBox-5 allows you some latitude in determining the Saved dupe, by building the Dupe List from Top to Bottom or Bottom to Top. You can also activate a CONTACT1 index to determine record order.

COUNT Mode provides a raw count of dupes based on the record-matching scheme. Please see the section Preview Dupes for COUNT MODE below.

MANUAL Mode provides an interactive method of evaluating duplicates. Dupes are displayed 2 at a time and you have options to skip, edit and archive fields.

Merge-Purge Manual Mode

DELETE Mode simply runs through the Contact File from top to bottom and physically deletes any with *DEL* in the Fax Extension (CONTACT1->EXT3). This can be used to delete after verifying the dupes in GoldMine, or as a launchable global delete of Contact Records.

What gets PURGED?

If dupe criteria are met, a contact record is PURGED or "DELETED". The Fax Extension field of the Deleted dupe is replaced with *DEL* . By default, GoldBox-5 scans the Contact File at the end of the session and physically deletes these marked records so that they don't appear in GoldMine. To completely remove them, run a Pack in GoldMine® or GoldBox-5. As part of the GX5 Merge-Purge, you can also COPY these dupes to a separate Contact File for safe-keeping before permanent removal.

What gets MERGED?

Other Features

 

Preview Dupes for COUNT MODE:

A feature exists in the Count Mode to allow you to preview the Dupes before doing the actual Merge-Purge. You might want to do this especially if you suspect a large number of dupes before doing your Batch Mode. This feature will allow you to review the accuracy of your record-matching scheme. And, it is completely safe. The Count Mode doesn't actually merge or purge anything; it will only identify dupes based on your record match.

After Count Mode completes, a file called DUPELIST.DBF is created by GoldBox-4 in its own path. To view this file, go to {File} {Browse ANY dBase4 File}. Select the DUPELIST.DBF from the list that displays in the GoldBox-4 path.

The file contains the Dupe ID (which will be the same for duped records), the Merge Value (which will also be identical between dupes), Company, Contact, Phone1, Address1, Address2, City, State, Zip, Country and the CONTACT1 record number of the dupe.

You can either press {Write} for a listing of the fields in a single column, or you can press {List} to create a simple report.

More than likely, enough information about the dupes is contained in this file. If you require a more detailed report by including, for example, user-defined fields, you would need to create an independent report in Crystal or another report writer. Use this file as the Master, and relate into Contact1 by the CONTACC index and into Contact2 by the CONTACT2 index.

 

Checklist before your Merge-Purge:

 

MERGE-PURGE Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /M MPCOMPANY

 

Merge-Purge Setup Screen

MERGE-PURGE

Merge-Purge Manual Mode

[Primary Filter] Normally you'll leave this blank and evaluate your entire Contact File for dupes. However, you can limit the contacts added to the Dupe List with this filter.

[Contact File] The Contact File you are Merge-Purging.

[Record Match] Key in an expression which determines duplicate records, for example:

Contact1->Company + Contact1->Contact + Contact1->Zip. Any 'legal' expression will do, and you can use Contact2 fields in the expression, as long as the result does not exceed 100 characters. Remember to string fields together with the plus sign - do not use the .AND. connector for this purpose!

* M-P Modes * Recommend you do a Count Mode first since it is completely safe and will give you a raw number of dupes based on your Record Match. These modes are discussed above.

(Nbr to Merge this Session?) Independent of the filter, you can limit the number of records merge-purged.

Ö Keep {Deleted}s in the Contact File? Ö By default {Deleted} dupes are automatically flagged for deletion after the Merge process runs, meaning they will not appear in GoldMine. You can choose to keep them in, maybe for review, but please remember that the Merge process has already occurred. You will see the re-attached Tab records in the {Saved} dupes Tab section. If you review the {Deleted} dupes, then want to have GX5 remove them, run a {Delete} Mode of the Merge-Purge.

Ö Create GM Group of {Saved} Dupes? Ö If checked, GoldBox-5 includes each Saved dupe in a GoldMine® Group which can be activated at the Contact File in GoldMine. Deleted dupes are not included in the Group; they are flagged with *DEL* in the Contact1->Ext3 field (the field label is Fax Extension).

The Group Label will look like the following: MPsaves: 06/01/98 1330

The 1330 is the computer time of the procedure (1:30pm).

Ö {Saved} Dupe is the Newest record? Ö By default the {Saved} dupe is the Oldest record because it is assumed that the oldest record contains the most complete information. Still, you can reverse this and have GX5 make the Newest record {Saved}. It does this by traversing the Contact File from Bottom to Top when building the Dupe List. Default way to build the Dupe List is Top to Bottom.

[Index Tag] By default, when the Dupe List is being built, GoldBox-5 doesn't activate a Contact1 index, meaning the Contact File is examined in natural record order. This is the order in which records were added or imported into GoldMine, which are always appended onto the end of the file. You can activate a Contact1 index tag during the building of the Dupe List to order the records by that selected tag. Usually this is done to alter which record is determined to be the {Saved} dupe. Remember you can also make the record evaluation Top to Bottom (default) or Bottom to Top, which gives you further flexibility for creating the Dupe List.

Ö Backfill {Saved} Flds? Ö If checked, the backfill logic is activated. At best, backfilling is risky and inconsistent, so you should select this with caution!

In its simplest and most common usage, backfilling allows you to fill in those {Saved} dupe fields which are blank with the corresponding field value from a {Deleted} dupe. All fields in CONTACT1 or CONTACT2 are evaluated for backfilling.

Example: In the {Saved} dupe, Key Field 4 is empty. GoldBox-5 looks for a value in Key Field 4 of the {Deleted} dupe. If it has a value, Key Field 4 of the {Saved} dupe is given the value of Key Field 4 in the {Deleted} dupe.

You can also "stack", or accumulate, entries from one or more {Deleted} dupes into the {Saved} dupe, each separated by a comma and space. The {Saved} field entry will look similar to that which appears when you stuff multiple entries from an F2 lookup list in GoldMine® (which end in a semi-colon).

Mostly you don't want to backfill because of inconsistencies which would appear in the {Saved} record. Therefore, carefully select those fields you wish to backfill! The main inconsistency is: What if you have more than 1 dupe of a record? GX5 may be backfilling a {Saved} field with the value from the 2nd dupe, or the 3rd dupe, etc.

The following button appears to the right of this item, allows you to code each field.

[Backfill Coding] All GoldMine® Main fields are displayed when you click this item. The first column holds the Backfill Code:

0 Backfill BLANK {Saved} field if {Deleted} field has an entry.

1 "Stack" {Deleted} values into {Saved} field, separated by commas.

2 DEFAULT: Do not backfill {Saved} field (such as ADDRESS2 field)

Ö Note Fld differences to {Saved} Hist? Ö If checked, any differences between field values of the {Saved} and {Deleted} dupes are written to the Note of a History record as an audit trail. The History record is attached to the {Saved} dupe and will contain the phrase: "GX5 M-P: Fld Diff from {Deleted Contact Name}".

Ö Copy {Deleted}s to another File? Ö If checked, {Deleted} dupes are copied to the Contact File you have selected at the [Copyout File] button. The Copy happens after the Merge process. These copied out records receive new Account numbers and Record ID's, but the Tlog file of the receiving Contact File is not updated. If you want to later bring back a {Deleted} dupe, you should do it from GoldMine, via the {Transfer between Contact Files} option under {File} {Synchronization}. The 4 immediately following items relate to this one.

Ö Re-assign Calendar to Copied contact? Ö Generally never selected. Added to GX5 because some users transfer records using the Merge-Purge instead of GoldMine's {Transfer between Contact Files}.

Ö DO NOT Copy out History? Ö If checked, History of the {Deleted} dupes are not copied to the [Copyout File].

Ö DO NOT Copy out Supplemental? Ö If checked, Supplemental records of the {Deleted} dupes are not copied to the [Copyout File].

[Copyout Dupes to this Contact File] Select the Contact File to which the {Deleted} dupes are copied. It must be different from the actual Contact File you are Merge-Purging.

Ö Create Addtional Contacts from the {Deleted} Dupes? Ö If checked, an Additional Contact record is created from the {Deleted} dupe and attached to the {Saved} dupe. The following 2 items relate.

Ö Copy Main Address? Ö The default is checked, which means the Address fields of the {Deleted} dupe are copied into the Additional Contact. De-select if you want the Additional Contact Address fields to be blank. If that is the case, operations in GoldMine® and GoldBox-5 may use the {Saved} dupe's Address for the Additional Contact.

(Use Phone) By default, the Phone1 field is copied to the single Phone field of the Additional Contact. You can change this to the Phone2 or Phone3 field.

[Addl Con Ref] By default, a hardcoded phrase goes into the Reference of the Additional Contact, as: GoldBox-5 Merge-Purge. You can, however, select another expression result for the Reference. For example, if you want the Comments field to go into the Reference of the Additional Contact, your entry here would be: Contact2->Comments.

 

Merge-Purge Manual Mode

MERGE-PURGE

Merge-Purge Setup Screen

Instead of processing all identified dupes in an uninterrupted fashion, the Manual mode slows everything down to just 2 dupes at a time. It gives you much greater control than Batch mode. Of course, Manual mode can be tedious especially if you have many dupes in your system. You may want to do a Count mode first to see how many dupes are identified by your record-matching scheme. Then you can decide whether to proceed with a Batch or Manual mode of operation.

The processing of Manual mode still goes through the GX5 Batch Processor like Batch, Count and Delete modes. The main difference is that when a dupe is identified, you are presented with 2 screens which require your interaction: the Evaluation screen and the Edit screen.

M-P / EVALUATION SCREEN:

The purpose of this screen is to allow you to view the 2 dupes and decide the next action. Essentially the actions are to delete the dupe (displayed as record B), skip over the dupes or end the Merge-Purge session.

Let's take a look at the basic layout:

[Delete] This causes record B to be marked as the {Deleted} dupe. Record A is always the {Saved} dupe in these pairings. Pressing this button exits the screen and sets up the A and B records for editing.

[Note-A] Displays the Main Contact Note for Record A. Strictly for viewing, not editing.

[Note-B] Same as above, but for Record B.

[Skip It] If you decide the 2 records should not be considered dupes, press this button to skip over them. The screen is exited and the Dupe Detection continues. No merging or purging occurs.

[Quit] Halts the Merge-Purge session. If you answer Yes to the prompt, the session is ended and if further processing is required, that begins. Further processing would be Dupe Copyout and Deletion-Marking. This allows you to stop anytime and come back later if you wish to continue. Any dupes already handled are automatically ignored by the next session.

 

M-P EDIT SCREEN:

This is only displayed if you pressed the [Delete] button at the Evaluation screen. It allows various options to be used upon the {Saved} and {Deleted} dupes. Let's look at the layout:

 

Ö Addl Contact? Ö Same as option Ö Make Addl Contacts fm {Deleted}s? Ö at the Merge-Purge Setup, but allows individual control per dupe.

Ö Main Addr? Ö Same as option Ö Copy Main Address? Ö at the Merge-Purge Setup, but allows individual control per dupe.

(Phone) Same as option (Phone) at the Merge-Purge Setup, but allows individual control per dupe.

[Lkup] Accesses the GoldMine® Lookup entries for the {Saved} Field Value, allowing you to select a new value from the list.

[Swap] Swaps, or writes in, the below Field Value of the {Deleted} dupe into the corresponding Field Value of the {Saved} dupe.

[Archv] This is a toggle. When you first press it, the Field Value of the {Deleted} record is added to the ARCHIVE LIST. An indicator that you archived the field is added: The small letter 'x' to the left of the {Deleted} Field Value becomes a capital letter 'X'. If you change your mind, you can remove the Field Value from the ARCHIVE LIST by clicking again. The capital letter 'X' becomes a small letter 'x'. This is the same as the Ö Note field differences in {Saved} History? Ö option at the Merge-Purge Setup, but allows you direct control. The following button is related.

[View] This allows you to view the ARCHIVE LIST, if you have chosen to archive {Deleted} Field Values as discussed above. It is strictly for viewing, not editing. This is what the Note of the Archive History record will look like when you view it in GoldMine. It's also a handy way to review your archiving choices and alter them if necessary. Please remember, though, that edits within the viewer are not saved; you can only affect the ARCHIVE LIST contents with the [Archv] button!

[Quit] Exits the screen. Click only after you are satisfied with your editing and archiving choices, if any. After exiting, GX5 compares the {Saved} Field Values against the original values and records any changes in the Contact record, in a sync-aware fashion. The rest of the processing on the pairing is completed, and Dupe Detection continues.

 

DUPES BETWEEN FILES

As you already know, the GoldBox-5 Merge-Purge identifies, merges and deletes duplicate records in a single Contact File. The [D-dup] button at the GXW Browser identifies and deletes dupes in a single GoldMine® file (or ANY dBase4 file). This option is a bit different: It allows you to identify dupes in 1 Contact File by comparing it with another Contact File.

For example: You keep all of your working Contact records in the COMMON file. You also keep a separate Contact File of prospective customers called PROSPECT. You want to evaluate the PROSPECT Contact File and check it for dupes against the COMMON Contact File. After setting up this operation in GoldBox-5, you run it. GoldBox-5 checks each record in PROSPECT, looks for a match in COMMON based on your Record Match expression, and, if one is found, it adds that PROSPECT record as a member to a GoldMine® Group. After the operation completes, you can then go into GoldMine, open the PROSPECT Contact File, activate the Group and view each record which found a match in COMMON.

No merging or deletion takes place, which is normally desired. If you want to delete these identified dupes in a batch operation, you could do a Global Replace on the Fax Extension field (Contact1->Ext3) with the code "*DEL*" using the InGroup() function in the filter, then run a Delete Mode of the Merge-Purge. The name of the created Group would be passed into the InGroup() function, as the 2nd parameter.

DUPES BETWEEN FILES – SETUP SCREEN:

[Primary Filter] This is the only item that is optional – all items below are required entries. By default, GX5 checks ALL records in the EVALUATION Contact File against the COMPARE Contact File. You can, however, key in a filter to restrict those records which are checked. Notice in the Fields box of the Filter & Expression Builder that Contact1 has been replaced with C1eval and Contact2 with C2eval. Since 2 Contact Files are opened at the same time by this operation, they are given different aliases by GoldBox-5.

[EVALUATION Contact File] The file you are checking, or evaluating, for dupes. This is where the Group is created, which you can activate after the operation completes. Based on the above example, this would be the PROSPECT Contact File.

[Group of Dupes: Title] You'll need to key in a 24-character title for the Group being created. GX5 helps out a little when this value is blank. It takes the 8-character name of the COMPARE Contact File as the start, then adds 2 asterisks after it. That leaves you with 12 (and maybe a few more) characters to include the Record Match, for example. This is recommended, so you know how the files were compared. For example, if your Record Match was Contact1->Company + Contact1->Phone, your Group Title might be: "COMMON ** Comp/Phone1" Please be aware that you can key ANY title for the Group. The above is only suggested so that you have a reference point as to the contents of the Group.

[Record Match] The expression for finding matching records in the COMPARE Contact File. Please note that if you are using your own user-defined fields and want to include them in the Record Match, they must exist in both the EVALUATION and COMPARE Contact Files! The result of the Record Match expression cannot exceed 100 characters.

[COMPARE Contact File] The file you are comparing against for dupes. For the above example, this would be the COMMON Contact File. No Group is created here – the Group is added to the EVALUATION Contact File.

 

DUPES BETWEEN FILES Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /U DUCOMMON

 

GROUP BUILDER

GoldMine already has a Group builder in it so you may be familiar with using these powerful subsets of data. Groups are used to focus activity against a certain number of Main Contact records.

A Group Builder exists in GoldBox-5 because it offers you many powerful options when determining which Main Contacts should be included in a Group. It is the best Group Builder for GoldMine.

The Groups created by GoldBox-5 are standard and can be activated in GoldMine just like any other Group. Unlike in previous GoldBox-5 versions, all Groups created will sync just as if you had created them in GoldMine. If you do not wish to have the Groups sync, you can manually change the global setting at {Service} {Config Screen}, or you can turn Sync stamping on or off in a Q-file.

GoldBox-5 uses reverse-optimization in its Group Builder to ensure that only the records reflecting the current status of your GoldMine system are contained in the Group. This means, on an existing Group to which you are adding members, GoldBox-5 will do an optimized Add, which means adding just those members who do not already exist in the Group. After this process completes, GoldBox-5 then scans the entire Group and deletes those members who no longer meet the Primary Filter. Therefore, if you want to add members to an existing Group, it is very critical that you preserve the original Primary Filter, and ADD the extra condition(s) to include the new members. If you do not keep the original condition, GoldBox-SQL will delete the original members!

3 quick points before examining the Setup Screen:

 

GROUP BUILDER SETUP SCREEN:

(Group Name) The Setup Description is also the Group Name. If rebuilding an existing Group, you should not change this, otherwise a New Group will be created. Generally you would only change this if building a New Group and you wanted to change what you keyed in at the New Setup screen.

[Primary Filter] Required. This determines which Main Contact records are added as Group members. Remember that even though Groups are tied only to Main Contact records, they can be built by evaluating the Main Contact file or a Tab file as master.

[Group User] Select the Owner of the Group from the list of your GoldMine Users.

(Group Code) An 8-character Code for the Group.

[Sort Group by] The result of the Group Sort is only 8 characters and defaults to the member's Company Name. You can key an expression for a different Sort value.

[Reference] The result of the Group Reference is 24 characters and defaults to the member's Company Name. You can key an expression for a different Reference value.

[Group Name] You can key an expression to generate the Group Name, which overrides the value you have at the top, in the (Group Name) prompt. This is rarely used, but allows you, for example, to make the current date, or even a future date, a part of the Group Name.

 

GROUP BUILDER Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /G UGKEY4

 

GROUPS-BY-BREAK

GoldBox-5 's Group Builder builds Groups one at a time based on your selection criteria. This option lets you define a "break" on field(s) and have GoldBox-5 create multiple Groups automatically, based on changes in the "break". It is similar in concept to the Org Chart Creator. 3 typical examples:

1. You track Contact Type in Key Field 1. To create conventional Groups on this field, you would have to make a separate definition for each possible value in the field. That would require you to run a Field Verification Listing first. With this option, you simply define Contact1->Key1 in the Break Expression and GX5 creates a separate Group for each unique value.

2. You want to create Groups of all area codes within a particular city, let's say Los Angeles, California. The Filter Expression would be: Contact1->City = "Los Angeles" .AND. Contact1->State = "CA" The Break Expression would be: SubStr(Contact1->Phone1, 2, 3)

3. You want to create Groups based on all unique Result Codes in the History file for Completed Appointments in 1998. Choose History as the master file. The Filter Expression would be: Conthist->Rectype = "A" .AND. Conthist->Ondate >= CtoD("01/01/98") The Break Expression might be: "Appt 1998 Results: " + Conthist->Resultcode

These are standard Groups and can be activated in GoldMine® just as if you had created them there. The only difference, as with the regular GoldBox-5 Group Builder, is that they will not sync. Also please be aware that the User Name assigned these Groups is GOLDBOX5. If you are logged into GoldMine® under your User Name, please remember that you can Select another user's Groups by going to V-iew, Contact G-roups, Right-Click in the Group Name box, Select U-ser.

Since the Name of a GoldMine® Group is limited to 24 characters, please note that GX5 only evaluates the first 24 characters of your Break Expression when defining each Group. Normally this is not a problem.

By default, blank values are assigned to a Group called <empty value> since this information may be equally important to you. You can stop the <empty value> Group members from being added simply by eliminating their inclusion in the Global Filter. In the 2nd example above, you would add .AND. .NOT.

Empty(SubStr(Contact1->Phone1, 2, 3)) to the end of the expression. This stops members from being added if they have no area code entry.

Suggestion: If you are building Groups on a single field, you may want to preview the field's contents with {Batch} {Verify Fields} first. Whatever you see in the list will be Group names. You may want to do a bit of cleanup on the field if necessary before building the Groups.

GROUPS-BY-BREAK SETUP SCREEN:

[Primary Filter] Usually you won't have one because of the nature of this operation, but you can limit the group membership by including a filter.

[Break On] The field, or field expression, you wish to evaluate and break on when a change occurs.

[Sort Group by] Identical to the button at the Group Builder Setup Screen, as is [Reference].

[Supp Record Type] Select a Record Type if evaluating the Supplemental file.

 

GROUPS-BY-BREAK Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /Y BYUSERDEF17

 

ORG CHART CREATOR

Organization Charts are graphically created in GoldMine and are an extremely powerful method of logically grouping contacts. GoldBox-5 gives you the ability to batch create Top Level Org Charts. GoldMine's Org Charts can have up to 6 levels: A Top Level and 5 Sections. The Top Level is the one that GoldBox-5 creates. You must use GoldMine to create Sections under the Top Level, if desired. For most situations a Top Level Org Chart structure is sufficient, since GoldBox-5 also allows you to bypass the default Contact-Name Sort Order of the Chart and add one of your own. Examples for use:

GoldBox-5 Org Charts can be created in 1 of 2 specific ways:

1. Breaking on one or more fields:

This is the default in GoldBox-5, since it was the original method. Any CONTACT1 or CONTACT2 fields can be used in the Break expression. This allows you, in one pass, to create multiple Org Charts based on State, Department, Title, or any user-defined fields. Based on the expression, when GoldBox-5 hits the first unique value, that becomes the Top Level record. It is also added as the first Member record. Any others that have the same value are added as Members to complete the Chart, until the next unique value is accessed, and the process repeats. Note that you can break on more than one field, such as State plus City.

2. Breaking on one or more filters:

This option greatly opens up the flexibility of Org Chart creation. Instead of breaking on the literal result of field values, you can create one or more filters to determine inclusion in a Chart. When a Contact finds one of the filters that matches it, the filter returns a Break Word value and the Contact is added. You can also use the MultiTab() function to evaluate any of the Tab records associated with a Contact. For example, you may wish to create an Org Chart to include all Contacts in which the total Completed Sales for the previous 6 months exceeds $10,000.

 

By default, GoldBox-5 will break on "First Found" as the Top Level record which is normally determined by the record's creation date. However, you can key an expression to force the procedure to break on the record you wish. For example, if you store multiple contacts under the same company name, all as full contact records, but the Main Company record is designated by the word "CORPORATE" in the Key1 field, you can have GoldBox-5 break on that Corporate record so it is Top Level. Another way to do that is to put the targeted Top Level records in a Group, then use the InGroup() function to determine the Top Level record. More on this in the [Break first IF] button below.

You can add members to the Org Chart globally anytime, without duplication (by using the default global filter and Org Chart Title). You may wish to do this after importing a mailing list, or, on a regular basis to include those records added by data entry which did not get included in the Org Chart.

The function InOrgLevel() is tied to the existence of Org Charts so you may want to check it out in the function listing at the end of this manual.

 

ORG CHART CREATOR SETUP SCREEN:

[Primary Filter] This is a REQUIRED entry, but you won't want to click the button until you verify that the (Title Fragment) is absolutely correct. Maybe you'll want to skip on down and read about it. Because the Org Chart Creator allows you to refresh an Org Chart (as long as it was built by GX5), you will note that an automatic expression is written in the first time you click the button. The InOrgLevel() function is called twice, and you'll see the literal Title Fragment in the function calls. This is why you first want to ensure the Title Fragment is correct. You can add to the filter by using the .AND. connector if you want to further limit a contact's membership in an Org Chart.

[Contact File] The Contact File on which to build the Org Chart.

* Fields Brk OR Filters Brk * This radio button box determines the method by which the Org Charts are created. The default is Fields Brk, associated with the [Break on Fields] pushbutton.

[Break On Fields] This is the field or field expression to be examined for 'breaking'. For example, if you are breaking on Zip Codes, the expression would be: Contact1->Zip. GoldBox-5 uses an index based on this expression, then creates the Chart. The first record of a 'break' is the Top Level record by default, and all other records within the 'break' are members beneath it. Example of how this may look in GoldMine is:

ZIP - 90210

Bell Aire

Beverly Hills

Beverly Hills

Brentwood

Westwood

Westwood

ZIP - 90700

Hollywood

Los Angeles

Los Angeles

Pasadena

Pasadena

Pasadena

[Break On Filters] Normally you'll choose this option when you want just a portion of your Contact File to be added to one or more Org Charts, based on very specific criteria. It is similar to building one or more Groups, all in one pass. Pressing this button takes you to the GXW Browser, where you add or modify the Filters List associated with this Org Chart Setup. You will notice 3 main columns, after the {Del} column:

Break Word – Key in the word or phrase, which can be a maximum of 32 characters. If the associated Org Filter evaluates to TRUE, this Break Word value is returned as the Top Level Break for an Org Chart. You can use a different Break Word value for each filter, meaning a separate Chart is created if that filter evaluates to TRUE. If you want the evaluation of more than one filter to result in a single Org Chart, simply key in the same Break Word value for each. Please be sure to enter a Break Word value – if you do not, GoldBox-5 automatically ignores that filter!

Filter ID – This is auto-populated by GoldBox-5 and should not be altered. The value is the Org Chart Launch ID, for which you were prompted when first adding the new setup. It is used to uniquely identify each filter you intend to use in the process.

Org Filter – The filter to be evaluated. Press the {Exprn} button to access it. During processing, if it returns a TRUE, the scroll through the filters list stops and the Break Word value is returned. If it returns a FALSE, the next filter in the list (based on the Filter ID) is evaluated, and so forth. If no filters based on the Filter ID return a TRUE, then the Contact is not placed in an Org Chart. To add another filter, press the {Add} button. You will notice the Filter ID gets auto-populated. You may also notice that other Org Filter records are visible in the Browse window, but that you cannot access them. By design, GoldBox-5 keeps you only within the filters having the same Filter ID.

Have a look at this example. You are building an Org Chart of all companies with the word IBM somewhere in the Company field. Your Break Word value is: ALL IBM COMPANIES. Your Org Filter is: "IBM" $ UPPER(Contact1->Company) You are sorting by the Company Name. The result of the operation might look like the following:

IBM - ALL IBM COMPANIES

Austin Branch IBM Corp.

Cleveland Branch IBM Corp

Corporate HQ IBM Corporation

Denver Branch IBM Corporation

IBM Training Center of L.A.

St. Louis IBM Consultants

Washington Users Group for IB

Notice the last entry in the Chart. Although the actual Company name is {Washington Users Group for IBM Products}, only the first 29 characters of the company appear (this is a GoldMine limitation – the Sort value is stored in the last 29 characters of the CONTSUPREF field).

[Org Title] This is what appears for the Top Level record - in the above first example, it's the ZIP - 90210. In the 2nd example, it's the IBM – ALL IBM COMPANIES. The start of the Title must be the Title Fragment. For Fields Brk, recommend the remainder be the fields of the break expression. In the first example, the Org Title expression is: "ZIP - " + Contact1->Zip. In the 2nd example, the Org Title is the Title Fragment plus the Break Word value returned by the filter. You designate this with the vBreakWord variable, which appears in the Functions box at the Filter and Expression Builder. When you first create an Org Chart Setup and you select the Filters Brk radio button, GoldBox-5 automatically generates the correct expression for you. Please note the result of the Org Title cannot exceed 38 characters.

(Title Fragment) Whenever creating a new Org Chart Setup you are prompted separately for this value. When first accessing the Setup Screen, this prompt is initially highlighted because of its importance. This is a unique short word or phrase which categorizes the type of Org Charts. You MUST choose a unique, generic label to begin the Org Chart Title, otherwise GoldBox-5 will not be able to logically group members under a Top Level record. Specifically, the InOrgLevel() function requires it. If Company is your Break field, you might choose COMPANY or CORPORATE. If Zip Code is the Break, you might choose ZIP. If a Key field is the Break, you might choose TERRITORY or SALESPN or SIC CODE, depending on how you are using the Key fields. Do not surround the word in quotes - key it in directly.

Ö Duplicate the Break, Make Top-Level? Ö You can have the Top Level record duplicated to a separate one so that its fields can be used for information specific to the Organization. When this is checked, GoldBox-5 capitalizes the Company and Contact and puts an identifying phrase in the Comments field.

[Sort Chart by] As in GoldMine, the Contact Name is used as the Sort criteria. This is the default in GX5, but you can choose other fields for the sort. For example, if creating an Org Chart by Zip, you might wish to make Contact1->City the Sort field, as in the above example. You can use any legal expression based on Contact1 and Contact2 fields. Please note the result of the expression cannot exceed 29 characters.

[Break first IF] By default, the 'First Found' becomes the Top Level record, but you can choose which record within the Break is Top Level. Typically you would pre-designate these records before running the Org Chart procedure, either by placing a value in a particular field of the targeted records, or, even better, by placing them in a Group. You could then use the InGroup() function in this expression.

ORG CHART CREATOR Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /O OCZIPCITY

 

GLOBAL DELETE

You can globally delete when using Contact2, Supplemental, Calendar or History as the master file. To globally delete Main Contact records and their related Tab records, you have to do that in GoldMine. Or, there is an indirect way to do it in GoldBox-5: For Main Contacts you wish to globally delete, you'd have to first globally replace the Fax Extension field (Contact1->Ext3) with *DEL* . Then you could run a Delete Mode of the Merge-Purge to complete the process.

 

GLOBAL DELETE SETUP SCREEN:

[Primary Filter] Required. Limit the records you wish to globally delete.

[Contact File] The Contact File on which to perform the Global Delete. For Calendar, this is the Contact File to link with for possible evaluation in the [Primary Filter].

[Supp Record Type] If you chose Supplemental as the master file, select a Record Type.

Ö Linked Documents: Also delete File on Disk? Ö This is only evaluated if you chose 'L' as the Supplemental Record Type. Linked Document records in the Supplemental File link to an actual disk file, and sometimes, especially in the case of word processing files, you may wish to delete the linked file on disk as well as its link record in GoldMine. Please exercise caution when checking this item.

While we're on the subject of Linked Documents, you may wish to do a bit of a reversal on the above. You might want to delete Linked Document records if the linked file doesn't exist on disk. In that case, your [Primary Filter] would be: .NOT. File(Trim(Contsupp->Address1 + Contsupp->Address2))

(Record Alert Code) The 3-letter Alert Code you wish to search for and delete. Please note that this is tied into the Alert Creator (the GoldMine® User), below.

(Alert Assigned by GoldMine® User) The GoldMine® User who assigned the Alert. GoldBox-5 takes the above value along with this one to search for the specific Alert. Note: In the Primary Filter, you should use the following as an example: " ~CRH~DPETONIC" $ ContSupp->Notes This will only address those ContSupp records which contain the Alert you wish to delete. In the example, make sure you have surrounded the Alert Code by the tilde character. In the example, CRH is the Alert Code and DPETONIC is the GoldMine® User who assigned it.

Ö Calendar/History: Delete the Related EMAIL Record? Ö If you are Globally Deleting Calendar or History Email records, you may also want to delete the actual Email message in GoldMine's MAILBOX.DBF file.

 

GLOBAL DELETE Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /D GDLINKEDDOC

 

GLOBAL REPLACE

You can replace any field in the Main Contact File, Calendar, History or Supplemental File. Although you typically replace 1 field in an operation, GX5 allows you to replace up to 5 simultaneously.

GLOBAL REPLACE SETUP SCREEN:

[Primary Filter] Optional although you'll probably use one. If left blank, all records are replaced.

Ö If Re-assigning Contacts to New Sales Rep: Touch all Related TAB Records for Sync Transfer? Ö GoldBox-5 allows you to 'touch' the Reference field of related Calendar, History and Supplemental records as if you edited the Reference of each, adding a Tlog entry for the 'edit'. In reality, the Reference is not modified, but this should cause these records to sync to the receiving Sales Rep.

[Field # 1] Click to select a field to be replaced. At the Filter and Expression Builder, you must select a field from the Fields list by highlighting it and double-clicking. When you click [GO], you are taken back into the Expression Builder, prompting you to key in a Field Replace Expression. The [Field # 1] replace is a required entry, but the other 4 are of course optional. They behave in the same way.

Ö Sync Touch? Ö This is used only if you want to simulate a field replace. You do not want to actually change the field above, but you want to add or update a Tlog entry as if that field was actually modified. Should be used with caution and only in certain sync situations. It is only available for [Field-1].

[Supp Record Type] If replacing in the Supplemental File, select a Record Type. Notice that there is also an asterisk in the list, which allows you to evaluate the entire Supplemental file without an index tag active. This choice is strictly for replacing a field which is included in the index tag - specifically, the Contsupp->Contact and Contsupp->Contsupref fields. The Contsupp->Contact field is the Contact Name field of Additional Contacts and the Detail Type of a Detail. The Contsupp->Contsupref field is the Reference. If replacing either of these fields, select the asterisk. Then include the limit on Record Type in the [Primary Filter], as in: Contsupp->Rectype = "P" .AND......... Please note that the operation will take longer because each record in the Supplemental file has to be evaluated. Still, you will get an accurate result.

Ö Linked Documents: Replace Drive\Path? Ö GoldBox-5 provides a "smart" batch replacement of the Drive\Path and provides the correct sync marking of the changes made. For example, you have a group of files stored in C:\DOCS\GM. You move these to a network directory and now want to reset the link to these files. The network directory is: G:\PROGRAM FILES\APPS\GMDOCS. You would:

1. Select 'L' as the Supplemental Record Type.

2. Check off this item before choosing [Field # 1].

3. Click [Field # 1] (it must be blank initially!). You will be separately prompted for the Current Linked Document path. Key it in, and you'll notice the entry is forced to UPPER case. When you click [GO], you are separately prompted for the Replacement path. When you click [GO], you are returned to the Setup Screen. Notice the word LINKEDFILE next to [Field # 1] and a StrTran() expression next to it. If you are not sure whether you keyed the 2 prompts accurately, you can click on [Field # 1] now and you'll see the StrTran() expression - alter as necessary.

Note: If you imported Notes from Act!, you can convert their date banners to GoldMine® date banners if the Act! Date Banner is in the following example format (see ActBanner() function):

6/27/99 9:25 PM: Call back to confirm demo of product at client site Saturday. Remember to bring product so you will have something to demo and not have to unleash stand-up routine to hold crowd.

If desired, you could follow up with a Notes Archival to send the entries into the GoldMine® History file.

 

Please note that the Global Replace can be called in Interactive Mode. See the section in this document called 'Interactive Mode' for more information.

Interactive Mode

GLOBAL REPLACE Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /R RELINKEDDOC

 

GLOBAL COMPLETE

This option does not appear on the menu as a selectable item, but it can still be accomplished in an automated fashion by GoldBox-5. Once it is setup as a Q-file launch, you can assign it to an icon or execute it from {Start} {Run} or as a single command line call.

Completing a Calendar record into History in GoldMine is essentially deleting the Calendar record and appending a History record, containing most of the Calendar record's information. So, in GoldBox-5, you'll be doing the same thing globally.

There are 3 operations you'll setup for this procedure: An Export from Calendar, an Import into History, and a Global Delete of Calendar.

1. Go to {Batch} {Export} {Calendar}. Fill in the Setup screen. Suggest keeping the default Exported File name of GMEXDATA.DBF. Make sure you select a {Primary Filter} at the top of the screen. This is the filter which will address only those Calendar records you desire. While at the {Filter & Expression Builder}, press {Write} and save your Filter, using whatever description you wish. This is done so you can re-select the same Filter when you Delete the Calendar records. When you go to {Map Fields}, you will see that all the Calendar fields are pre-selected for Export by GoldBox-5, which is what you want. Do the Export.

2. Go to {Batch} {Import/Update} {History}. Fill in the Setup Screen. The Incoming File is GMEXDATA.DBF in the GoldBox-5 path. You don't need a Primary Filter here, as that was taken care of in the Export. At the {Map Fields} screen, plug the Calendar fields from GMEXDATA.DBF into the corresponding History fields. For the Result Code, you'll normally want to hardcode a value in. Press {Exprn} and hardcode a 3-letter code surrounded by quotes. Make sure you plug the LINKRECID field into the and the LOPRECID field into the field. To preserve the possible link between the former Calendar record and an Additional Contact record, here is what you must do: Plug the incoming REF field to the History REF field. Then press the {EXPRN} button. Key in the following expression:

Trim(Contact2->Comments) + " (oc:" + Trim(Gmexdata->Company) + ")"

Use the Gmexdata->Accountno as the Record Match field - plug it into the appropriate field in the Record Match area. Do the Import.

3. You may want to go into GoldMine and verify that the History records came in ok, although this is normally not necessary. In GoldBox-5, go to {Batch} {Global Delete} {Calendar}. At the Setup screen, select {Primary Filter}. At the {Filter & Expression Builder}, press the {Get} button and get the Filter you saved in Step 1. Do the Global Delete.

To run this as an uninterrupted batch process, you'll store these 3 operations into a Q-file. Go to {Misc} {Q-file Setup}. Add a new record. Make the Description anything you like, such as GLOBAL COMPLETE OF CALLS GREATER THAN 3 MONTHS OLD. Call the Q-file QCOMP3MO, for this example. Make sure you are highlighted on this record, then press {Quit}. In the Q-file itself, click {Add} and add the above 3 setups in succession by selecting them from the list. You can now run the Q-file as a single operation from, for example, {Start} {Run} like so:

C:\GOLDBOX5\GX5 dep /Q QCOMP3MO

(Substitute your drive and path as necessary, and substitute {dep} for your actual GoldBox-5 login initials).

 

NOTES ARCHIVAL

NOTE: Recommend that you DO NOT track historical activity in the Main Notes. Please use GoldMine's Activity Scheduling and Completing capabilities, which are far superior and more reliable. This process does not guarantee that Main Notes will sync properly if entries have been pulled out and put into History. The History entries will, however, sync as new records.

HINT: The Main Notes Tab in GoldMine® should be used ONLY for tracking general static information about the contact, such as directions to site, summary of business operations, etc.

This utility provides a way to reduce the size of your Main Contact Notes file without having to resort to cut-and-paste for each entry.

The operation is ENTIRELY based on dated Notes entries. The date span you key in is compared against the UDT banners you inserted in GoldMine, as in: *** DAVE *** July 31, 1998 at 9:30am

GoldBox-5 seeks out this banner, extracts the entry, writes it to a History record and then deletes only that dated entry from the Note. IMPORTANT: If you intend to archive an entire Note, for example to a Linked Document, this option will not perform it. You must use Export/Import/Update for archiving

entire Notes which are NOT based upon UDT bannered entries.

The History record created will contain:

 

NOTES ARCHIVAL SETUP SCREEN:

[Primary Filter] By default, all Contacts are evaluated. You do not need to key in a filter to ignore empty Note entries, as GX5 does that automatically.

[Contact File] The Contact File on which to perform the Notes Archival.

[Date Range] Key in the Starting and Ending Date Range to be covered by the operation. Any Date Banner falling within the Date Range will be archived.

Ö Keep Entries in Main Notes after Archiving? Ö Normally you want the entries 'pruned' out of the Main Notes if they've been archived, but this prompt allows you to keep them in.

[History Ref] You can key in an expression to populate the History Reference field with something other than the default described above.

 

Please note that the Notes Archival can be called in Interactive Mode. See the section in this document called 'Interactive Mode' for more information.

Interactive Mode

NOTES ARCHIVAL Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /K NAOCT98DEC98

 

TAB FILE LOG CREATION

This option writes a number of Tab records attached to a Contact into a single text entry. You can then use the resulting file to create Linked Documents, for example, to record Tab data as disk files. This utility started out as a History Log only, but was expanded to let you create a Calendar Log, a Details Log or an Additional Contacts Log.

The targeted Tab records being logged are written to a dBase4 memo field and the size limit is 64K per Contact, per session. Please keep this in mind when designing the Tab File Filter so you don't go over the 64K limit. You may wish to invoke the Limit # Logged option, described below, just to make sure you stay under 64K, especially if you track a lot of freeform text in your Tab Notes field.

The Tab Logs are written to HISTLOG.DBF/DBT, in the GoldBox-5 path. The file consists of an ACCOUNTNO and HISTORYLOG field, which is a memo field containing the logged Tab records.

HISTLOG.DBF can be opened and browsed at the {File} menu. A relation is set to the CONTACT1 file and you will see the Company, Contact and Phone1 values display at the bottom of the screen. Click on the [Memo] button to see the log entry. Please be aware that you can also use the [Srch] button to find any text value in the log entries.

When you first select this option, choose the Tab file you wish to log: History, Calendar, Details or Additional Contacts.

 

TAB FILE LOG CREATION SETUP SCREEN:

[Primary Filter] This filter evaluates the Main Contact file only. The default is to evaluate all. You may, for example, only want to evaluate Tab records for Clients and not for Prospects.

[Contact File] The Contact File on which to perform the Log Creation.

[Tab Filter] This filter evaluates the Tab file only. For example, for a History Log, you may want to log only Calls or Next Actions, or only records with the code ARC in the Result Code. The default is to log ALL attached Tab records.

(Limit # Logged) Default of 0 means: Log all Tab records meeting the Tab File filter. Please note that this relates to the number of Tab records attached to the Contact, not the total number of Tab records. For example, if you key in the number 10, this means no more than 10 Tab records attached to the Contact, and which meet the Tab File filter, will be logged. If you track large Note entries in your Tab file, or if you suspect that many Tab records attached to the Contact will be logged, you may want to key in a number such as 10 to ensure staying under the 64K limit for the log entry.

Ö DELETE Tab records Logged? Ö If selected, the Tab record being logged is deleted and will not appear in GoldMine. A pack/rebuild permanently removes deleted records.

Ö Date View: Old to New? Ö (For History only) The default set by GoldBox-5 is to list the entries in the log by date, with the most recent activity, the Newest activity, listed at the top. In other words, the default is reverse date order. If you want the list in chronological date order, select this option.

Please note that the Tab File Log Creation can be called in Interactive Mode. See the section in this document called 'Interactive Mode' for more information.

Interactive Mode

TAB FILE LOG CREATION Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /H HLCALLSAPR99

 

CONTACT VALIDATOR

This is a tremendous tool for the database administrator! You now have the ability to setup rules for all fields of the Main Contact record, plus its associated Tab files. GoldBox-5 steps through the Contact File, evaluates your set of rules, and places all exceptions into a file called Contact Validator Exceptions (CONVALID.DBF). This table is accessible from the {File} menu. The Contact Validator Exceptions table is always reused and will reflect your latest run of the operation. If you want to run several operations on different types of contacts and preserve them separately, copy the CONVALID.DBF and CONVALID.DBT files to new names. If you do copy the CONVALID.DBF/DBT files to a new name, you can use {File} {Browse ANY dBase4 File} to view it.

You can also run this in Interactive Mode. The Exception List displays immediately for the current record. If the Contact does not meet the Primary Filter or if there are no exceptions, you are informed.

Since the Rule Sets are Saved Setups, you can have as many as necessary. For example, you may wish to validate CLIENT Contacts differently from PROSPECT Contacts.

CONTACT VALIDATOR SETUP SCREEN:

[Primary Filter] By default, the Contact Validator will check all records in your Contact File. Use this to limit the inclusion of records. For example, for a particular setup, you may wish to evaluate records where the Key1 field is equal to "PROSPECT". Your filter would be: Contact1->Key1 = "PROSPECT".

[Contact File] The Contact File on which to perform the Validation.

[Make Rules] This is where you select individual fields or Tab files to be evaluated.

The POS column defaults to 999, which means all fields are unselected. Change the number to any other value to select it. This also determines the order in which the fields are evaluated.

When you select a field, by default, GX5 uses the NOT EMPTY function to evaluate it. That is just to determine whether there is something in the field, which in many cases may be all you need. You can optionally add an [Exprn] for more detailed evaluation. For example, to see if the Key3 field value is found in the F2 Lookup Table, you would use InGMLookup("Contact1->Key3") as the expression. Maybe on a particular field, you WANT it to be empty. In that case, for example UserDef10, your expression would be: Empty(Contact2->Userdef10).

To evaluate Tab records, use the MultiTab() function, which is documented in the Function Definitions section. The sub-filter expression(s) for MultiTab() must first be created from {File} {Sub-Filters}. You can evaluate Calendar, History, Addl Contacts, Details, Referrals, A/P Tracks, Linked Documents and the Opportunity Manager with MultiTab(). To check, for example, whether the Contact has any History record, your sub-filter would contain HASHIST/1 in the Definition Label and ContHist->Accountno == Contact1->Accountno in the expression. The expression here would be the call to MultiTab(), as in: MultiTab("HASHIST", "CONTHIST"). Of course you can make the sub-filter expression check any fields in History for specific values as well, such as: ContHist->ResultCode = "SAL".

Click [Quit] at the Browse Screen to exit and choose [Go] to run the operation.

 

Please note that the Contact Validator can be called in Interactive Mode. See the section in this document called 'Interactive Mode' for more information.

Interactive Mode

CONTACT VALIDATOR Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /1 CVPROSPECT

 

 

 

USER NAME CHANGER

Sometimes you may change an existing GoldMine User Name to a new name if, for example, a user leaves your company and you are assigning those records to a new user. Or, perhaps you need to make the user names more unique or descriptive. For example, you might wish to change the user name DAVE to DPETONIC. GoldBox-5 gives you the option to replace all affected GoldMine files with the new name without having to run a series of global replacements.

USER NAME CHANGER - SETUP SCREEN:

[Contact File] The Contact File on which to perform the User Name Change.

[Current User] Select the current name, the one you wish to be changed.

[Change To] Select the new name you wish to appear in all affected records.

[Select ALL] Selects all the affected files check boxes to be evaluated for the name change.

[Deselect] De-selects all affected file check boxes.

Ö Affected Files Ö Listed are the 15 GoldMine files affected by the name change. You can choose to select them all with the above button, or just individual files.

 

USER NAME CHANGER Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /4 USALL

 

INI SETTINGS REPLICATOR

GoldBox-5 already allows you to replicate an entire USER.INI file to any number of other user INI files by using a Q-file and selecting the COPY FILE option.

This new capability allows you to replicate specific sections from one INI file to any number of other INI files. For example, you may want to use the DAVE.INI file as the master, and replicate its [Toolbar] section to the BOB.INI, MARY.INI and JOHN.INI files. Not only can this be done very simply, but the setup is saved and can be auto-launched just like any of the other utilities under the {Batch} menu.

INI SETTINGS REPLICATOR – SETUP SCREEN:

[Master INI File] Select the user INI file containing the sections you wish to replicate to other user INI files. Typically you can find the INI files in the GoldMine root path, but an INI file can be selected from anywhere on your system.

[Sub-User INI Files Selection] If you have not yet chosen an INI file, you are prompted to select one. If you selected at least one, you are taken into the Browser. You can select additional INI files by clicking the {Add} button. Sections to be replicated and Sub-User INI files are held in the same table, so even though you may see Section entries in the Browse window, you are restricted to selecting only Sub-User INI files.

[Master Sections to be Replicated] If you have not yet chosen a Section, you are shown a pick list of all Sections for the Master INI File. Otherwise, you are taken into the Browser, where you can select or delete Sections. Press {Add} to select a Section to be replicated. Sub-User INI files and Sections to be replicated are held in the same table, so even though you may see INI file selections in the Browse window, you are restricted to selecting only Master INI File Sections.

When the process runs, GoldBox-5 automatically copies the original Sub-User INI Files receiving the replicated Sections to the same name, but with an extension of GBX. This is a transparent backup of the file. After the process completes, you may wish to review the INI files that received the modified Sections from the Master INI File. If incorrect, you can always rename the .GBX file back to the original .INI file name.

 

INI SETTINGS REPLICATOR Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /5 IIDAVEFILE

 

AREA CODE SPLIT REPLACEMENT

NOTE: NOT AVAILABLE for GX5 LITE

In USA metro regions, an area code is occasionally split into a new one for certain exchanges (a.k.a. prefixes). GoldBox-5 makes this painless with a simple procedure. In the Main Contact file, Phone1, 2, 3 and the Fax are automatically checked and replaced. The procedure will check any user-defined fields beginning with UPHONE. In the Addl Contacts Tab file, Phone and Fax are also automatically checked.

Please note that the State field is used as a check, so only those records in the USA, Canada and the U.S. Territories are handled. Make sure your State field is accurate. If the procedure bypassed some records that should have been handled, the State field is the first thing you should check.

This is a table-based operation. Area codes and exchanges affected must be entered into the table at the {File} option. The "exchange" or "prefix" of a USA phone number is the 3 numbers which follow the area code. Example: In the number (216)777-5555, the number 777 is the exchange or prefix. Your entry in the table might look like this:

Old Code Exchange New Code City

216 777 440

Access the AREACODE.DBF table from the {File} menu. You can import into this table using GoldBox-5 if you already have a data file containing area code changes. Select {Import/Update} {Area Code Split Table} and follow the standard import procedure. You will notice, when you press {Map Fields}, that a special field template displays with the 4 necessary fields. Please note that the CITY field is optional on import, but the first 3 fields are mandatory. GoldBox-5 will add the entry to AREACODE.DBF only if there are Old Code, Prefix, and New Code values.

A CITY field was included in the table because some area code splits are based on it. When launching, pass in the word CITY as a 4th parameter if the area code splits are based upon it. By default, no city search is done by GoldBox-5 since it is extremely rare.

AREA CODE SPLIT REPLACE Launch Example from {Start} {Run}:

C:\GOLDBOX5\GX5 dep /A C:\PROGRA~1\GOLDMINE\COMMON\

(Pass in the Contact Path on which to perform the operation)

 

TEXT TO DBASE4 CONVERSION

This option cannot be directly executed - it must be setup as a Q-file launch. See below for more information.

You must use this option if doing regular imports or updates from an ASCII or SDF file, outputted by your mainframe or outside system. It performs the conversion of a text file into a dBase4 file automatically, provided both files already exist on disk and no structure changes are made. If your incoming text file changes, REMEMBER to change the dBase4 file structure to accommodate them!

You will need to initially create the dBase4 file. Please see the information on doing the initial creation of the DBF file, which will be receiving your text file conversion. Please see Parse ASCII to dBase or dBase4 File Creation in BR7

You must create a Q-file launch of this utility because the 7th parameter, which is used to hold an ASCII field delimiter other than a double-quote, may be literally interpreted by the operating system (Example: the pipe character is not seen as a valid parameter by the operating system). You can also use the 7th parameter to pass in a different separator (default is a comma). Please see the Special Note below if you are having intermittent problems appending a standard ASCII file into dBase.

See {Q-file Setup} for more information. Q-files

In your Q-file record you MUST include:

B-Code

F

Launch ID / Path name

Full Path and File name of TEXT file.

4th Parameter

Full Path and File name of DBF file.

5th Parameter

ASC or SDF (for ASCII Delimited or SDF Fixed Length Text.)

 

You MAY include:

6th Parameter

The word APPEND (in caps) if you want to Append, or Add to, records already in the DBF file. This might be the case if, for example, a text import is broken down into 2 or more identically formatted text files.

You MAY include:

7th Parameter

A delimiter character if the character fields of your ASCII file are delimited with something other than double quote. Example: | (pipe character)

A space, then the separator. Use the word TAB if the separator is a Tab, or the word SPACE if the separator is a space.

Special Note: If you have a standard ASCII file, normally you would never use the 7th parameter for the delimiter and separator, because those are assumed. However, in some rare situations, the regular dBase command to append a standard ASCII file may not operate properly. If you are having recurring problems such as this, you can force GoldBox-5 to run its manual parse. This has been proven to get around the dBase quirk, assuming the ASCII file is properly formatted. To do this, you would enter a double-quote in the 7th parameter, then a space, then a comma. The append of the ASCII records into dBase will process more slowly, but it may ensure reliability of the process.

Example of a Q-file entry:

Sort B-cd Launch ID or Path Name 4th Parameter 5th

0 F g:\as400\apps\inv.txt c:\gx5\as400inv.dbf ASC

 

PACK A GoldMine® FILE

This option launches a GoldMine® File Pack. Examples:

GX5 dep /P C:\PROGRA~1\GOLDMINE\USERS

GX5 dep /P C:\PROGRA~1\GOLDMINE\GMBASE\LOOKUP

GX5 dep /P C:\PROGRA~1\GOLDMINE\COMMON\CONTACT1

The 1st example Packs the Users file, the 2nd packs the Lookup file and the 3rd packs the Contact1 file. You do not need to follow with a Tag Rebuild since GX5 does that automatically.

You can also pass in an optional 4th parameter above as the word SYNC to cause GoldBox-5 to check for blank Record IDs. These are populated with standard Record IDs and a New Sync record is added to the appropriate Tlog table.

You can pass in an optional 4th parameter called ZZNEW to create a 'zzNew' Tlog entry for each record in the GoldMine table being packed. You really should be a sync expert before using this feature! This is typically used ONLY if you have deleted all Tlog entries for a particular GoldMine table, and want to start sync transfers from a central system from scratch. Redstone SoftBase Company simply provides the capability, but you will have to determine, based on your sync expertise, when and if it should be implemented!

GoldBox-5 creates a log entry of the file being packed, under {File} {Batch Session Summaries}. This displays the number of records evaluated before the pack, how many were removed, and how much memo file (Notes) bloat was removed by optimizaton.

GoldBox-5 includes a sample Q-file called QPACKALL.DBF which contains calls to pack nearly all GoldMine® files. You can alter this Q-file so it matches your GoldMine® paths, then run it. For example, the paths default to C: but maybe your system is on the G drive. You could do a global replace on this file and replace the Qpackall->Savesetup field with: StrTran(Qpackall->Savesetup, "C:\", "G:\")

 

ADDING A ZZNEW TLOG ENTRY

Please see:

PACK A GOLDMINE FILE

 

INDEX A GoldMine® FILE

GX5 dep /T C:\PROGRA~1\GOLDMINE\GMBASE\CAL

GX5 dep /T C:\PROGRA~1\GOLDMINE\COMMON\CONTACT1

The logic for the above calls is the same as for Pack, except that the Tags are rebuilt from scratch, without Packing. NOTE: Sequential launches can be setup in a Q-file, similar to the QPACKALL sample.

Generally speaking you should not do the following, but...... You can alter the 2nd portion of some CONTACT1 index tags, such as the CONTLAST tag, by passing in a BR7 command. For example, from {Start} {Run} this uses the first 4 characters of the Contact Name as the 2nd part of the index expression:

c:\GX5\br7 c:\apps\gm\common\contact1 contlast indexon upper(lastname)+upper(substr(contact,1,4))

You can also add Tags to files using BR7 but that is NOT RECOMMENDED!! If you want to preserve the Tags or the altered expressions, you must use GoldBox-5 to Pack or Rebuild Tags. Reindexing in GoldMine® will remove extra tags and go back to default index tag expressions. Remember that you can also drop, or remove, index tags using BR7. See the BR7HELP.TXT file for more information.

NOTE: GoldMine® Software Corporation does not endorse this capability and will not support it! Also: Redstone SoftBase Company cannot guarantee that adding or altering indexes won't cause problems! Use this capability at your own risk!!

 

 

COPY / RENAME / WIPE DISK FILES

Most of the time you won't use filters for these commands but if necessary, they can be implemented. Please see the FILTER section below.

PLEASE BE EXTREMELY CAREFUL USING THESE LOW LEVEL COMMANDS!!!

To Copy a Disk File:

GX5 dep /C c:\goldbox5\gmexdata.dbf g:\files\export\mailing.dbf

GX5 dep /C c\goldbox5\gmexdata.dbt g:\files\export\mailing.dbt

GX5 dep /C c:\goldbox5\blanktxt.txt c:\goldbox5\gmexdata.txt

(From Here) (To Here)

You might want to use the Copy feature in the Q-file as a basic backup before doing a procedure in GoldBox-5, or to copy GoldMine® files to another location as a basic backup. Note: You can copy any files on your system - not just GoldMine® or GoldBox-5 files.

 

 

To Rename a Disk File:

GX5 dep /N c:\goldbox5\gx5_dep.TXT c:\history.txt

(From This) (To This)

The Rename can be used as a "Move" command. The above command will eliminate the file in the GoldBox-5 path and make it appear under a new name in the root drive path.

Please note that in the Q-file, you can use the 4th Parameter to key in an expression, of which the result is the file you wish to rename to. You must begin the expression with a single quote in order for GoldBox-5 to see the expression. Example: you want to rename a TXT file to today's date. The expression might be:

'c:\goldbox5\data\' + dtos(date()) + '.txt'

 

 

To Wipe (Erase) a Disk File:

GX5 dep /W c:\progra~1\goldmine\common\cfiles.zip

 

These commands can be added to any Q-file at {Misc} {Q-File Setup}. For Q-file entries the final path of the Copy and Rename goes in the 4th Parameter column.

 

FILTER FOR FILE COMMAND:

Filters can only be entered in a Q-file launch of the File Command, in the 5th Parameter, 6th Parameter and 7th Parameter columns. This gives you a total of 150 characters for the filter. The easiest way to enter the filter is to press [Exprn] while browsing the Q-file containing the File Command item.

You might want to use a small filter to be evaluated before the operation takes place. A typical example is, on an Export, to copy a blank file to the actual Export File Name if GoldBox-5 exports zero records. By default, GX5 will eliminate an Export File if no records were exported. But, some users don't want that - they still want the blank file to exist because further processing may depend on its existence. Let's say you are exporting to a file called C:\GOLDBOX5\GMEXDATA.TXT, an ASCII file. You've already created a text file called BLANKTXT.TXT with nothing in it. You would press [Exprn] and key the following (NOTE: Please use the 3rd example for the COPY command above as a guide):

.NOT. File("C:\GOLDBOX5\GMEXDATA.TXT")

This will only perform the Copy if GMEXDATA.TXT does not exist.

 

RUN WINDOWS / DOS PROGRAM

This would only be run as a Q-file entry, and then rarely. It allows you to launch any Windows EXE, DOS EXE, or DOS batch program from the GX5 Batch Processor. Using 'Z' as the Batch Code launches Windows EXEs, and using 'J' launches DOS programs. Example of a Q-file entry:

Sort B-cd Launch ID or Path Name 4th Parameter 5th

0 Z c:\appsdata\mycustom.exe

10 J c:\access\data\convert.bat

 

 

 

TURN SYNC STAMPING ON / OFF

This would only exist as a Q-file entry, since this capability can be accomplished manually at the {Service} {Config Screen}. Please read about this setting in that section above for more information.

This allows you to turn GX5's Sync Stamping ON or OFF while running operations within a Q-file. Generally you should NEVER turn off Sync Stamping but it may be useful in the above mentioned situations. Example of Q-file entries:

Sort B-cd Launch ID or Path Name 4th Parameter 5th

0 S SYNCOFF

10 R REUSERDEF01

20 S SYNCON

30 E XPCAMPN1

Here, you are doing a Global Replace on the User-defined 1 field with sync stamping OFF. Then you turn Sync Stamping back ON. Finally, you run an Export, based on values in the User-defined 1 field.

 

 

MANIPULATE GX5 SYSTEM FILES

You can Zap the Session Summary File, Pack GoldBox System Files or Replace a Field in a GoldBox System File. You pass in a /X as the second parameter. Each capability is described below:

The PACK and the ZAP below can only be individually launched, for example from {Start} {Run} or a shortcut icon, but not from a Q-file. However, the 3rd option, the Replace of a Field in a GX5 System File, can be launched in a Q-file. When setting up the Q-file and adding an entry to the task list, go to the bottom of the selection box and choose {0 REPLACE FLD IN GX5 FILE}.

Zap the Batch Session Summaries File:

Although you can do this from the {File} menu here is another way to do it. The command would be: GX5 dep /X ZAPSESSION

 

Pack the GoldBox-5 System Files:

This is the same as selecting the option at the {Service} menu.

GX5 dep /X GX5PACK

 

Replace a Field in a System File:

This is rarely utilized and is designed exclusively for ADVANCED USERS! It allows you to launch an edit of any field in a Saved Setup, the GoldBox-5 Configuration File or the Sub Filters File. You MUST use the BR7 Utility prior to launching this command to determine a few of the parameters. This option uses at least 6 parameters and up to 7.

You can make field edits to GoldBox-5 System files GXSETUP (Saved Setups); CONFIG (Config Screen settings); and SEQNBRS (Sub Filters for MultiTab() and sequential number definitions for the Generate() function).

The 6th parameter of this command contains the actual value with which you want to replace the field. The following rules apply:

For DATE: Straight entry. Example: 06/01/2000

For NUMERIC: Straight entry. Example: 650

For LOGICAL: T = True, F = False. Example: T

For CHARACTER: # in place of space. Ex: This#is#string#entry

(Note: Do not use the pound sign in place of a space if you are using a Q-file entry to launch this!)

NOTES on CHARACTER values:

GX5 dep /X GXSETUP 5 IMP_FILTER This#is#a#test#of#the APPEND

GX5 dep /X GXSETUP 5 IMP_FILTER ability#to#pass#in APPEND

GX5 dep /X GXSETUP 5 IMP_FILTER a#long#text#value. APPEND

The resulting entry in the IMP_FILTER field of record 5 of GXSETUP is:

{This is a test of the ability to pass in a long text value.}

A typical usage of this feature would be to change a filter expression prior to launching an export, rather than having to go into GoldBox-5 and pull up the Saved Setup and change it there. For example, you export records once a month based on a Date Span. You could simply change the batch program once

each month to reflect the new Date Span. In this case the example would be:

Parameters:

1

dep

2

/X

3

GXSETUP

4

7

5

IMP_FILTER

6

ContHist->OnDate#>=#CtoD("06/01/98").AND.#ContHist->OnDate#<=#CtoD("06/30/98")

The numbers above are for illustration only to show the parameter numbers.

Following is an explanation of each parameter:

1. {dep} Your GoldBox-5 login initials.

2. {/X} The utility to use, in this case the catch-all /X.

3. {GXSETUP} The GoldBox-5 System File you wish to edit. (In a Q-file, this is the LAUNCH ID column).

4. {7} The record # in the EXSETUP file you wish to address. The only way to determine this is to use the BR7 Utility, highlight the record you desire, and note the record number in the upper right corner.

IMPORTANT NOTE:

There is an alternate way to identify a record if you are modifying a Saved Setup in GXSETUP or SEQNBRS. You can pass in the Launch ID instead. This is recommended because if you delete Saved Setups, the record numbers can change. Use the Launch ID to ensure accuracy. For SEQNBRS, this is the Definition Label. (In a Q-file, this is the 4TH PARAMETER column).

5. {IMP_FILTER} The field you wish to edit. Again, note the field name while in the BR7 Utility. (In a Q-file, this is the 5TH PARAMETER column).

6. ContHist->OnDate#>=#CtoD("06/01/98").AND.ContHist-OnDate#<=#CtoD("06/30/98")

This is the value you wish to replace IMP_FILTER with, which is the Export Filter. Note the pound signs {#} in place of spaces. Note that filters don't really require spaces between fragments - they are only there for readability. The only time spaces are required in a filter is if you are using a literal phrase, such as: CONTACT1->SOURCE="PC Magazine". In this case, if you were passing in the filter, you would need to put a pound sign {#} between {PC} and {Magazine}. (In a Q-file, this is the 6TH PARAMETER column).

Finally, there is one more really geeky thing you can do with this. Examine the following example call:

1 2 3 4 5 6 (parameters)

GX5 dep /X GXSETUP XPADDR1 IMPORTFILE GBFILTER9

This lets you replace the field IMPORTFILE (which, for an Export, holds the Exported File Name), in the file GXSETUP for the Export Launch ID XPADDR1 with an expression you have keyed into the GBFILTER file, record # 9. Let's say you do a daily export and you want each Exported DBF file to have a sequential number.

Go to {File} {Sub Filters} and key in: EXPORT for the Def. Label, "EXP" for the Expression, and 5 for Places. This will generate entries like so: EXP00001, EXP00002, EXP00003.

Go to {File} {GX5 Saved Expressions} and key in GENERATED EXPORT NAME for the Description. For the Expression, key in:

SubStr(Gxsetup->Importfile, 1, Rat("\", Gxsetup->Importfile)) + Generate("EXPORT") + ".DBF"

This replaces the field with everything up to the last backslash (the drive and path), then adds the Generated file name, and finally hooks on the extension of DBF.

And there you have it. The 6th parameter must always start with GBFILTER and the following number is the record number holding the expression - no spaces between them.

 

GXW BROWSER

This is the most powerful direct access of GoldMine® files available! It is Remote sync aware and will do Sync Stamping where appropriate. The GXW Browser can also be used on ANY dBase4 file, by accessing it via the {File} menu. Unlike in GoldMine® and in most other GoldBox-5 operations, *deleted* records appear in the GXW Browser. Normally they are hidden in GoldMine® and GoldBox-5. This allows you to view the *deleted* records, or even Recall them (un-delete).

PLEASE NOTE: Be very careful when using GXW Browser! You have direct access to all GoldMine® files and there are fewer safeguards to prevent you from damaging the integrity of your GoldMine® data. As stated previously, Redstone SoftBase Company is NOT RESPONSIBLE for maintaining the integrity of your data. Use at your own risk!

As of version 5.47, the GXW Browser can now be launched as an exclusive window directly from the GoldMine menu system! When loaded, it will reduce itself to one-third size and appear in the lower half of your screen. Since there is a hot-link DDE back to GoldMine, whenever you access a record in Main Contacts, User-defined fields, Additional Contacts, Details, Linked Docs, Calendar, History, Opportunity Manager or Email Messages, the related Main Contact record instantly appears in GoldMine.

Please Note: The activation of the DDE hot link is now a switch that can be turned on or off at the {Service} {Config Screen}. Sometimes you may not want the DDE link active, so that you can view, for example, the Contact1 file in 2 locations - GoldMine and GoldBox-5 - using different index tags. Also, on some systems, intermittent errors such as "Expecting NUMERIC" may result from the DDE link being active. If this is the case, you may want to deselect the DDE hot link.

To load from the GoldMine menu (assumes under the {File} menu, but you can put it on another - see the GoldMine help for FileMenu for more information).

Load your User INI file, such as DAVE.INI, into a text editor, such as Notepad.

If the FileMenu section does not exist, please add it, surrounded by square brackets.

Your entry would look something like this:

[FileMenu]

opt1=&GXW Browser,c:\goldbox5\gx5 dep c:\goldbox5\CONTACT1,,1

Explanation:

&GXW Browser = the name of the menu option. The ampersand means the following character will be underlined as a hot-key. You can call the menu option anything you want.

c:\goldbox5\gx5 = the call to GoldBox-5. Substitute your actual drive and path if necessary.

dep = your login initials to GoldBox-5. Substitute with your own.

c:\goldbox5\CONTACT1 = the GoldBox-5 path, a backslash, then the GoldMine file you want loaded initially into the GXW Browser. Please note that the first part is the GoldBox-5 path - NOT a GoldMine path! This is necessary so that GoldBox-5 can put itself into its own path and see all of its system files.

That's it! When you reload GoldMine, you will see the menu option. Click to access the GXW Browser.

Because of the DDE hot-link to GoldMine, you now have the option to use extra indexes you may have created to instantly find a record in GoldMine. For example, you may want to have an index on a user-defined field. After creating it (with the BR7 capability for auto-generating an index tag), you can click [View] in the GXW Browser and activate that index tag. Then click [Find] for the indexed search.

An example of a BR7 launch statement (from Start Run or from within a Q-file) is found in the GoldBox Quick Start Guide. The file is GBXQUICK.DOC in your GoldBox-5 path.

The GXW Browser is invoked whenever you manipulate the GoldBox-5 system files, such as all items listed under the {File} menu. Generally, you can directly edit fields of GX5 system files, but not directly edit GoldMine® fields. You can edit individual GoldMine® fields in a sync-aware fashion, by using the [Flag] button, but you should normally use GoldMine® itself for editing. To operate the GXW Browser:

Let's take a look at how the GXW Browser screen is laid out:

The blue title bar at the top displays the file and the index tag currently active. If you are browsing the Main Contact File (Contact1 or Contact2), the Email Address and Web Site appear here. If browsing Calendar, History, Groups or Supplemental files, the Company, Contact and Phone of the related Main Contact are displayed. Otherwise, this Text Bar is blank. Since the GXW Browser is also used to view and manipulate GoldBox-5 system files, this Text Bar may display information pertinent to the file you are browsing.

Directly underneath are 37 buttons, each of which will be discussed below.

To the right of the gray buttons is a Status Bar. This shows which record number you are currently resting upon, the total number of records in the file, whether Scope is ON or OFF, and finally the default Contact File. If the record you are resting upon is *deleted*, the bar turns blue. If the record you are resting upon is *Flagged*, the bar turns violet and the word FLAGGED appears in the Status Bar. The bar remains blue if the record you are resting upon is both *deleted* and *Flagged*. See the [Flag] button for more info.

The white area of the screen displays the rows and columns of your file. Rows correspond to records, columns to fields. You can see more fields, to the right or left, by clicking on the scroll bar at the bottom.

 

GXW BROWSER - BUTTON DEFINITIONS:

Depending upon which file you are browsing, some buttons may be grayed out, which is normal. The column headings always equate to field names for GoldMine® files. For GX5 system files, they may be more descriptive than the actual field name.

If browsing the Contact1 file, the first 3 buttons at the top left appear in blue as CAL, HIST, DETAIL. This allows you to instantly view or print all Calendar, History or Detail records attached to the current Main Contact in the Browser. The current record is always the one being pointed to by the black arrow at the extreme left of the screen. When one of these buttons is clicked, you are taken into the Filter & Expression Builder, where you can limit the Tab records being listed. The default is to list all. Especially for Details, recommend you limit the records at least by the Detail Type, which is the Contsupp->Contact field. As in: Contsupp->Contact = "Invoice"

[Add] Adds a new record.

[Exprn] Several GX5 system files have expression fields, and this allows you to key in the expression using the Filter and Expression Builder. There is usually no verification on these expressions, so if you click the [Result] button you'll probably get an Error or an inconsistent result.

[Photo] Photocopies current record. Useful if only a few fields need to be modified in the new record.

[Tlog] For any record in any GoldMine file, you can display its Tlog history. Directly underneath the entire record's field values are displayed. You can easily print the display.

[Del] If the current record is *deleted*, it is Recalled (or un-deleted). Otherwise, the record is deleted. When recalling records, if you are browsing the Contact1 file, you are prompted to recall its related Tab records, which generally you want to do. The recall is sync-aware. The Status Bar turns blue when you are resting on a *deleted* record. You cannot delete Contact1 records - this should be done in GoldMine.

[Flag] This is a toggle, to Flag or Unflag the current record. You will know if a record is Flagged by looking at the Status Bar - if it's violet, it's Flagged. Also the word FLAGGED appears in the Status Bar.

This is a very powerful option when you want to do certain global operations on a relatively few records. The operations that benefit the most would be the Export and the Global Replace because they have special logic to address ONLY those records Flagged. It's a great timesaver.

After Flagging records you desire with this key you can use the Flagged() function in filters for operations. The Flagged() function returns a TRUE if the record is flagged, FALSE if not. For Export and Global Replace, if the ONLY item you have in the filter is Flagged(), GoldBox-5 will address ONLY the Flagged records - it will not evaluate the entire file. You can see the benefit, if, for example, you have 100,000 contact records and just want to Global Replace 15 of them. Or Export only the 15 records. The operation will be finished almost before you know it.

When browsing GoldMine® files, direct edit mode of the columns is turned off, but this is a way to edit a field in a sync-aware fashion. Flag the record, do a Global Replace and make sure you ONLY use the function Flagged() in the filter.

If you have Flagged some records and want to review them before doing an operation, you should click [7] to go to the top of the file, then [Srch]. Select the Flagged() function from the Functions list. You will be taken to the first Flagged record. To find the next, click [Srch] again and select {Yes] to continue the Search. You will be taken to the next, and so forth.

Record Flagging is local to the GXW Browser only, and only against the file you are browsing. When you choose a new file all records begin unflagged.

[Memo] Displays the value of a memo field, in GoldMine's case, most often the Notes field. For GoldMine® files, any edits you make to the Note are NOT saved. These should be edited in GoldMine.

[Write] Writes out the current record to the text editor. You can print the file by pressing [Print]. All long character values and the memo fields are printed entirely and will wrap around as needed. A very quick way to see everything contained in a record. This is also extremely useful if browsing a Tab file and you want to instantly see the related Main Contact record.

[TRY] This button allows you to try an expression against the current record. You are taken into the Expression Builder where you will key in your field expression. When you click [Go], the Field Expression and the Result are displayed in a Text window. Underneath display all the fields of the current record, one per line.

[View] All the index tags along with their expressions are displayed and you simply pick the one by which to view the file. To view in natural order, pick (NO TAG). This button works differently when you are browsing the GX5 system file Batch Session Summaries. For this file only, an enhanced display of the current Session Summary record is displayed for easier reading and evaluation.

[Find] This record location is based strictly upon the index tag you have active. GX5 makes this as easy as possible by displaying the index tag expression and by actually showing the result of the index tag, based on the current record! It can be used as a guide to key in your Find value. This is a 'soft' Find - if GX5 doesn't find the exact record with your Find value, it takes you to the next closest.

[Jump] Allows you to instantly access any record number.

[Search] This is also known as Locate. It allows you to locate a record, via a filter, independent of the current index tag. It's the most thorough way to locate a match but it may take longer than an indexed Find because all records are evaluated. When you click here, a Yes/No box appears. If you click [Yes], the next matching record is searched for, allowing you to step through your file and sequentially locate matches. Very handy. The [Continue] clause, as this capability is known by, is based on your most recent Search filter. If you click [Yes] and you don't have a Search filter, you will get an error called: CONTINUE without previous LOCATE. Click [Ignore] to go past it. To key in a Search filter, click [No] when prompted and you will be taken to the Filter and Expression Builder. Example for use: You want to sequentially access your *deleted* records: Key in the function Deleted() as the Search filter.

[Scope] If you have an index tag active you can set a Low and High scope and the GXW Browser will stay within that range of records for viewing. The status of SCOPE displays in the Status Bar. If you try to go either above or below the Scope range, the GXW Browser takes you to the 1st record in the Scope range. Global operations, such as Delete, Recall, or Replace, ignore the Scope range - this is strictly for viewing.

[Status] Shows the name of the file you are browsing, the BDE Language Driver and Character Set, and the index tags created for the file, along with their expressions. Appears in the Text Editor, for view/print.

[Fields] Displays the Field Structure to the Text Editor.

[List] Lists a number of records to a text file in a basic report format. A setup screen displays when you click this button, with the following options:

(Optional: Listing Title) You can key in a 70-character title line for the listing.

[Primary Filter] You can filter the records being listed.

(Max # of Records to List) The default is 50 records, but you can choose any number, up to the total number in the data file.

Please Note: GXW Browser will interpret only 1 of the following choices:

Ö Select ALL Fields for Record Listing? Ö If you choose this option, all fields of the data file are included in the listing, using the default field order, and the field names as column headings.

| Select Fields to List | In the list box on the left, you can custom select the fields to appear in the listing. To select multiple fields, highlight the field and press Ctrl-Left.Mouse.Click. Any fields in the box highlighted in blue are included in the listing. You cannot change the field order or column headings, which default to the field names. Please note that the list box choices are completely ignored if you have the above check box selected, or the following one selected.

Ö Set Headings / Column Order of Fields? Ö This choice offers you the most flexibility in the look of the listing. If you check off this option, please press the button directly underneath.

[Browse Fields and Set Column Order] This takes you to a simple browser of the fields you wish to list. To select and set the order of the fields being listed, edit the POS column with a number less than 999. Any field that has 999 as its value will not be included in the listing. The 2nd column is titled Cust Label, and it allows you to replace the default field name with your own column heading for that field. Maximum of 15 characters. IMPORTANT: You MUST NOT alter the 3rd column, which lists the field names; if you do, the listing will error out. Press [GO] at this screen to return to the Listing Setup screen.

After completing the setup, click [GO] to begin the listing, or [Cancel] to abort it. Records are listed to a text file that is made up of the data file name and the extension of GXW. When the process completes, you are informed of this, and then you are put into the Text Editor to view/print the Record Listing.

[X-del] Global Delete. This key is turned off for Contact1 since the capability already exists in GoldMine® and GoldBox-5. Please make sure you key a filter, otherwise ALL records are deleted.

[Zap] Instantly erases all records in the file! Obviously use with extreme caution. Not available for GoldMine® files.

[U-del] Global Undelete, or Recall. If you are undeleting in the Contact1 file, you are prompted to also undelete the related Tab records, which generally you want to do. Please note that you do not need to include the function Deleted() in the filter, since GX5 handles that transparently.

[Export] Exports selected records to dBase3, dBase4, ASCII Delimited, SDF Fixed Length Text or Paradox. Please note that this is a SIMPLE export. The entire record is exported - you cannot select specific fields or export expressions. For a full-blown export please see the section on {Batch} {Export}.

[G-Rep] Globally Replace any field. Use with caution and please backup the data file (and associated DBT file) first!

[Break] You simply select a field (or a field fragment, or even a combination of fields) to break upon, and GoldBox-5 produces a listing of all unique entries. If browsing Contact1 or Contact2, the existence of an F2 lookup entry for the field occurs transparently and is noted.

[D-dup] Allows you to delete duplicates in a sync-aware fashion based on field matching for any GoldMine® file. You are prompted for an optional Filter, to determine which records of the file to include in the process (Default is ALL). And you are prompted for a required Field Matching expression to determine a duplicate. The result of the expression cannot exceed 100 characters! For the Main Contact, Tab and Lookup Files, a default expression is provided for your convenience, which can be altered. Remember that if you accidentally deleted records you can recall them individually with the [Del] key or globally with the [X-del] key.

[1.Count] Counts number of records meeting a filter.

[2.Sum] Sums a Field Value. This works even if the numeric data is stored in a character field - if that is the case, remember to use the Val() function around the field so it is evaluated as a true numeric.

[3.Min] Finds the MINIMUM, or smallest, value based on your field or field expression. The value displays, and you are also taken to the record which corresponds to that value.

[4.Max] Finds the MAXIMUM, or largest, value based on your field or field expression. The value displays, and you are also taken to the record which corresponds to that value.

[5.Avg] Finds the AVERAGE value based on your field or field expression.

[OPEN] Without leaving the GXW Browser, you can open another GoldMine table (if you accessed through {Misc} {GXW Browser}) or another dBase4 table (if you accessed through {File} {Browse any dBase4 File}).

[Up-Angled-Arrow] Goes to the Top of the file. This uses the Wingdings 3 font file, so if you don't have that, you may want to try installing it in Windows. Otherwise the character j appears here.

[Down-Angled-Arrow] Goes to the Bottom of the file. This uses the Wingdings 3 font file, so if you don't have that, you may want to try installing it in Windows. Otherwise the character m appears here.

[Size] Allows you to toggle the size of the Browser screen to full or half screen mode. When using with GoldMine, half-screen is very handy, as you can see the hot-linked record in GoldMine being displayed.

[Move] An information box appears, with instructions for moving any column.

[Shrink] An information box appears, with instructions on how to Shrink or Expand a column width.

[Lock] Lets you lock, or freeze, a number of columns from the left. A value of zero unlocks all columns.

[Quit] Exits the GXW Browser. If you loaded from a GoldMine menu option, GoldBox-5 itself is closed.