Document Sample
MICROSOFT® VISUAL FOXPRO® ADVISOR® Is Your Application Already Powered By Docstoc
					Product        Area

Capital Gold   Uninstall
Capital Gold   Clear Inactive
Payroll        Users

DOS            Ping
Enterprise     COM Toolkit

Enterprise     Currency Rate

Enterprise     Currency Rate

Enterprise     Form Designer
Enterprise     Inactive Users
Enterprise     Report Writer

Enterprise     Unpost/Repost
Dev            Get Equal
Fax System     Not Working
FoxPro         Applications
FoxPro         Date Add
FoxPro         Memo Scan

               Creating New
Opera          Company

Opera          Development

Opera          Multi Currency

Opera          Stock
               Lost Manager
Opera          Password

Opera 16       Numeric Overflow
Opera 16       Positioning

Opera 16       Print to Email

Opera 16       Stock

Opera 2        Documents
Opera 2       Indexes

Opera 2       Payroll Upgrade

Opera 2       PDF Printer

Opera 2       Importer

Opera 2       Report Design

              Bespoke Data
Opera 2       Dictionary Merge

Opera 2       SOP Documents

Opera 2       Reports
Opera 2       Data Dictionary
Bespoke       Merge

Opera 2 Dev   Common Functions

Opera 2 Dev   Common Functions

Opera 2 Dev   Data Sessions

Opera 2 Dev   Form Caption

Opera 2 Dev   Grids

Opera 2 Dev   Help Files
Opera 2 Dev   List Pages

Opera 2 Dev   Look-up Captions
Opera 2 Dev   Methods
Opera 2 Dev   Opera 16 Functions

Opera 2 Dev   OperaDev

Opera 2 Dev   RunCom
Opera 2 Dev   Status Bar
Opera 2 Dev   Subclassed Forms

Opera 2 Dev   Subclassed Forms

Opera 2 Dev   Table Captions

Opera 2 Dev   Toolbar
Opera 2 Dev   Tool Groups

Opera 2 Dev   Maintenance Forms
Opera 2 Dev   Sqmsg
Opera DOS     Install
              End Of Year
Opera Payroll Cleardown

PIM            Upgrade

Printing       Generic

Visual Basic   Runtime DLLs

Visual FoxPro Containers

Opera 2 Dev    NewSOPDetails
Web-site       Buttons

Outlook 2003 External Access

Opera 2        Indexes

Opera 2        Bespoke

Opera 2 Dev    Toolbar

Opera 2 Dev    Replace Command

Opera 2 Dev    List Controls

Opera 2 Dev    Errors

Opera 2 Dev Menus
Visual FoxPro Replace Command

Opera 2 Dev    Action Menus
Opera 2 Dev    ntenance

Opera 2 Dev    Search
Opera 2        Loading Error
Opera 2 Dev    IsValid
Opera 2
Reporter       Adding Bespoke

Opera 2 Dev    SOP/Invoicing

Opera 2 Dev    Subclassed Forms

Opera 2 Dev    Opening Tables
Visual FoxPro Passwords

Opera 2       Error In History

Opera 2 Dev   Table Captions

Opera 2 Dev   Table Names

Opera 2       Sales Account
Opera 2 Dev   Search

Opera 2       Reporter
Visual FoxPro Numeric Overflow

Opera 2       Version 5

Opera 2       Version 5

Opera 2       Search

Opera 2 Dev   SQL Conversion

Opera 2       Report Design

Opera 2       Reporter

Opera 2       Version 5
Opera 2       UDS

Opera 2       Payroll

Opera 2       Menu Structure

Empathy       In House System

Opera 2       Reporter
Opera 2       Development
Opera 2       Development

Opera 2       Development
As well as the program files themselves the C:\Program Files\InstallShield Installation Information\{E4E182CA-0A03-11D4-9472-
00E0294DA77E} directory should be deleted along with the corresponding
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\ {E4E182CA-0A03-11D4-9472-
00E0294DA77E} key in the registry. Also anything within HKEY_LOCAL_MACHINE\Software\Pegasus\Captial Gold.
To clear inactive users in a single user Capital Gold Payroll installation, when you are presented with the login screen type in
"password", this will allow you into the system where you can clear user locks.
In order to be able to Ping a server by name without setting up DNS (Domain Name Server) you can create a file called "Hosts"
with Enterprise.iToolkit2 object available from V5.51 onwards has more facilities than Address some spaces and the be used in
The no extender in the C:\Windows\System32\Drivers\etc directory containing the IP Enterprise.Toolkit and should server name.
When entering transactions via the Comm Toolkit, if you want to override the currency exchange rate on the transactions the
Use_Ex_Currency setting in Exchdll.ini must be set off.
When the system is set to Company Rate the exchange rate that is displayed on the Document Header screen is STILL the Daily
Rate. The daily rate is STILL used for the calculation of VAT, if this rate is amended at the point of order creation is will only
affect the value of the VAT. If the rate is amended, progression of the Order to Delivery will cause the amended rate to be reset
to the currently stored Daily Rate. If this is then amended again, progression to Invoice will again reset the exchange rate.
To space out the lines in a table when in Enterprise Form Designer, you need to add a column to the table (can be anything you
like) and make its width zero, then you can change the font on this column to be twice the point size of the fonts used in the other
Clear inactive users by running the Logged In User Report from the Tools menu in the Multi Company Manager.
To add a calculated field to a report put a + in the Field Code.
Logon as SYSTEM with the daily password, then Procedures\Posting Menu\Partial Unpost or Total Unpost. To repost select
Post All Daybooks.
The .GetEqual method doesn't always get the first matching record, instead use .GetGreaterThanOrEqual and then check that
the result is equal.
Services on the server that need to be Started or Stopped/Started as appropriate are DvISE Service Layer, DvISE TLD001,
To test if an application is a duplicate of an application that is already running, "IF SET('RESOURCE') = 'OFF'" then it is!
To add a year on to the current date use "ctod(left(dtoc(date()),6)+alltrim(str(year(date())+1)))"
Memo Scan works fine in Visual FoxPro as well as FoxPro.
To create a new company in Opera the following need to be set up:- Within Nominal: Cost Centres (If required), Types,
Subtypes, Accounts (Debtors Control - B/S Asset, Creditors Control - B/S Liability, Debtors Suspense - P/L Income, Creditors
Suspense - P/L Expense, Discount - P/L Income, Bank Account - Asset - Link using Bank Accounts, Profit - Capital and Reserve,
VAT - Liability), Bank Account(s) - Link bank account(s). Within EC VAT: Countries. Within System/Maintenance: VAT
Processing - This can be copied from another company e.g. Z (Use copy icon on tollbar) and accounts amended.
If you increase the size of sname.sn_name, you must increase the size of snoml.sx_comment by the same amount as this field is
populated with the account name and a ten digit reference.
If Opera is behaving as dual currency (I.e. Home Currency and Euros only) but the activation is multi currency then this could be
due to the Home Currency field on the Company Profile not being populated.
The following fields in the Opera database contain Stock/Product codes: cbarcd.cb_ref, cbatch.cb_cnref, cbatse.ca_cnref,
cdetl.cd_ref, cgline.ci_cnref, cline.cy_assembl, cline.cy_cnref, cline.cy_cxassm, cmbuyd.cd_ref, cname.cn_ref, crline.ri_cnref,
cserno.ce_cnref, csplit.cz_cnref, cstruc.cv_assembl, cstruc.cv_compone, cstwh.cs_ref, ctitem.cu_cnref, ctrack.ck_cnref,
ctran.ct_ref, dmline.do_cnref, doline.do_cnref, drline.dl_cnref, dsprod.ds_cnref, hsanal.sa_product, ialloc.it_stock, itran.it_stock,
jbline.jb_stref, jccode.ja_stref, jcline.jd_stref, jeline.jd_stref, jwipr.jw_stref, lcprod.lc_cnref, litran.lt_stock, lpline.ll_cnref,
pline.pl_cnref and sanal.sa_product. These are the fields that need to be changed in order to amend a stock code. Cbarcd and
In FoxPro select SEQUSER. LOCATE FOR user="MANAGER". REPLACE count1 WITH VAL(SYS(2007,"")). REPLACE count2
WITH VAL(SYS(2007,user+STR(count1)+cos+access)). Manager password has now been removed.
Numeric overflow in purchase ledger on one particular account could be caused by the pay flag getting too large. The fields in
Opera can only store a number up to 999. The issue can be resolved by resetting the flag back to 1. In PNAME locate the
record for the offending account and change the value in PN_NEXTPAY from *** to 1. Look in PTRAN and locate the latest
transactions for the account, change any instances of PT_PAYFLAG reading *** to 999.
Windows XP not set to Windows Classic theme causes "Unable to Position Object on Screen" errors in Opera.
When E-mailing from Opera V3.02 and above, the following message is displayed 'FOX.REG or MSMAPI32 not installed' . To
resolve this problem open the "OPERAW\OPMAIL" subdirectory and double-click on 'FOX.REG' to update the registry with the
new DLL settings. If this does not resolve the problem, run the INSTALL.EXE from the Opera V3.02 and above for Windows
installation CD's 'D:\WINDOWS\DISK1\DLLs' directory. Ensure that you run this from each affected workstation. This will install
and register the new MS MAPI32 DLLs which were installed at the same time as Opera V3.02 and above. Opera will now be able
to communicate with the MAPI compliant E-mail application you are using, for example: Microsoft Outlook 2000.
Stock adjustment gives error "Exceeds system limit", this depends on the number of decimal places on the stock profile. 0 d.p.
gives maxima of -128205 and 1282051, 1 d.p. gives -128205.1 and 1282051.2, 2 d.p. gives -471698.11 and 4716981.12, 3 d.p.
doesn't give this error because any values greater than -99999.999 or 999999.999 give the message "Quantity will be too large
The following field definition will print the Invoice Tax Point date for Invoices/Repeat Invoices and reprints of either:-
If you change the structure of NACNT then must edit the "Primary" field in the NACNT definition in the "Table" table to contain
"NACNT1" otherwise the primary index will be lost for this table when the project is deployed. This causes various Invalid
Nominal Account messages to be produced.
If you get the error "Detail band is too large to fit on page" when updating the payroll it is probably to do with the PDF printer
driver. If you go into the printer driver and change the physical margin for the vertical and change it this may cure the problem.
The margin is normally set to 6 but if you change it to 3 or below you then do not get the problem. You can also get round the
problem by going to the design and saving it after changing the print area to print "Whole Page" not "Printable page". Both of
these fixes may get ovewritten at an upgrade, although you could save the design. Be aware that if you are printing to a generic
print design as a default the system will use the design of the PEG053 to do the update not the generic design.
Error 1797/1429 Code 5 caused by the following files being missing: ACFPDF.TXT, ACPDF157.DLL and PDFUI157.DLL. These
need to be in c:\winnt\system32\spool\drivers\w32x86. User needs rights to create printers.
On a system with multiple installs of Opera 2, when running importer the import will always be performed in the primary install and
not necessarily the installation from which you are running!
If you get various errors on ITRAN variables when re-printing documents in SOP or invoicing this is caused by a problem with the
field order of the detail line fields in the table behind the report design. This is resolved by cutting the
"p_oCallingObject.SetReportTable()" field and pasting it back and then cutting and pasting all the other fields together.
When merging the fields from a bespoke Data Dictionary if a Unique Index Violation occurs this could be caused by a
discrepancy between the numbers already used and the next number in the Uniqueid table of the Datadict database. Compare
the Id fields already used in each table correct Uniqueid accordingly for that table.
If a new SOP document is created by progressing another, e.g. Invoice to Credit Note or Invoice to Invoice and the document
posts to the wrong account in the Sales Ledger this might be caused by a record in IHEAD having "** AUTO **" as its document
When running a report the message "X_PRINT_L is not found" appears, this can be resolved by creating a report variable by this
name storing a .F. value.
If the data dictionary merge fails with Unble to Update cursor, this could be caused by the bespoke data dictionary tables being
read only. For example if they've been copied from a CD.
In Appevents.prg any procedures which are added after the EndDefine will be able to be called from anywhere in Opera. It would
be possible to build up a library of commonly used functions and put them all into a project containing only these functions.
The GetCurrentForm() function can be used within Appevents.prg or other programs in order to find out from which form the
function has been called.
To launch a form from an Action Button in the same data session as the parent form, use runformmethod("launcheditform",
"formname") in the command to load the form. Ensure the form has its Data Session property set to 1 (Default) and not 2
When returning captions for forms which include table fields the alias for the fields must be explicitly coded even if the field is in
the form's primary a grid is done in the setup method of the grid (objSimpleGrid): lccolumnstring is a string containing a
Amending fields shown
comma separated list of the fields to display; lninitialsortcolumn contains number of the column on which the grid will be sorted;
this.hiddencolumns is a string containing a comma separated list of the numbers of the columns which will be hidden;
this.customheaders is a string containing a comma separated list of the headings for each column; this.rightaligncolumns
contains a comma separated list of the numbers of the columns which should be right aligned; this.customwidths contains a
comma separated list of the widths for each column.
When subclassing forms it is important to ensure that the help id on the subclassed form is set in order that the standard Opera
help file will still be called. Alternative Help files can be created in either .CHM or .HLP format. Pegasus create their help files
The cursor for the lists on paglist of page frames is only created when the page is selected not when the page frame is created.
When a lookup list box/combo box/text box has an associated caption field this needs to be populated in the isvalid of the control
and also on the updatetitlebarcaption on the form (to cope with navigation to other records) and also on the Click Event of the
page of the pageframe (to cope with selection from the list).
Any method whose name starts with "get" returns a string.
Most Opera 16 functions are available in Opera 2, there is no documentation however so it is a process of try it and see!
When running OperaDev, when the Spy window is active if you suspend processing you then have access to all the standard
VFP Debug facilities. Use Resume to continue processing.
RunCom ("command id") will run a command as though it has been selected from a menu. This can be used in order to launch a
command from a command button on a form for example.
The form method updatestatusbar will set the status bar at the bottom of the form when passed a decimal fraction, e.g. 0.5.
When the same form has been subclassed by two different bespoke projects the one that is alphabetically last is the one that will
If you are adding extra fields to a form it is better to use an action menu item to launch an extra form containing the extras, this
way it will not conflict with any other bespoke modifications.
Once a new table and/or fields have been reverse engineered into the COM Toolkit data dictionary captions should be added by
using the data dictionary options within the toolkit.
Icons can be placed on the toolbar by adding them into _MSYSMENU - General. Icons (as far as Opera 2 is concerned) are
bitmap images of 24x24 pixels. The disabled icon is generally a black and white version of the (colour) enabled icon.
To create a new tool group (e.g. and Action Button) revert the currently selected group then click on new and a wizard will run.
Since the POSTSAVE method on data maintenance is called by the SAVE method, anything that needs to be done after all of the
saving using Sqmsgshould second parameter of 1 to keep the message on screen, it can be released by setting gowait to null
When has ocurred with a be called from SAVE and not POSTSAVE.
(gowait = null).
To install Opera DOS from CD at the run command type "d:\dos\disk1\install fixed"
Ran end of year cleardown without selecting all the groups, how do I zeroise the balances on the remaining groups? Select
Zeroise Balances instead of End of Year Cleardown.
When upgrading PIM the services are reinstalled. As the services require administrator login priviledges it this will need to be re-
setup before it will run correctly.
Changing the Printer Driver on the Details tab of a printer's Properties within Windows to Generic/Text Only will automatically
allow graphically designed forms to line up when printing on a best-fit basis. This works best with Enterprise but also works with
Opera to a lesser extent. Field sizes will be as designed in the form layout and any text that does not fit in the native printer font
Error "Component MSSTDFMT.DLL or one of its dependencies is not correctly registered: a file is missing or invalid." or "The File
MSSTDFMT.DLL is out of date or missing. This program requires a new version.". 1) Download new file (Will be called
MSSTDFMN.DLL), rename it correctly and copy to SYSTEM or SYSTEM32 as appropriate. 2) Start\Run and type: regsvr32
\windows\system\MSSTDFMT.DLL or regsvr32 \WINNT\system32\MSSTDFMT.DLL as appropriate (Case is sensitive!) - you will
get the message "DllRegisterServer... succeeded". If this doesn't work then VBRUN60.EXE will update the required DLLs.
If a table is in the wrong database container modify the container and delete the table but leave it on disk. Then open the correct
container and add the table. In Opera 2 the table's name will have to be changed to remove the company letter. If the table
cannot be added because it is still in a container open the table itself free and when given the option to "locate the link, delete it
or cancel" select delete. It will then be possible to add the table into the correct container.
When adding fields to the NewSOPDetails form the hideform and restoreform methods have to be coded to remove and replace
respectively the controlsource property of any added controls. It is essential that these changes are made BEFORE the
dodefault() in both of these methods. On the restoreform method the controlsource should only be set if this condition is met
"llcached = (upper(thisform.cachestate) = "CACHED")".
The text on the hover buttons on our web-site is Arial 10 Bold.
When a program is trying to access Outlook 2003 the increased security causes a yes/no message to be displayed (For example
in Opera II printing statements to e-mail). This can be avoided by downloading ClickYes here:
If an index has become corrupt and the error message "Index does not match table" this can be fixed by deleting the corrupt
index, copying the index from another company and renaming it. Then run UDS with a forced reindex.
When a piece of bespoke crashes with the error message "Command contains unrecognised phrase/keyword", often with Line of
Code being "candeleteuser()", this is most likely caused by macro substitution involving a file path that contains a space with no
quote around it. The line number in the error log will usually help locate the problem line.
To force a toolbar button to refresh code the following:
thisform.sendmessage("RefreshCommands","xxxxxx",null,null,"Command") where "xxxxxx" is the commandid within quotes.
If a replace command fails to update the contents of the table it could be that the table concerned is buffered, in which case
calling tableupdate(.T.) after the replace will resolve the issue.
Any control with a list has a temporary cursor holding the list, this is called "tmp"+the control name, e.g. for cboName the cursor
is called tmpcboname.
If you get strange errors when launching a bespoke form e.g. ("No PARAMETER statement is found.") it could be caused by the
standard Opera system having a form with the same name…
To add a new module level menu create a blank command class in the usual way, then right click on the "main menu" in the tool
structure and select Create Tool Group then select the created command. To add a sub-menu, drag a dummy command class
onto the tool group, this will be added as a command but when another command is dragged onto it you will be given an option to
When using REPLACE it is a good idea to use the IN clause to specify the table, otherwise strange things sometimes happen.
If you get Class Definition Not Found error messages when accessing items on Action Menus, check that the project has not
been deployed in more than one table. For example project CWEG0001 deployed into CWEG0001.DBF and CWEG001.DBF…
The minimum required to make frmMultiRecordMaintenance work is: On the form (Opentables, Primaryalias, Setupgrid -
grid.setup(sql-select statement,initial sort column,.F.)), On the grid (Gridalias, Keyfieldname, Sourcetablealias,
When using the Pegasus Search facility it is necessary for the cursor created by the search to contain all the fields present in the
current index for the table being searched. For example if the current index is "Supplier + Product" then the fields "Supplier" and
"Product" have to be present in search.dbf.
If you get an error message with the text "." when loading Opera 2 with bespoke this is generally caused by a missing icon.
When returning False from IsValid, if the cerrormessage property is populated the message will be displayed automatically.
If you've created report bases for a bespoke module and created a menu item for reports, the commandid of the menu item must
contain "report" and the toolitems and toolgroups must be copied into the main System database. (examples CWCOR001,
If the same commandid is added to the SOP menu and the invoicing menu, when launching User Profiles the error "Specified
collection key already exists (commandid )" occurs. Clicking on Ignore allows everything to run OK. The solution is either only to
add the item to one menu or the other or create separate commandids for each menu.
Sometimes when a form is subclassed an error is encountered loading the subclassed form because it references an object
named after the form. For example the form frmWorksOrderProcessing references frmWorksOrderProcessingAttributes, in the
event of the form being subclassed then the subclassed form will reference frmXXXXXXXXWorkOrdersProcessingAttributes
where XXXXXXXX is the bespoke name, therefore in Appevents a class should be defined thus:- Define Class
frmXXXXXXXXWorksOrderProcessingAttributes as frmWorksOrderProcessingAttributes.... ....Enddefine.
A function is now provided to open tables with a specified company letter and alias prefix. SQG_ALOPN_L(Company ID, Prefix,
File List, Mode, Data Session, System, Another Company ID??) Only the first 3 or 4 parameters are required.
Password security can be by-passed in many FoxPro applications by pressing CTRL - 0 (zero) then ignoring any errors that
When opening Sales or Purchase History you get the error "Object Not Found". This may be caused by one (or more) of the
Analysis titles having the "^" character in them. Remove these characters via VFP or using the Command Line from View Error
Logs when logged in as Admin.
The name of new tables added into Opera 2 should be stored in the Comment memo, this allows the search forms to pick up a
meaningful description for each table.
When a bespoke table begins with the name of another bespoke table (e.g. PSJOB and PSJOBC) it is important that the table
with shorter name appears first in the bespoke data dictionary otherwise problems will occur when running UDS.
The following fields in the Opera database contain Sales Account Codes:- atran.at_account, chead.cx_saleacc, ctran.ct_account
(could also be purchase account sales if ct_type = A,I or W), hsanal.sa_account, hsanal.sa_daccnt, ialloc.it_account,
ihead.ih_account, ihead.ih_postacc, jchead.jh_account, jcntr.jc_account, jehead.jh_account, lcprod.lc_snacct, ldocs.ld_account,
lihead.lh_account, salloc.al_account, sanal.sa_account, sanal.sa_daccnt, secaud.se_account, shist.si_account,
sname.sn_account, sname.sn_stmntac, sname.sn_invceac, sprfls.sc_account, sterms.sr_account, stran.st_account,
stran.st_delacc, zcontacts.zc_account (only if zc_module = S), znotes.zn_account (only if zn_module = S). Also Characters 11 to
For the search to work correctly there has to be at least one index on the table being searched.
The data structure for the reports appended to menus has an inconsistency between V4 and V5, in V4 there is a field called
"disablebmp", in V5 this same field is called "disabledbmp". See TMB/Incentive Group documentation Appendix B for full details.
Records containing numeric overflow (******) in field x can be filtered for as follows: SET FILTER TO x = (1/0).
Crash when using search within Opera on V5 onwards may be caused by the User Account not being set up or set up incorrectly.
 The user has to be set up on the PC with Power User or Administrator priveledges with a domain of the server domain, not the
When loading Opera V5 onwards, to avoid the SOAP Toolkit message on version checking the Version Checking field
(VERCHECK) in SEQUSER needs to be changed from 3 to 1 for all users.
When using the Pegasus Search form with a cursor rather than the actual table, in order to get the correct captions it is
necessary to amend the getaliasforsearchengine() method to "return 'filename'" and the getaliasfromfield() method to "lparameter
lcfieldname return existing piece of bespoke to the SQL version, before the SQL Data Dictionary program can be run it will be
When converting an 'filename '". Example in CWTMBIG2, frmcwtmbig2stockcategories, txtBSWIP.
necessary to have a copy of SQLDD.DBC and all associated tables in the project's DataDictionary directory. This can be copied
from my "empty" project.
Remember that if a text field is not large enough nothing at all will print, remember also that on document designs the values are
more often than not text fields. Blank values on SOP documents are quite likely to be caused by this.
If standard tables have been amended in the bespoke data structure it is important to include the correct table description in the
Caption field within the Tables table otherwise when viewed in Reporter these fields will have the actual table name rather than
the description. e.g. IHEAD instead of Headers.
When converting an existing piece of bespoke written in an older version of Opera II to Version 5 and it is required to move new
standard fields on forms to accommodate bespoke re-arrangements the easiest way to do this is as follows:- copy the bespoke
source into a temporary directory below the C:\Program Files\Pegasus\Client VFP\ path, then you can re-arrange the fields as
required as the paths for parent classes will now automatically be pointing to the Version 5 system, copy the bespoke back to
where it came from and deploy in the usual way. When this bespoke is put into a Version 5 system the new fields will now be in
If a crash occurs during UDS, the variable LCFULLPATH listed in the Error Log will show the table with the problem.
You can use the standard Payroll Group selection within bespoke forms by calling wgg_Group_Select(parameter 1,parameter 2)
To get a top level item logical indicating multiple select or Financials) but also to appear as a group in its own right in
where parameter 1 is ato appear in one of the Groups (e.g.not and parameter 2 is the list of currently selected groups. the
Classic Navigator: Create the Top Level Command, create one of the second level commands. In tools editor select
_MSysMenu, highlight "Financials" and right click, select Create Tool Group, select Top Level Command from grid. Drag second
level command onto Top Level Command.
When a new version of Empathy is installed in house it is necessary to remove the three "Purchase" forms from
…\Bespoke\cltp\Data\forms.dbf to prevent clashes with Kamarin software.
Error when trying to append reporter reports into menu structure: "Unable to append menu. Problem occurred during update to
framework Command table (Variable 'DISABLEDBMP' is not found.). Open the commands.dbf in the ..\reporter\data\ directory
for Exclusive access, type MODIFY STRUCTURE and then change the name of the field disablebmp to disabledbmp.
Pegasus function "runcom" will run a procedure within any program in the visible path, saves putting everything in Appevents.
You can get a handle to the current form from a program using locuurentform = getcurrentform().
SOP Batch Processing: Additional filters may be created to prevent certain documents from being processed by populating the
"cfilter" property on the form with SQL e.g. AND !ih_myfield == "XYZ".