What's New in CCLAS EL 1.4

CCLAS 1.4.21

General

  • CCRVREP01 and CCPRDREP01 are updated to cater for Excel 2007.
  • Icons are contained within the folder defined by the IconDirectory global setting for CCLASMGR, for example, %CCLASRootDirectory%ICONS.
    • User-defined icons for CCLAS applications must be located in the Apps folder under the defined icons folder.
    • User-defined icons for the PvExplorer toolbar must be located in the FormBrowse folder under the defined icons folder.
    • User-defined icons for other MS toolbars must be located in the FormEdit folder under the defined icons folder.
    • User-defined icons for CCLAS menu options must be located in the Menu folder under the defined icons folder.
  • The colour scheme for CCLAS applications is defined by the FormBackColour, InputBackColour, InputForeColour, LabelBackColour and LabelForeColour CCLAS program settings.

CCLAS

  • The browser menu feature allows for the loading of the CCLAS menu in a tree-view list-view mode, with a similar look and feel to other CCLAS applications. The tree-view list mode menu is activated where the ShowBrowser CCLAS program setting is enabled. Where this program setting is disabled (default), then the standard CCLAS menu is loaded.
  • The F8 function key is used to toggle between the toolbar and browser menu mode, available where the AllowToggle CCLAS program setting is enabled, and disabled otherwise (default).

Staff

  • A Run menu file:///C:/CCLASEL OH/CCLASEL_2.40.0.2/Content/99 Appendices/Appendix - CCLAS Objects and Form Controls/CCINV01-ToDo/clsBOInvoice.htmoption is available when the Staff codes node is selected on the Staff form, to run screens and scripts defined in the StaffScreenn Staff program setting.
  • A Run menu option is available when the Staff groups node is selected on the Staff form, to run screens and scripts defined in the GroupingScreenn Grouping program setting.

Profile

  • A new event is added to the Sample Grid that is fired upon cell selection. This is typically used to display details for the selected scheme. This SampleGridDataCellClicked event hook is available in PROUDF.VBS. In normal mode, the event is fired when a data cell is selected in the grid, and if the selected cell contains a scheme header, then the bHeadingCell parameter is set to true. In inverted mode, the event is fired when any cell on a new row is clicked, excluding header cells.
  • To aid in the displaying of extra detail from this hook, the following properties are added to the SampleGrid control:
    • SampleGrid.StatusBarControl - The status bar at the bottom of the SampleGrid control.
    • SampleGrid.GridControl - The grid displayed in normal mode, or on the LHS in inverted mode.
    • SampleGrid.InvertedGridControl - The grid displayed on the RHS in inverted mode.
    • SampleGrid.ToolBarControl - The toolbar control at the top of the sample grid.
  • Tooltips are added to the command buttons.
  • When a Client To record is selected, then the client and contact name are displayed.

MDE / xMDE

  • A Command menu option is available on the Data Entry form (for MDE and xMDE), to run screens defined in the MDEScreenn MDE program setting.

SAMANA

  • The current row is set to the colour defined by the selectedRowColour SAMANA program setting (default is 256), the current row font is set to bold, and the row has increased height.
  • A user-defined form is available at the bottom of the SAMANA edit window, displaying the screen defined in the UserForm SAMANA program setting.

Report

  • A Command menu option is available on the Report form, to run screens defined in the ReportScreenn Report program setting.

QC Review

  • Where multiple rows are selected in the QC application for discrete QC results, when the User notes form menu option or right-click menu option is selected, then the drop-down list contains the notes from all selected rows, followed by a row containing the text -- (Comments) --, then the canned comments for the laboratory. Where only one row is selected, or the selected rows contain the same note, then that note displays in the dialog. Where multiple rows are selected and the rows contain different notes, then the text <Various> displays in the dialog.

Laboratory Maintenance

  • The clsLabMaintenance, clsBDLabmaint, clsBDLabmaintAudit and clsBDInstrument objectsare exposed to the Audit History User Query forms.

QC

  • The focus is set to the last analysed session after an automatic refresh, and the displayed date is updated.

Consumables

  • A Run menu option is available when the Usage node is selected on the Consumables form, to run screens and scripts defined in the ConsumableUsageRunn Consumables program setting.
  • A Run menu option is available when the Supplier node is selected on the Consumables form, to run screens and scripts defined in the ConsumableSupplierRunn Consumables program setting.
  • A Run menu option is available when the Contacts node is selected on the Supplier form, to run screens and scripts defined in the ConsumableSupplierContactRunn Consumables program setting.

Job Audit

  • A Command menu option is available on the Job Audit form, to run screens defined in the AuditJobScreenn AuditJob program setting.

Audit

  • A Command menu option is available on the Audit form, to run screens defined in the AuditScreenn Audit program setting.
  • Wild-cards are supported in criteria fields used to search for audit records.

Scripting - Query Forms

  • When a User Query form is loaded, then the SQLWhere and SQLOrder are available for use.

Scripting - CGACTX01

  • When the F6 function key is used to select an item in a mUTextbox control, then a Change event is raised.
  • The width of the BDComboGrid is increased, and a factor of the field size is used to set column widths, respectively.

Scripting - xMDE

  • After a MDESampleUserQuery.scr screen is loaded, by default, the OpenJob dialog is forced to its original height. To overcome this, set the height of the OpenJob dialog either by setting the Form.Height property or by using the FORM definition at the top of the script.
  • When a control is updated on the OpenJob dialog, then the value is set immediately instead of being set only when the OK button is clicked, so that if the property is used in script, then the updated value is used. The properties affected by this change are:
    • ResolveExternalFormula
    • RawandFinal
    • ResultType
    • IncludeQC
    • ReadOnly
    • Selected
    • RackFrom
    • RackTo
  • When the OK button is clicked on the Open Samples screen, the CanEdit subroutine in the MDESampleUserQuery.SCR screen file is used to cater for last-minute validation before proceeding to open the job.
  • When Clear All, Select All, Select All Num or Select All Reportable pop-up menu options are selected, or when nodes in the tree are checked or unchecked, then the AfterTreeUpdate subroutine in the MDESampleUserQuery.SCR screen file is used to warn the user, and change the read-only check box when a scheme is selected that is validated already.

CCLAS 1.4.20

Report

  • Reports generated using Crystal Reports use Crystal Reports XI.

Scripting - Forms

  • A screen file used to render a user-defined form gives access to the associated clsScreenBuilder object. The clsScrreenBuilder class has an added ShowColourDialog function that shows the colour of the dialog.

CCLAS 1.4.19

Profile

  • When a request is made to create or re-create the analytical result records (ProfJob_Cuid_Scyheme_Analyte) records for a job (with update NOT being selected):
    • The UseCreateConcDBTransaction CCLASMGR global setting is added, such that, where it is enabled (default), then the transaction is performed in a transaction (Begin Trans ... End Trans), allowing for roll-back upon any failure in the database process.
    • The UseCreateConcDBQuick CCLASMGR global setting is added, such that, where it is enabled (default is disabled), then a bulk insert is used to create the records. A bulk insert process is slower for smaller jobs, but an advantage for large ones with lots of schemes and analytes.
  • The ArchiveJobToDB function is added to the clsBDProfjob class to archive a job by copying its records to a separate off-line copy of the CCLAS database. This function is available via the Job application by selecting a job in the browser and the File » Archive to off-line » Keep job | Remove job | Overwrite | Include idents files main menu option, or via the right-click menu from the selected job. The BeforeJobArchive, DuringJobArchive and AfterJobArchive hooks are triggered from this function. The following CCLASMGR global settings are added for this functionality:
    • ArchiveDBProvider
    • ArchiveDBDataSource
    • ArchiveDBUser
    • ArchiveDBPassword
    • ArchiveDBTable1—PROFJOB
    • ArchiveDBTable2—PROFJOBUSER
    • ArchiveDBTable3—PROFJOB_SCHEME
    • ArchiveDBTable4—PROFJOB_SCHEME_ANALYTE
    • ArchiveDBTable5—PROFJOB_CUID
    • ArchiveDBTable6—PROFJOB_CUIDUSER
    • ArchiveDBTable7—PROFJOB_CUID_SCHEME
    • ArchiveDBTable8—PROFJOB_CUID_SCHEME_ANALYTE
    • ArchiveDBXMLFolder
    • ArchiveDBForceOverwrite
    • ArchiveDBIdentsFiles
    • ArchiveDBIdentsFolder
    • AllowOfflineArchive—ENABLED
    • ArchiveDBProvider—Of type LIST, selected from: MSDAORA, MSDASQL
    • ArchiveDBTable—Of type LIST, selected from: PROFJOB, PROFJOBUSER, PROFJOB_SCHEME, PROFJOB_SCHEME_ANALYTE, PROFJOB_CUID, PROFJOB_CUIDUSER, PROFJOB_CUID_SCHEME, PROFJOB_CUID_SCHEME_ANALYTE
    • ArchiveDBForceOverwrite—Of type BOOLEAN
    • ArchiveDBIdentsFiles—Of type BOOLEAN
    • ArchiveDBIdentsFolder—Of type FILE
    • ArchiveDBXMLFolder—Of type FILE
    • AllowOfflineArchive—Of type BOOLEAN
  • The ArchiveCustomTablen CCLAS global settings are added, such that, when a job is archived, including archiving to a ZIP file, to a database, and upon job delete, then the defined custom tables are included in the archive. The archive/retrieve fails and rolls back if an error is raised archiving one of the custom tables. The records from the custom tables are also deleted if the job is removed as part of the archive process. The custom tables must have a LABCODE and PRO_JOB field, that is, they must be able to join to the PROFJOB tables. The same occurs for retrieve.

Invoice

  • The IncludeSampleType INVOICE program setting is added, such that, it contains a comma-delimited list of sample types that are included in an invoice when the Invoice application is run in interactive mode. When the Invoice application is run in non-interactive mode, then any sample with InvoiceActive = -1 is included in the invoice. Example: UNK,REP
  • The DuringCreatepaperwork subroutine is added to InvUDF.VBS to perform user-defined tasks after the invoice is generated and saved, but before any printing occurs, for example, to modify the invoice to fill in any extra fields, or to modify the number of copies and printer information.

Dashboard

  • When a SCR file is opened in the Dashboard application, then the File » Save Prompts menu option saves the screen prompts to the language table

Scripting - Method User Query

  • The clsDBScheme and pvExplorer objects are exposed in the SchemeUserQuery.SCR script.
  • The clsBDProcReg and pvExplorer objects are exposed in the ProcregUserQuery.SCR script.
  • The clsBDProduct and pvExplorer objects are exposed in the ProductUserQuery.SCR script.
  • The clsDBScheme and pvExplorer objects are exposed in the QCUserQuery.SCR script.

Scripting - Profile

  • The AddToPJSACollection subroutine is added to the clsBDProfjob class to set analyte status in a laboratory batch job when data is saved using the xMDE application.

Scripting - Support

  • The StartDoc function is added to the clsSupport class to open a document (file) using Windows file association.

CCLAS

  • The robustness of the CCLAS database connection is improved such that reconnection is automatically attempted when an existing connection is broken. The following CCLAS program settings are added for this functionality:
    • DBRECONNECT—The number of retrials, default 5.
    • DBRECONNECTDELAY- The delay, in miliseconds, between each retry, default 300.

CCLAS 1.4.18

General

  • Where the main window is not minimised, then the last size and position of the main window of CCLAS applications (except for the menu) is automatically saved and used upon application reload.
  • SER 1966

    Ability to use prompts from language tables for user forms.

    The control names on user forms are automatically used to searched MessageCode in the language_item table for matching records.

    User form prompts have a messageType of 3 in the language table

    User form Error messages have a messageType of 4 in the language table

    Two properties are added to clsSecurity object (exposed to all VB scripts hosted by CCLAS applications):

    • MessageHandler

    • ErrorHanlder

    One property is added to clsErrorHandler:

    • property let ErrorCode

    Setting this property results in the retrieval of clsErrorHandler.ErrorPrompt and clsErrorHandler.ErrorMessage from the language table.

    One property is added to clsMessageHandler:

    • property let MessageCode

    Setting this property results in the retrieval of clsMessageHandler.Prompt and clsMessageHandler.Message from the language table.

    Modified:

    • mTaskman.AppStart

    • xMde.mMDE.AppStart

    Added the MessageHandler and ErrorHandler properties to clsSecurity, clsScreenBuilder.

    Added the ErrorCode property to clsErrorHandler.

    Added the MessageCode property to clsMessageHandler.

Scheme

  • SPR 1982

    1. The File/Show all versions menu item is used to display all QControl records, regardless of the version. Note that only those records where the scheme version still exists can be edited.

      Previously, when obtaining the list of QCCodes to display in the tree, then QControl records were retrieved only for the most recent scheme version. Also, where scheme versions were used, then all but the most recent version were hidden, meaning that unwanted records could not be deleted.

    2. To improve latency, when QControl records are retrieved, then the tree view is updated in batch mode and is made active again (refreshed) when all records are added to it.

      This has also be applied when schemes are added, deleted or pasted, and all QC nodes are reloaded by adding the AddNewQCNode subroutine to frmScheme and modifying frmScheme.Delete, Paste, AddNew, AddQcontrolToExplorer.

Data Entry

If the upper limit is not set to zero, then values are checked against the analytical upper limit. Previously, the upper limit was checked only if the analytical upper limit was set to a value greater than zero.

Report

  • The DuringCrystalReport hook is added for REPUDF, so that other recordsets can be defined and used for sub-reports. It has the same objects exposed as BeforeCrystalReport, but also has access to the clsCrystalReport object.

    Copy
    '--------------------------------------------------------------------------------------
    ' Called before Crystal Report generated, but after clsCrystalReport is created
    '--------------------------------------------------------------------------------------
    Sub DuringCrystalGenerate()
    '
    '    Objects exposed for this subroutine
    '        clsProfRep
    '        clsSecurity
    '        clsBDProfJob
    '        clsReport
    '        oRsPJ, oRsPJSA, oRsPJCSA, oRsPJC, oRSUserPJC
    '        clsCrystalReport (this is the class, not the viewer form)

CCLAS 1.4.17

User Interface

  • SER 1760

    A mouse wheel can be used with F1Book grids, impacting all applications that have an F1Book grid control in them, including forms displayed from scripts, such as UserQuery and User screens. This is not yet applied to the Dashboard application.

  • SER 1958

    Extra information is now shown in the tooltips. The details shown are:

    • For P-Curve and Correlation Plots: Obs#, (Avg, %Difference), (Value1, Value2), Job, Ident, Date, UserNotes;

    • For ScatterGram: Obs#, (Avg, Abs Difference), (Value1, Value2), Job, Ident, Date, UserNotes;

    • For XChart and CuSum: Obs#, Value1, Job, Ident, Date, UserNotes.

Profile

  • SPR 1921

    The AutoStoreFormattedValue global setting is no longer used. The application now only uses the UpdateFormattedValue application setting, and whatever other conditions the check was previously using, to decide what to do when analyte information that might impact on the FormattedValue is changed (for example, if report detection limit is modified).

CCPROF01.DLL

  • SER 1925

    Efficiency improvements in the DBSaveAnalyteValues subroutine where REP/DUP sample status is updated. This includes updates to clsBDProfjob.UpdateRepDupStatus, DBLoadAnalyteValues, DBSaveAnalyteValues, QCCheckReps, UpdateRepDupStatus.

XMDE

  • SPR 1915

    The Check QC command no longer checks or changes the status for locked or empty cells.

  • SPR 1919

    The behaviour of the Unlock command is modified (in normal mode) to only unlock locked cells and only clear NA, LNR or IS analyte status as the default. The previous behaviour was causing concerns, since the whole data grid could be selected and “unlocked”, clearing all previous analyte statuses.

    Added staff settings UnlockOnlyLocked (default is Enabled) and ClearAllStatusOnUnlock (default if Disabled). The previous behaviour can still be implemented, if necessary, by setting UnlockOnlyLocked to Disabled and ClearAllStatusOnUnlock to Enabled.

  • SER 1927

    Sample selection is possible when opening a job in normal mode.

    QC samples can be included when opening multiple scheme of a job.

    Selection of multiple jobs is possible when opening a job in Weight/Volume mode.

    This includes updates to clsBDProfjob.DBLoadJobvalues, frmJobEdit.LoadData, frmJobEdit.LoadSchemeAnalytes, and clsSheet.LoadSheet, and the adding of the set Jobs and set CUIDs properties to clsMDE.

  • SER 1937

    Multiple edit windows can be opened for different schemes of the same job in the same XMDE application. This includes updates to frmOpneJob2.FillListofSchemes, RefreshTreeView, treeView1_NodeCheck, and cmdOK_Click.

MDE

  • SPR 1915

    The Check QC command no longer checks or changes the status for locked or empty cells.+

  • SPR 1919

    The behaviour of the Unlock command is modified to only unlock locked cells and only clear NA, LNR or IS analyte status as the default. The previous behaviour was causing concerns, since the whole data grid could be selected and “unlocked”, clearing all previous analyte statuses.

    Added staff settings UnlockOnlyLocked (default is Enabled) and ClearAllStatusOnUnlock (default if Disabled). The previous behaviour can still be implemented, if necessary, by setting UnlockOnlyLocked to Disabled and ClearAllStatusOnUnlock to Enabled.

SAMANA

  • SER 1925

    Efficiency improvements in the DBSaveAnalyteValues subroutine where REP/DUP sample status is updated. This includes updates clsBDProfjob.UpdateRepDupStatus, DBLoadAnalyteValues, DBSaveAnalyteValues, QCCheckReps, UpdateRepDupStatus.

    Ability to log an error message when capturing data. This includes updates to frmSamanaEdit.StartInstrument and Save mSamana.

    Added the "DataCaptureErrorLog" = FullpathFilename application setting to output an error message to a log file.

REPORT

  • SPR 1921

    The AutoStoreFormattedValue global setting is no longer used. The application now only uses the UpdateFormattedValue application setting, and whatever other conditions the check was previously using, to decide what to do when analyte information that might impact on the FormattedValue is changed (for example, if report detection limit is modified).

  • SPR 1898

    A prompt is added to the Re Sequence button.

    02317 "ccMnuReportResequence ~Re Sequence ~Store report sequence ~ ~0~"

DASHBOARD

  • SER 1922

    Dashboard is changed so that screens can be shown in the taskbar when the user runs a Dashboard using a script that is specified as a command-line argument. The dashboard is not shown automatically, but can be seen in the taskbar and can be shown by using the Alt-Tab list. Each item in the list is displayed using the icon for the related form. If the file specified in the command-line argument does not exist, then the dashboard application runs interactively, as normal.

    The IconFile property is added to forms, so that when users are designing a form, then an icon can be specified for the form. The icon appears in the Alt-Tab list shown from the taskbar, and in the left-hand corner of the form.

  • SER 1916

    The VB Intrinsic controls are added to Dashboard, including Timer, DriveListBox, DirListBox, FileListBox, Shape, Line, Image, and OLE. Note that the Line control is not available at design time in Dashboard as it was too hard to represent graphically, however, you can still add one using the genericcontrol, or through code.

    The OptionButton, HscrollBar, and VscrollBar controls are added to Dashboard.

    ToolTips on some controls that were not being shown are now shown.

    A couple of properties that were read-only at run-time are removed from the properties window for the controls in Dashbord.

    Prompts for some properties that were incorrect or misleading are amended.

    The IconFile property for forms no longer attempts to write to file if no file is set.

    Paths are now set as %CCLASRootDirectory\... or %PictureDirectory%\..., where possible, on properties that are picture files.

CCMESS.DLL

  • SER 1922

    A new prompt is added to messages to cater the IconFile property. The prompt is used in the properties window when showing the form properties.

    04041 "ccMsgtxtDashPropIconFile ~IconFile ~ ~ ~0~"

  • SER 1916

    The VB Intrinsic controls are added to messages, including Timer, DriveListBox, DirListBox, FileListBox, Shape, Line, Image, and OLE. Note that the Line control is not available at design time in Dashboard as it was too hard to represent graphically, however, you can still add one using the genericcontrol, or through code.

    The OptionButton, HscrollBar, and VscrollBar controls are added to messages.

    ToolTips on some controls that were not being shown are now shown.

    Prompts for some properties that were incorrect or misleading are amended.

    The IconFile property for forms no longer attempts to write to file if no file is set.

    Paths are now set as %CCLASRootDirectory\... or %PictureDirectory%\..., where possible, on properties that are picture files.

CCLMNT01.DLL

  • SPR 1923

    The next schedule date time calculation for Second, Minute and Hour (repeat unit) is modified, such that, the date part for the next scheduled date and time now changes. Previously it did not change unless it was manually changed.

PERFANA

  • SPR 1944

    For efficiency improvements, an internal collection of the items that are changed is now kept so that only records that are changed are saved. Previously every loaded record was saved, whether it was changed or not. This includes updates to clsPrfDataItem, clsPrfData, clsPerfana, and frmPerfana.

    The following table indicates items added to the clsPrfDataItem class:

    Name Type Access Description
    isDirty Property Public Indicates if the item is changed.
    IsFieldDirty Function Public Indicates if the property for the field name passed in is changed.
    StoreOriginalValues Method Friend Stores the current values of the item into some variables allocated to storing the original values of the item. These variables are used to make comparisons in checking if the value is different from the original.

    The following table indicates items added to the clsPrfData class:

    Name Type Access Description
    UpdateDirtyItems Method Public Loops through the data collection and stores the indexes of items that have changed in another collection.
    DirtySQLStatements Function Public Builds UPDATE statements for a group of items in the collection of changed items. Statements are separated by semi-colons (;).
    DirtyItemCount Function Public Builds UPDATE statements for a group of items in the collection of changed items. Statements are separated by semi-colons (;).

    In a nutshell, a mechanism is added to be able to keep track of the items that are internally changed. The original values are stored when items are added to the data collection, and an item is deemed to have changed when its current values differ from the values stored as the original values. The internal collection of changed items is loaded when the user uses the IgnoreOn and IgnoreOff options to change the status of the items. When the data is saved , via clsPerfAna.Update, then an UPDATE SQL statement is built for each item in the collection. The total set of UPDATE SQL statements are then sent in groups to be executed on the server.

  • SER 1960

    The axes on Scatter and PCurve charts are extended where the value is hard up against the maximum value of the axis. For the logarithmic axes, the axes are extended to the next decade above the highest value being plotted. Where the axis is a percentage, the axis is extended to the integer portion of the highest value being plotted.

    In this fix, extra labels for these values are added to the axes. Previously, the highest value was 1000 on the logarithmic axes, and 75% on the percentage axes. The line of best fit on these plots is also extended to cover the extension of the axes.

CCLAS 1.4.16

XMDE SPR 1893

Ability to open a job by barcode scanning

Requirements:

The job browser form must be able to process bar code scanning and pass the input to predefined VB script.

A new class namely clsMDEOpen must be created and exposed to the VB script object.

An instance of clsMDEopen must be maintained by the job browser form to allow the non-interactive opening of a job whose

selected schemes, analytes, rack, result type etc are set by the VB script.

Application setting enabling job open by barcode scanning:

BCSCRIPTFILE=Filename ' i.e. BCSCAN.VBS

BCSCAN=Enabled

BCTERMINATORCODE=TerminatorCode

If BCSCAN is enabled then the BCSCAN.VBS script is loaded by xMDE jobs browser.

Objects exposed in the BCSCAN.VBS are: clsSecurity,clsMDEOpen and clsBDProfjob.

Subs and properties of clsMDEOpen are:

Copy
Public Sub AddJob(ByVal sJob As String)
Public Property Get Style() As Long
Public Property Let Style(ByVal lVal As Long) style = 1 -> normal, style = 2 -> invert; default = 1
Public Sub SetScheme(ByVal sSch As String) 'Add a scheme to criteria
Public Sub SetSchemeAnalyte(ByVal sSch As String, ByVal sAna As String) 'Add an analyte to a scheme in criteria
Public Sub SetCUIDS(ByVal sCuid As String)
Public Property Get CUIDS() As clsCCCollection
Public Property Let RackFrom(ByVal lRack As Long)
Public Property Let RackTo(ByVal lRack As Long)
Public Property Get ResolveExternalFormulas() As Boolean
Public Property Let/get IncludeQC(ByVal bval As Boolean)
Public Property Let/get ResultType(ByVal sResultType As String)
Public Function GetPageSize(ByVal sSchCode As String) As Long
Public Property Let RawandFinal(ByVal bval As Boolean)
Public Property Let ReadOnly(ByVal bval As Boolean)
Public Property Let SheetBCScan(ByVal bval As Boolean)
Public Property Let SheetBCTerminatorCode(ByVal sVal As String)
Public Property Let SheetBCScriptFile(ByVal sVal As String)
Public Sub OpenMDESheet()

When a job number is scanned (Job number + terminator code) the sub GOTBARCODE (JobNumber as string) in BCSCAN.VBS is executed.

The GOTBARCODE SUB must include codes to modify the clsMDEOpen object and call the sub clsMDEOpen.OpenMDESheet to open the job entered by barcode scanning.

If the SheetBCScan, SheetBCTerminatorCode and SheetBCScriptFile properties are set then the Job edit window will display a text box in the toolbar to accept barcode input.

see example below:

clsMDEOpen.SheetBCScan = true

clsMDEOpen.SheetBCTerminatorCode = "$$"

clsMDEOpen.SheetBCScriptFile = "SheetBCScan.vbs"

The SheetBCScan.vbs must include the Sub GotBarcode (sCode) which processes all barcode inputs.

When capturing weights and the user is prompted for accepting an out of range value

the sub ValueAccept (sResponse as string) in SheetBCScan.vbs is executed and the response ("Y" or "N") is passed to the script by

the parameter sResponse.

Objects exposed in SheetBCScan.vbs are:

  • F1Book

  • Sheet

  • clsVariables

  • clsSchemes

  • clsSecurity

  • clsBDProfJob

  • clsCCComm

  • StatusBar

New subs and properties of clsSheet are:

Public Sub SetBCTextWidth(ByVal sngWidth As Single) ' set width of the text box that accepts barcode input

Public Sub SetBCTextFocus()

Public Property Get/Let BCScan() As Boolean

Public Sub SetBCText(ByVal sVal As String) ' set text of the text box that accepts barcode input

REPORT, CCPREP01, CCLOG01, CCPROF01 SER 1898

1. Report program needs to save sample report sequence to PROFJOB_CUID table.

2. Crystal reports need to have effective sample repsequence in all scenarios.

3. Report program needs to have abilities to generate Customised analytical reports using Crystal template.

4. Reports using Excel templates need to have QC samples combined when a combined scheme report is generated.

Fixes:

A new column REPSEQUENCE of type varchar(8) must be added to PROFJOB_CUID table

ALTER TABLE PROFJOB_CUID

ADD REPSEQUENCE varchar(8) NULL

In the script that creates the PJSCA view, the line PROFJOB_CUID.CUID as REPSEQUENCE should be replaced with PROFJOB_CUID.REPSEQUENCE as CUID_REPSEQUENCE.

When saving analyte and sample info REPORT will update REPSEQUENCE of the job's samples if samples have been repositioned.

Reports using crystal template can now make use of the sample sequence as it is set in the grid in the sample tab (interactive mode). Previously the column repsequence in PJCSA is not updated unless a sample is checked or unchecked in the sample grid.

To utilise Customised analytical reports the REPUDF.VBS must include the following subroutine:

Copy
Sub SETCUSTOMREPORTSCRIPT()
clsReport.RecordSetScript = "CUSTOMREP.VBS"
End Sub

A crystal tempate using XSD files as data source must be created (this is similar to templates being used with Minetrak Report Manager). The crystal template must include a table named “PJ” to indicate that it is an analytical report.

The CUSTOMREP.VBS must include a sub named GetRecordSets. This sub must retrieve the appropriate recordsets required by the corresponding crytal template. See Example below:

Copy
Sub GetRecordSets()
Dim lUpper
Dim lj
Dim sSql
Dim Arec
Dim ors1
Dim ors2
aRec = clsReport.CustomRecordSet
lUpper = UBound(arec,2)
'Stop
For lj = 0 to lupper
If UCase(arec(0,lj)) = "PJ" Then
sSql = "select CLI_NAME clientName, address1, address2, 5000 Postcode, country from CLIENT             where CLI_CODE = '" & clsBDProfJob.profjob.CLI_CODE & "'"
Set arec(1,lj) = clsSecurity.Connection.RecordSet(sSql)
ElseIf UCase(arec(0,lj)) = "SCHEMEANALYTE" Then
sSql  = SchemeAnalyteSQL (clsBDProfJob.profjob.pro_job, clsSecurity.LABCODE)
Set arec(1,lj) = clsSecurity.Connection.RecordSet(sSql)
ElseIf UCase(arec(0,lj)) = "QCINFO" Then
sSql  = RepDupSQL (clsBDProfJob.profjob.pro_job, clsSecurity.LABCODE)
Set ors1 = clsSecurity.Connection.RecordSet(sSql)
Set ors2 = clsSecurity.Connection.RecordSet(sSql)
ProcessRepDup ors1, ors2
Set arec(1,lj) = ors2
ElseIf UCase(arec(0,lj)) = "ANADATA" Then
sSql = "select SAMPLEIDENT, SAMPLETYPE, SCH_CODE, ANALYTECODE,FINALVALUE from         PROFJOB_cuid_scheme_analyte pjcsa, PROFJOB_cuid pjc "
sSql = sSql &    " where pjcsa.pro_job = '" & clsBDProfJob.profjob.pro_job & "' and pjcsa.pro_job =         pjc.pro_job "
sSql = sSql &    " and pjcsa.CUID = pjc.cuid and pjc.sampletype = 'UNK' "
Set arec(1,lj) = clsSecurity.Connection.RecordSet(sSql)
End if
Next
clsReport.CustomRecordSet = aRec
End Sub

New properties added to clsReport object are:

  • CustomRecordSet (get,set): a two dimensional array. First dimension contains table names, second dimension contain recordsets.

    The CanGenerateReport property should be set in the BEFORECRYSTALGENERATE sub of REPUDF.VBS to abort generating report.

  • CanGenerateReport (let): a string. If not empty then it must contain an error message and as a consequence the report is not generated.

  • Parameters (get, set): a collection of clsParameter objects.

  • Property Let IsAnalyticalReport – the default value is true

  • Property Let RecordSetScript (ByVal sVal As String) – this is the script that contains the sub GetRecordSets

    The property RecordSetScript when used with IsAnalyticalReport property allows generating custom reports by script without using the REPUDF.VBS for specific reports.

  • Property Let IsCustomReport (Boolean) - the default value is false

Added subs GenerateCustomReportCrystal, GenerateCustomNonAnaReportCrystal, GenerateCustomAnaReportCrystal to clsReport.

Added property IsCustomReport to clsCrystalReport.

Added property Let IsCustomReport (as Boolean) to frmCrystalReportView

Modified frmCrystalReportView.DoReport

Modified clsBDProfjob.UpdateProfjobCuidRecord, UpdateProfjobCuidObject, cBOProfjobCuid.Class_Initialize

CONSUMABLES SPR 1890

With the addition of 20 UserFields to each consumable table, a User screen has been added so these fields can be edited. The scripts used now use TableNameUser.SCR as a naming convention. The code is still backward compatible with the names of scripts used previously. The user screens have also been loaded onto tab controls for the Consumable and Supplier records, eliminating the need for a toolbar button and a separate window for editing the user fields. The table below shows the new script names and the names used previously for each table:

Table Script name Formerly

CMCONSUME CMConsumeUser.scr ConsumableUser.scr

CMCONSUME_USAGE CMConsumeUsageUser.scr ConsumeUsage.scr

CMCONSUME_SUPPLIER CMConsumeSupplierUser.scr ConsumableSupplierUser.scr

CMCONSUME_TYPE CMConsumeTypeUser.scr ConsumableTypeUser.scr

CMSUPPLIER CMSupplierUser.scr SupplierUser.scr

CMSUPPLIER_CONTACT CMSupplierContactUser.scr SupplierContactUser.scr

To provide the ability to limit the records shown, UserQuery screens have been added to each node where a browser is used. For the Consumable node, because this has 2 levels to it, the same script it used across both levels.

The forms displaying the Audit records also have had UserQuery screens added to allow criteria to limit the records shown in the grid. The scripts added for this are shown in the table below:

The dialogs shown to add Supplier and Usage records for consumables have also had UserQuery scripts added. This will allow the users to limit the items shown in the lists.

Script name Description

CMConsumeUserQuery.scr Script for Consumable node on main browser.

CMSupplierUserQuery.scr Script for Supplier node on main browser.

CMConsumeTypeUserQuery.scr Script for Type node on main browser.

CMSupplierContactUserQuery.scr Script for Contact node when editing a supplier

CMConsumeUsageUserQuery.scr Script for Usage node when editing a consumable.

CMConsumeSupplierUserQuery.scr Script for Supplier node when editing a consumable.

CMConsumeAuditUsageUserQuery.scr Script shown when displaying Usage history.

CMConsumeAuditSupplierUserQuery.scr Script shown when displaying Supplier history.

CMConsumeUsageAddUserQuery.scr Script shown in dialog when adding a Usage to a consumable.

CMConsumeSupplierAddUserQuery.scr Script shown in dialog when adding a Supplier to a consumable.

To help scriptors in constructing their where clauses, I have outlined the tables joined together in the queries that are run.

Description Tables joined Fields returned

Selecting the consumable node on the main form. CMCONSUME, CMCONSUME_TYPE DISTINCT CMCONSUME.CONSUMABLETYPE

Selecting one of the type nodes shown as children under the consumable node on the main form. CMCONSUME, CMCONSUME_TYPE CMCONSUME.*

Selecting the supplier node on the main form. CMSUPPLIER CMSUPPLIER.*

Selecting the type node on the main form. CMCONSUME_TYPE CMCONSUME_TYPE.*

Selecting the Usage node when editing a consumable. CMCONSUME_USAGE List of fields from CMCONSUME_USAGE specified in settings.

Selecting the Supplier node when editing a consumable. CMCONSUME_SUPPLIER List of fields from CMCONSUME_SUPPLIER specified in settings.

Displaying the history for a Usage CMCONSUMEAUDIT_USAGE CMCONSUMEAUDIT_USAGE.*

Displaying the history for a Supplier CMCONSUMEAUDIT_SUPPLIER CMCONSUMEAUDIT_SUPPLIER.*

Selecting the contact node when editing a Supplier CMSUPPLIER_CONTACT List of fields from CMSUPPLIER_CONTACT specified in settings.

Adding a scheme for a new Usage record for a consumable. SCHEME (Uses subquery to limit records to those schemes that don’t already exist in the consumable) SCHEME.SCH_CODE, SCHEME.SCHVERSION

Adding a supplier for a new Supplier record for a consumable. CMSUPPLIER (Uses subquery to limit records to those suppliers that don’t already exist in the consumable) CMSUPPLIER.SUPPLIERCODE

GENERAL

Included Crystal Reports 10 in the release, instead of Crystal Reports 9.

SAMPLETRACK SPR 1891

With the addition of 20 UserFields to each sampletrack table, a User screen has been added so these fields can be edited. The scripts used now use TableNameUser.SCR as a naming convention. The code is still backward compatible with the names of scripts used previously. The user screens have also been loaded onto tab controls for the Job records, eliminating the need for a toolbar button and a separate window for editing the user fields. The table below shows the new script names and the names used previously for each table:

Table Script name Formerly

STACTION STActionUser.scr STActionUser.scr

STCONTAINER STContainerUser.scr STContainerUser.scr

STLOCATION STLocationUser.scr STLocationUser.scr

STPHYSICALTYPE STPhysicalTypeUser.scr STPhysicalTypeUser.scr

STJOB STJobUser.scr STJobUser.scr

STJOB_SAMPLE STJobSampleUser.scr STJobSampleUser.scr

STJOBAUDIT

STJOBAUDIT_SAMPLE

To provide the ability to limit the records shown, UserQuery screens have been added to each node where a browser is used. For the Job node, because this has 3 levels to it, the same script it used across both levels.

The forms displaying the Audit records also have had UserQuery screens added to allow criteria to limit the records shown in the grid. The scripts added for this are shown in the table below:

Script name Description

STActionUserQuery.scr Script for Action node on main browser.

STContainerUserQuery.scr Script for Container node on main browser.

STLocationUserQuery.scr Script for Location node on main browser.

STPhysicalTypeUserQuery.scr Script for Type node on main browser.

STJobUserQuery.scr

(Formerly SamTrackUserQuery.scr) Script for Usage node when editing a consumable.

STJobSampleUserQuery.scr Script for Sample nodes when editing a job.

STJobAuditUserQuery.scr Script shown when displaying job history.

STJobAuditSampleUserQuery.scr Script shown when displaying sample history.

STJobAddUserQuery.scr

(Formerly SamTrackAddUserQuery.scr) Script shown in dialog when adding a job.

To help scriptors in constructing their where clauses, I have outlined the tables joined together in the queries that are run.

Description Tables joined Fields returned

Selecting the location node on the main form. STLOCATION STLOCATION.*

Selecting the container node on the main form. STCONTAINER STCONTAINER.*

Selecting the type node on the main form. STPHYSICALTYPE STPHYSICALTYPE.*

Selecting the action node on the main form. STACTION STACTION.*

Selecting the client node on the main form when in client mode. STJOB, CLIENT DISTINCT CLIENT.*

Selecting a client node on the main form when in client mode. STJOB, CLIENT_PROJECT DISTINCT CLIENT_PROJECT.*

Selecting a project node on the main form when in client mode. STJOB, CLIENT_PROJECT, CLIENT DISTINCT STJOB.*

Selecting the job node on the main form when not in client mode. STJOB, CLIENT_PROJECT, CLIENT DISTINCT STJOB.*

Selecting the job node for samples when editing a job. STJOB_SAMPLE, STPHYSICALTYPE DISTINCT STPHYSICALTYPE.*

Selecting the type node for samples when editing a job. STJOB_SAMPLE, STPHYSICALTYPE DISTINCT STJOB_SAMPLE.*

Displaying the history for a job. STJOBAUDIT, STJOB List of fields from STJOBAUDIT specified in settings. Uses STJOBAUDIT.LOCATIONCODE as a default if no settings.

Displaying the history for a job’s samples. STJOBAUDIT_SAMPLE STJOBAUDIT_SAMPLE.*

CONSUMABLES SPR 1890

LVWDisplayColumn settings have been added for use with adding Usage and Supplier records to consumables. This setting will add an extra column to the list view on the dialog shown when adding. The settings are in the format FieldName, HeadingText. For Usage records this setting is called CMConsumeUsageLVWDisplayColumn and can contain any field from the SCHEME table. For Supplier records this setting is called CMConsumeSupplierLVWDisplayColumn and can contain any field from the CMSUPPLIER table. There has been no default set if the settings are not specified so the user does not have to have this extra column if they do not wish to. The SQL statement in the SQL scripts for these new settings is given below:

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','CMCONSUME','CMConsumeUsageLVWDisplayColumn','SCHEMENAME,Scheme name')

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','CMCONSUME','CMConsumeSupplierLVWDisplayColumn','SUPPLIER_NAME,Supplier name')

LABMAINTENANCE SPR 1892

UserQuery screens have now been added to this application. They will be shown for the nodes in the browsers, and on the history screens that show the audit records.

Script name Description

LabMaintUserQuery.scr Script for LabMaintenance node on main browser.

LabMaintScheduleUserQuery.scr Script for type nodes on main browser.

LabMaintAuditUserQuery.scr Script for history shown when editing a type record.

LabMaintAuditScheduleUserQuery.scr Script for history shown when editing a Schedule record.

To help scriptors in constructing their where clauses, I have outlined the tables joined together in the queries that are run.

Description Tables joined Fields returned

Selecting the LabMaintenance node on the main form. LABMAINT LABMAINT.*

Selecting one of the type nodes shown as children under the LabMaintenance node on the main form. LABMAINT_SCHEDULE LABMAINT_SCHEDULE.*

Displaying the history for a Usage LABMAINTAUDIT LABMAINTAUDIT.*

Displaying the history for a Supplier LABMAINTAUDIT LABMAINTAUDIT.*

XMDE SER 1760

The ability to use the wheel on the mouse to scroll the F1Book grid has been added to this application. You can also scroll in grids used in script from this program ie: UserQuery screens, and frames, and Form command.

CCPROF01

Added the UseCreateConcDBTransaction global setting, to specify whether to have a transaction around the delete and update statements in CreateConcDB subroutines, used when updating a job or scheme. Default is Enabled.

STATREP

Added the ClientReportLookupField staff setting, to specify the lookup field to use on the client combo grid. Default is CLI_CODE.

CCPROF01 SPR 1913

Modified UpdateScheme and UpdateSchemeAnalyte to not expand sample idents, if UNK samples already exist in the PROFJOB_CUID table, for the job.

15/06/07 Release 1.4.16 GP

Included Crystal Reports 10 in the release, instead of Crystal Reports 9.

CCLAS 1.4.15

LICENCE SPR 1511

Some code has been copied over from the 1.3 version to write a more meaningful error message when the server name is incorrect.

All CCLAS Applications SPR 1836

Unicode support for label and text controls in all CCLAS applications

This enhancement requires the addition and maintenance of a 2 new tables - sql script inserted below

CREATE TABLE LANGUAGE (

LANGUAGEID INT NOT NULL ,

LANGUAGE NVARCHAR (50) NOT NULL ,

DESCRIPTION NVARCHAR (60) NULL,

CONSTRAINT LANGUAGE_PK PRIMARY KEY CLUSTERED

(

LANGUAGEID

) WITH FILLFACTOR = 90 ON [PRIMARY]

) ON [PRIMARY]

GO

CREATE TABLE LANGUAGE_ITEM (

LANGUAGEID INT NOT NULL ,

MESSAGETYPE INT NOT NULL ,

MESSAGENUMBER INT NOT NULL ,

PROGRAMCODE VARCHAR (20) NULL ,

CONTROLTYPE VARCHAR (10) NULL ,

MESSAGECODE VARCHAR (50) NOT NULL ,

PROMPT NVARCHAR (50) NULL ,

TOOLTIP NVARCHAR (255) NULL

 

CONSTRAINT LANGUAGE_ITEM_PK PRIMARY KEY CLUSTERED

(

LANGUAGEID,MESSAGETYPE, MESSAGENUMBER

) WITH FILLFACTOR = 90 ON [PRIMARY]

CONSTRAINT LANGUAGE_ITEM_FK FOREIGN KEY

(

LANGUAGEID

) REFERENCES LANGUAGE

(

LANGUAGEID

)

 

) ON [PRIMARY]

GO

Added properties: FontName, FontSize, ChartSet, SystemFontName, SystemChartSet, UserFont to clsMessageHandler.

Added Sub getFont, sub GetDD, sub SetErrorAndMessagenew to cclog01.clsLogon

Added ChangeSystemFont to mUtilScreen.

Users have the option to use prompts loaded from messeage/error dlls or database.

The language entry in the CCLAS.INI file with a value greater than 1 will determine the language used on the LOGON screen and also indicates the option to use prompts retrieved from CCLAS database.

Each user could have their own language setting when using prompts retrieved from CCLAS database.

New GLOBAL SETTINGS

examples

Inivariable="Language", IniSetting="2"

Inivariable="FontName", IniSetting="Arial Unicode MS"

Inivariable="Charset", IniSetting="128"

Inivariable="FontSize", IniSetting="9"

Those setting affect all fonts used by controls in CCLAS apps

Inivariable="SystemFontName", IniSetting="Arial Unicode MS"

Inivariable="SystemCharset", IniSetting="128"

Those settings affect form caption, menu, message box and tooltip fonts

INVOICE, CCINV01.DLL, SQL Scripts SPR 1839

A new setting has been added to format the Taxes and Discounts to the number of decimal digits specified in the conversion code. In the reported case, there were problems in the values (only 1 cent, but never the less…), due to them having more decimal places than the currency code. Using these values in the calculations would boost the values after they were rounded; they were incorrect by 1 cent.

The new setting will format the values to the correct number of decimal places so that they are saved in the database, and any calculations will use them with that many decimal places. This should give them the correct values on the invoice.

The setting that is added is given below:

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','INVOICE','FormatTaxAsCurrency','DISABLED');

PROFILE, SCHEME SPR 1619

Added new method to the control used to display the combined scheme analyte interface. The method is called FireFormResizeScript, and was added because the screen builder control object used to display the script is privately declared. Exposing this method gives the ability to call the form resize script from the owner form when it is resized.

This was added so the pane height could be adjusted when the form is resized.

COMMVIEW SPR 1534

The “StopAll” option of from the File – Capture menu was using the wrong prompt number. This was missed, when it was fixed earlier on 05122005.

PROFILE SPR 1238

The background colour of the CuidUser form in Profile has been changed to use the same colour as the other forms in CCLAS.

LICENCE SPR 1511

A new routine, ResolveString, also had to be added. Some of the error messages had parameters that needed to be replaced in the message. With the ErrorHandler class these only get replaced if you call the Raise method, which meant we had to include the code to replace these parameters in the licence program.

CCPREP01.DLL, REPORT SER 1846

A new property has been added, MaxTemplateSheets. This will indicate how many of the sheets in the the template will actually be used in the report. Previously only a Cover, Report, and Backing sheet were allowed in the template, but this property lets the user indicate how many they wish to use.

At the moment this property can only be used in script (ie: clsReport.MaxTemplateSheets), to make changes to the core code as minimal as possible. In the future there may be a staff setting or control to allow the user to set this when using the program interactively.

CGACTX01.DLL

Added the ClearCannedComments method to the mTextbox control.

Added the new Unicode multi-line textbox control, called mUTextbox. It behaves similarly to the mTextbox control, but can handle Unicode text, and uses the UniListView control (from Unibox2) to display Unicode canned comments (F6 key, when allowing canned comments).

CCCFG01.DLL

Modified clsBDUniqueno to stop the ProcessSequence method from crashing, on the line forming the CDT value string (uses FormatDateTime function), when using Italian date-time settings. This was causing a nasty error in a script using the unique number class to generate a job number, since the crash was within a transaction, and left the table locked to other users.

Modified the IDRule class similarly too, since it also forms the CDT value string.

MDE

Modified to clear the status bar when the data grid window is closed.

Allowed for more user definable keys when in the data grid, since previously only had F6 to F12 available. Shift, Ctrl and Alt combined with F1 to F12 can now also be used, if they are not already being used (by Windows or MDE).

Dummy key values for the new key combinations are:

Shift/F1 to Shift/F12 124 to 135

Ctrl/F1 to Ctrl/F12 136 to 147

Alt/F1 to Alt/F12 148 to 159.

Eg,

Can now define Alt/F9 to the REP/QC command by using the following in an MDE script:

Sheet.SetKeyPress 156, "REP/QC"

PERFANA

Increased the width for the client display and allowed disabled clients to be visible.

STATREP

Increased the width for the client display and allowed disabled clients to be visible.

PRODREP

Allowed disabled clients to be visible.

PROFILE

Fixed problem where the popup menu was not being displayed for some of the controls, when using New or Command menu items (ScreenRun and ProfileRun). The same script, when run from the Command button, did show the (right-mouse) popup menu.

MDE, XMDE

Modified to use the new mUTextbox control for comments or usernotes (F4 key from the data grid).

Fixed problem with the Transfer command.

DASHBOARD SPR 1793

A new control has been added to Dashboard, MUTextBox. Some of the intrinsic controls of the MTextBox control needed to be changed to use the UniToolbox versions. Dashboard had to be updated to be able to use the new control.

CCCONN01.DLL

Added the Preamble and IsolationLevel let and get properties to clsConnection.

CCPOOL01.DLL

Added the ConnectionPreamble let property to clsPoolMngr.

CCSECU01.DLL

Added the ConnectionPreamble let and get properties to clsSecurity.

CCLOG01.DLL

Changed back to CCLAS splash and about box, changed the copyright owner to Mincom Limited, changed the website to the Mincom one, and modified the copyright message to include 2007.

Allowed for the ConnectionPreable CCLAS INI setting. This can bee used to specify the SQL statement to be executed when the connection is initialised.

Eg,

ConnectionPreable = SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Could be used to stop writers blocking readers for SQL SERVER.

GENERAL

Changed the owner to Mincom Limited.

Modified forms to use unicode text boxes for unicode fields.

Added the dummy mUTextbox control to UDF form, and implemented the MUTEXTBOX control for the SCR files.

STAFF

To be able to host user forms within the STAFF browser

StaffScreen1 = Shortcut, Filename

StaffScreen2 = Shortcut,Filename

GroupingScreen1= Shortcut, Filename

GroupingScreen2= Shortcut, Filename

etc

Expose:

PVExplorer

clsSecurity

clsBDStaff

clsBDGrouping

Fixes:

Added LoadScreenFileNames to mStaff, UserScreen & ShowUserScreen to frmStaff

Modified mStaff.LoadData, frmStaff.LoadNodeToExplorer, frmStaff.LoadExplorer, frmStaff.PVExplorer1_BeforeNodeSelectionChange,

frmStaff.LoadSCRMenu

CONFIG SER 1854

To be able to host user forms within the CONFIG browser

Program settings to enable user forms hosting:

GroupSectionScreen1 = Shortcut, Filename

InstrumentScreen1 = Shortcut, Filename

GroupPriceScreen1 = Shortcut, Filename

PriceScreen1 = Shortcut, Filename

IdentRulesScreen1 = Shortcut, Filename

HolidaysScreen1 = Shortcut, Filename

InvConversionScreen1 = Shortcut, Filename

CannedCommentsScreen1 = Shortcut, Filename

SectionScreen1 = Shortcut, Filename

RoundingScreen1 = Shortcut, Filename

TaxScreen1 = Shortcut, Filename

StatusCodesScreen1 = Shortcut, Filename

UnitScreen1 = Shortcut, Filename

UniqueNoScreen1 = Shortcut, Filename

etc

Expose:

clsSecurity

PVExplorer

clsBD & clsBO objects

Fixes:

Added UserScreen, ShowUserScreen, mnuFileViewScreenItem_Click, LoadSCRMenu to frmConfig

Added LoadScreenFileNames to mConfig.

Modified frmConfig.pvEX_AfterNodeSelectionChange, mpvx.PVLoadExplorerToolbarNoRun,frmConfig.pvEX_BeforeNodeSelectionChange, mconfig.Main

CCMESS.DLL, CCERR.DLL, SQL Scripts SER 1675

The changes to the SQL scripts were to add a new setting BackupOpenedFiles. This setting indicates if a backup copy of a file should be created when it is opened. The idea of this was to preserve the original file if the format got changed in the saving of it.

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','DASHBOARD','BackupOpenedFiles','');

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('DASHBOARD','BackupOpenedFiles','','BOOLEAN','','');

CONFIG SER 1861

User query screens required for browers

1. SectionUserQuery.scr

2. GroupSectionUserQuery.scr

3. HolidaysUserQuery.scr

4. UniqueNoUserQuery.scr

5. IdentRulesUserQuery.scr

6. UnitUserQuery.scr

7. StatusCodesUserQuery.scr

8. Instrument UserQuery.scr

9. TaxUserQuery.scr

10. InvConversionUserQuery.scr

11. PriceUserQuery.scr

12. GroupPriceUserQuery.scr

13. CannedCommentsUserQuery.scr

14. GroupLabUserQuery.scr

15. LabUserQuery.scr

16. LOBUserQuery.scr

Fixes:

Addded subs to frmConfig:

LoadUserQueryForms

moCannedCommentsFRMQuery_RefreshQueryData

moCannedCommentsItemFRMQuery_RefreshQueryData

moGroupLabFRMQuery_RefreshQueryData

moGroupPriceFRMQuery_RefreshQueryData

moGroupSectionFRMQuery_RefreshQueryData

moHolidaysFRMQuery_RefreshQueryData

moIdentRulesFRMQuery_RefreshQueryData

moInstrumentFRMQuery_RefreshQueryData

moInvConversionFRMQuery_RefreshQueryData

moLabFRMQuery_RefreshQueryData

moLOBFRMQuery_RefreshQueryData

moPriceFRMQuery_RefreshQueryData

moRoundingFRMQuery_RefreshQueryData

moStatusCodesFRMQuery_RefreshQueryData

moTaxFRMQuery_RefreshQueryData

moUniqueNoFRMQuery_RefreshQueryData

moUnitFRMQuery_RefreshQueryData

Modified:

mConfig.Main

frmConfig.QueryData, frmConfig.RefreshData

DASHBOARD, CCLOG SER 1828

The changes made for this SPR were so scripts that were saved in a UniCode format could be edited by Dashboard.

The changes required adjusting how the files were loaded and saved. There are actually a few different UniCode formats around, which are outlined in the table below:

Format Comments

UTF-8 Used mainly over the web.

UTF-16 Used mainly on windows systems.

UTF-16 (Big Endian) Used mainly on windows systems. The Big Endian means the largest number of the 2 bytes making up the “double-byte” character is first.

UTF-32 Used mainly on UNIX systems.

UTF-32 (Big Endian) Used mainly on UNIX systems. The Big Endian means the largest number of the 2 bytes making up the “double-byte” character is first.

With the tools we had available here, we could create UTF-16 and UTF-8 files, so these were the formats we catered for. We also discovered that while we could read a UTF-8 file, we could not save one, so if a UTF-8 file is opened in the Dashboard program when saving it will ask if it is ok to convert the format to UTF-16.

A couple of new buttons were added: Text Editor, and Refresh. The control we use to edit the code for the scripts is not UniCode compliant, and will not display the characters for locales that use UniCode characters. These buttons were added so the user could use a text editor of their choice to edit the code of the script. When they have finished the changes in their editor, the script can then be reloaded to include the changes using the Refresh button. Some new controls were added to the Dashboard options to allow the user to set this editor at run-time. A new staff setting, UniCodeTextEditor, was added to allow a default to be set for the editor to use.

The user has been given the option to save a file in a different format when originally in a format that can’t be saved. To cater for them overwriting their original file by accident, the option to make a backup copy of the original file when a file is opened has been added. These copies will be saved with a “.bak” extension. As a default when this is enabled, the files are to be saved into the same folder as the script. Some new controls have been added to the options dialog in Dashboard, however, that will allow the user to specify an alternate “backup” directory if they wish. A setting has also been added, BackupOpenedFiles, to enable this as a default if they wish.

New settings:

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','DASHBOARD','UniCodeTextEditor','');

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('DASHBOARD','UniCodeTextEditor','','FILE','','');

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','DASHBOARD','BackupOpenedFiles','');

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('DASHBOARD','BackupOpenedFiles','','BOOLEAN','','');

Prompts for new buttons on toolbar:

00148 "ccCmdDashboardTextEditor ~Text editor ~Edit code in text editor ~ ~0~"

00149 "ccCmdDashboardRefresh ~Refresh ~Reload the contents of the script ~ ~0~"

Prompts for new controls in options:

04036 "ccMsglblDashboardOptionsUniCodeEditor ~UniCode text editor ~Text editor to use for editing scripts ~ ~0~"

04037 "ccMsglblDashboardOptionsBackupFiles ~Backup opened files ~Make a backup of files that have been opened ~ ~0~"

04038 "ccMsglblDashboardOptionsBackupFolder ~Backup folder name ~Folder to make backup copies of files to ~ ~0~"

Prompts for warning messages when changing formats:

00105 "ccErrorUniCodeFormatChange ~Error ~File uses a UniCode format other than |1. This action may change the format. ~ ~0~"

00106 "ccErrorUniCodeFormatChangeSave ~Error ~File was originally in |1 format. This action will change the format to |2. ~ ~0~"

The changes to CCLOG were to allow UniCode files to be loaded into the control used for editing script in Dashboard, the clsScriptEdit class. Code had to be added to this to load and save the files in UniCode format when editing the script in the ScriptEditor control.

BATCH SER 1672

Modified Batch to include the ability to select samples using user defined form(s).

CCSMBL01.DLL, CSTRK01.DLL SER 1879, SER 1880

All of the objects have been altered to cater for 20 USERFIELDS on every table. The code has been written so it is not mandatory (or the programs won’t crash) for all of these fields to be present in the table. The only mandatory ones are the ones that existed in the table before:

USERFIELD1 – 5 on CMCONSUME table objects.

USERFIELD1 – 5 on CMCONSUME_TYPE table objects.

USERFIELD1 – 5 on CMSUPPLIER table objects.

USERFIELD1 – 4 on STJOB_SAMPLE table objects.

USERFIELD1 – 4 on STPHYSICALTYPE table objects.

USERFIELD1 – 4 on STJOB table objects.

The SQL scripts have also been altered for this change. As quite a few new fields have been added to each table, the length of the new user fields has been set to 1 character to reduce the space taken up. These can be extended in the future should the implementation require it.

ALTER TABLE CMCONSUME ADD (USERFIELD6 VARCHAR(1))

...

ALTER TABLE CMCONSUME ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMCONSUME_SUPPLIER ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE CMCONSUME_SUPPLIER ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMCONSUME_TYPE ADD (USERFIELD6 VARCHAR(1))

...

ALTER TABLE CMCONSUME_TYPE ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMCONSUME_USAGE ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE CMCONSUME_USAGE ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMCONSUMEAUDIT_SUPPLIER ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE CMCONSUMEAUDIT_SUPPLIER ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMCONSUMEAUDIT_USAGE ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE CMCONSUMEAUDIT_USAGE ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMSUPPLIER ADD (USERFIELD6 VARCHAR(1))

...

ALTER TABLE CMSUPPLIER ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE CMSUPPLIER_CONTACT ADD (USERFIELD1 VARCHAR(1))

,,,

ALTER TABLE CMSUPPLIER_CONTACT ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STACTION ADD (USERFIELD1 VARCHAR(1))

,,,

ALTER TABLE STACTION ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STCONTAINER ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE STCONTAINER ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STJOB ADD (USERFIELD5 VARCHAR(40))

...

ALTER TABLE STJOB ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STJOB_SAMPLE ADD (USERFIELD5 VARCHAR(1))

...

ALTER TABLE STJOB_SAMPLE ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STJOBAUDIT ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE STJOBAUDIT ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STJOBAUDIT_SAMPLE ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE STJOBAUDIT_SAMPLE ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STLOCATION ADD (USERFIELD1 VARCHAR(1))

...

ALTER TABLE STLOCATION ADD (USERFIELD20 VARCHAR(1))

/

ALTER TABLE STPHYSICALTYPE ADD (USERFIELD5 VARCHAR(1))

...

ALTER TABLE STPHYSICALTYPE ADD (USERFIELD20 VARCHAR(1))

SAMPLETRACK, CONSUMABLES SER 1879, SER 1880

Toolbar buttons have been added to give access to a user screen at all available levels. The scripts are assumed to be in the Config directory. The new scripts are listed below.

Consumables:

ConsumeUsageUser.scr: Shown from the userscreen button on the UsageEdit form.

SupplierContactUser.scr: Shown from the userscreen button on the SupplierContact form.

ConsumableSupplierUser.scr: Shown from the userscreen button on the ConsumableSupplierEdit form.

SampleTrack:

STLocationUser.scr: Shown from the userscreen button on the LocationEdit form.

STContainerUser.scr: Shown from the userscreen button on the ContainerEdit form.

STActionUser.scr: Shown from the userscreen button on the ActionEdit form.

CCACTX01.DLL SPR 1882

Modified BDCombo and BDComboGrid to use Unicode controls

CCQTWZ01, CLIENT SER 1881

A round 3 SGS project

See Quote wizard enhancement.doc

New fields required: SQL statement inserted below

alter table client_quote

add

[USERFIELD6] [varchar] (40) NULL ,

...

[USERFIELD20] [nvarchar] (40) NULL,

[PROCEDURECODE] [varchar] (20) NULL ,

[ACCEPTED_DATE] [datetime] NULL ,

[NOTESFILE] [nvarchar] (80) NULL

Fixes:

added subs: RefreshProjectDescription,PopuplateDescLabels,PopuplateProcedureCode,RefreshClientContactName to frmClientQuote

Modified frmQuoteWizardNew.cboGroupCode_Click,frmQuoteWizardNew. Form_Activate, frmQuoteWizardNew.TabStrip1_Click

frmQuoteWizardNew.Save, frmQuoteWizardNew.SaveQuotation, frmQuoteWizardNew.Form_Load, frmQuoteWizardNew.Form_QueryUnload

added LoadPriceShemeControlData sub to frmQuoteWizardNew

added ctlPriceScheme.ocx to ccQTWZ01.vbp

New program settings to display cumstom column header for the new quote wizard listview/treeview interface

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme1ListViewColumn1','S.SCH_CODE,10,SchCode')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme1ListViewColumn2','S.SCHEMETYPE,10,Type')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme1ListViewColumn3','S.DESCRIPTION,30,Description')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme1ListViewColumn4','S.PRICECODE,10,PriceCode')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme2ListViewColumn1','S.SCHEMENAME,20,Name')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme2ListViewColumn2','S.SCHEMETYPE,0,Type')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme2ListViewColumn3','S.DESCRIPTION,30,Description')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme2ListViewColumn4','S.SECTIONCODE,10,Section')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme2ListViewColumn5','S.PRICECODE,20,Price Code')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Scheme2ListViewColumn6','S.SCH_CODE,10,Code')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Analyte1ListViewColumn1','SA.ANALYTENAME,10,Name')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Analyte1ListViewColumn2','SA.SHORTNAME,10,Short')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Analyte1ListViewColumn3','SA.DESCRIPTION,30,Description')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Analyte1ListViewColumn4','SA.ANALYTECODE,10,Code')

INSERT INTO STAFF_PROGRAM_CFG VALUES('CDEMO2','CCLASMGR','CLIENT','Analyte1ListViewColumn5','SA.PRICECODE,10,PriceCode')

PROFILE SER 1886

Modified the list views in AddNew and SaveAs to support Unicode.

Changed the combos for contact code on the General and ClientTo tabs to BDCombos, so that the client name and other contact details can be seen.

Added staff settings to define the columns for the contact grid.

Added staff setting to define the lookup field for the contact grid and the two client grids.

The default settings for the above are:

ClientContactLookupColumns = "CONT_CODE,CONT_NAME,CONT_TITLE,DEPARTMENT"

ClientContactLookupField = "CONT_CODE"

ClientInvoiceLookupField = "CLI_CODE"

ClientReportLookupField = "CLI_CODE"

CCPROF01.DLL SER 1886

Added the extra (optional) userfields (6-20) to the PROFJOB_CUID_SCHEME table.

CCMESSES, CCMESSFR, CCMESSID, CCMESSPT, SAMPLETRACK, CONSUMABLES

The code was changed to add user field tabs to forms in SampleTrack and Consumables. The forms that were added are:

Consumables.frmConsumableEdit

Consumables.frmSupplierEdit

SampleTrack.frmJob

The scripts used for these forms are:

%ConfigDirectory%\CONSUMABLEUSER.SCR

%ConfigDirectory%\CONSUMABLESUPPLIERUSER.SCR

%ConfigDirectory%\STJOBUSER.SCR

Code was also added to handle the problem where you have 2 different controls updating the same field on the form. How it works is when a tab is clicked it will copy the value from the control on that tab to the controls on the other tabs. When it is then written back to the object at save, both controls will have the same value.

CCINV01.DLL SER 1839

The value for the Amount field was not formatted when writing the value to the database. The code has been changed to format this when the FormatTaxAsCurrency setting was enabled. This was changed in CCINV01.clsBDInvoice.GenerateInvoice.

INVOICE, CCINV01.DLL SER 1839

The code has been altered to subtract the discount as each line of the invoice is added to the total amount. This was done to reduce rounding problems. Subtracting the total discount from the total amount after the total amount had been calculated (discount amount calculated from a percentage), gave a different result than if the discount was subtracted from each amount as it was added to the total amount. This is only done when the FormatTaxAsCurrency setting is enabled.

CCPROF01.DLL SER 1885

Added optional extra userfields 6-20 to PJCS.

CCPROF01.DLL SER 1888

Added optional extra userfields 21-40 to PJS.

CCPREP01.DLL SER 1885, 1888

Modified to cope with optional extra userfields 6-20 in PJCS

CCPRWZ01.DLL SER 1885, 1888

Modified to cope with optional extra userfields 6-20 in PJCS, and userfields 21-40 in PJS.

CCLMNT01.DLL SER 1889

Added optional extra userfields (all tables up to 20 each).

Labmaint - added userfields 6-20.

Labmaint_Schedule - added userfields 10-20

LabmaintAudit - added userfields 10-20

CCPROF01, MDE, SAMANA SER 1877

Sample weights/volumes captured in LB jobs should be auto-copied back to Client Jobs.

This should be an automatic function that MDE and SAMANA does when the weights and volumes are saved into PJCS table.

These details should also be copied (updated )into the Client Job's records in PJCS,

otherwise the user cannot ever call up the RAW results in MDE in the client jobs.

Fixes:

The global setting LBWeightVolumeTransfer=ENABLED will enable this functionality.

Added sub TransferSampleWeightVolume, TransferWeightVolume to clsBDProfjob

Added property LBWeightVolumeTransfer to clsDBProfjob

Modified clsBDProfjob.DBSaveJobvalues, clsBDProfjob.SaveAnalyteValues,

Modified frmSamanaEdit.ProfJob, mSamana.LoadData

Modified frmJobEdit.Profjob, mMDE.LoadData

CCLAS 1.4.14

Defect fixes only

CCLAS 1.4.13

INVOICE

Added a new InvUDF hook, to determine whether to allow the selected job(s) to be opened:

Function CanOpenInvoice()

' clsInvoice, clsSecurity

CanOpenInvoice = ""

End Function

If the returned string is not blank, it will be displayed as an error message and the user will not be able to continue with opening the job(s) for invoicing.

CCMESSES.DLL,CCMESSFR.DLL,CCMESSID.DLL,CCMESSPT.DLL, CCACTX01.OCX, PROFILE, SCHEMESPR 1669

Profile needed some changes made to it to be able to tie in the new sample grid to it better. This was particularly in the area of loading, where a new setting was added, SampleGridInitialSchemes, to set the schemes that should be shown initially in the sample grid when it is first displayed. The values for this setting can be ALL,NONE, or a comma delimited list of scheme codes.

There was a change to the combined scheme analyte interface made to expose the toolbarbutton_click event when the save button is clicked. The scheme program was then altered to do the same thing and keep the interfaces as similar as possible.

CCPROF01.DLL SER 1775

The code that uses the SpikeExtIdSource and SpikeDesIdSource global settings has been modified to allow multiple fields in them. The fields are enclosed in angle brackets ([]). If the string with all the fields replaced is longer than the length of the field it needs to write to, the data will be truncated to write the value to the database.

LIBMAN SPR 1753

When using LIBMAN and wishing to connect to another server other than the current one, the SQL syntax is

Server.Database.DBO.Table

But the problem is that when you add a filter the program tries to use an additional . separator,

ie

Select * from TERMINATOR.CCTESTING14.DBO.SCHEME

where

TERMINATOR.CCTESTING14.DBO.SCHEME.SCH_CODE like 'A%'

Then SQL Server complains that there are too many .dot separators.

So will need to give the Table an alias.

ie

Select * from TERMINATOR.CCTESTING14.DBO.SCHEME Scheme

where

Scheme.SCH_CODE like 'A%'

These changes willl need to apply to any connection to any tables that are 'touched' by LIBMAN.

This SQL Syntax has been confirmed as being incorrect using QueryTools.

The error message reported by the server is:

The number name 'TERMINATOR.CCTESTING14.DBO.SCHEME' contains more than the maximum number of prefixes. The maximum is 3.

State: 42000, Native: 117, Source: Microsoft OLE DB Provider for SQL Server

Fix:

Modified CCMLB01.clsMLB subs & Funtions:

PROCREG_ANAUnitConvertInsertSQL,PROCREG_ANAUnitInsertSQL

PROCREG_REPUnitConvertInsertSQL,PROCREG_REPUnitInsertSQL

PROCREG_ROUNDINGInsertSQL, PROCREG_ROUNDINGITEMInsertSQ

PROCREG_UnitInsertSQL, PROCREGInsertSQ

PROCREGSCHEMEANALYTEInsertSQL,PROCREGSCHEMEInsertSQL

ProcRoundingUnitConvertInsertSQL,RoundingUnitConvertInsertSQL

SCHEME_ANAUnitConvertInsertSQL,SCHEME_ANAUnitInsertSQL

SCHEME_REPUnitConvertInsertSQL,SCHEME_REPUnitInsertSQL

SCHEME_ROUNDINGInsertSQL,SCHEME_ROUNDINGITEMInsertSQL

SCHEMEANALYTEInsertSQL,SCHEMEInsertSQL

SCHEMEREFERInsertSQL,CopyProcedureSQL

CopyProcedureSchemesSQL,CopySchemeSQL

GetProceduresSQL, setSchemeSQL

CCPROF01.DLL, CCAUDH01.DLL SPR 1767

Remove use of ZZZ>>> to find empty recordset.

It is a regular thing that a a SQL of

select * from AUDITHEADER where LABCODE = 'SW' and PROGRAMCODE = 'ZZZZZ~~~~ZZZZ>>>>'

is used to get the recordset structure of the AUDITHEADER

Suspect that CLIENT, SCHEME programs at least need to be changed.

Also used in many other programs to get a empty record

select * from PROCREG where LABCODE = '<<<<>>>!!' and PROCEDURECODE = '<<<<>>>!!'

Should be better to use

select * from AUDITHEADER where 1=2

Fix: modified CCAUDH01.clsBDAuditHeader.OpenRsAuditheader &

ccprof01.clsBDUaditjob.OpenRsAuditjob.

CCLAS SER 1688

Added the MenuTitle staff setting, to specify a user-specific title or caption for the menu. If this setting has a value, it will override the menu caption from the menu file (StartMenu).

SAMANA SPR 1757

The new options under Add to include a user defined form, is not available when using the File Menu choices.

Fixed: added SetWindowUserDefinedRunMenu sub to frmSamanaEdit

CCLOG01.DLL SPR 1789

Added a new bitmap to the Splash, Login, and About screens. This also meant adding a couple of labels to display the product name and version. The size of the forms may be a little larger than before, as the bitmap to use contained text for the copyright clause, and resizing the bitmap would cause this text to lose clarity. To work around this, the forms were resized to keep the bitmap at its original size. The about screen also has a whole new look. It will now display the details in a frame at the bottom of the form.

PROFILE SPR 1625

Modified to allow the F4 functionality to edit the user notes, regardless of whether the cell is locked or unlocked.

CLIENT SER 1783

To be able to host user forms within the CLIENT browser

staff program settings:

programCode = CLIENT

ClientScreen1 = Shortcut, Filename

ClientScreen2 = Shortcut,Filename

etc

programCode = GROUPCLIENT

GroupClientScreen1 = Shortcut, Filename

GroupClientScreen2 = Shortcut,Filename

etc

programCode = COSTCENTRE

CostCentreScreen1 = Shortcut, Filename

CostCentretScreen2 = Shortcut,Filename

etc

Expose:

PVEx

clsSecurity

clsClient etc

Fixed: modified frmClient.LoadNodeToExplorer, frmClient.LoadExplorer, frmClient.PVExplorer1_BeforeNodeSelectionChange

frmClient.PVExplorer1_ToolBarDropDown

added frmClient.LoadSCRMenu, frmClient.ClientScreen, frmClient.ShowClientScreen

Could be used to prompt for client selections, etc to construct clients etc.

PROFILE SER 1792

New hooks have been added to the ProfJobAddNew.scr. An example of these is below:

Function cmdOK_Click()

End Function

Function cmdCancel_Click()

End Function

These hooks are fired when the OK and Cancel buttons are clicked on the dialogs displayed when adding a new job or copying an existing job. These have been coded as functions so that, if in the future, a value needs to be returned from it, it can be.

CCPROF01.DLL SER 1795

Allowed for up to 30 optional user fields in the PROFJOB_CUID_SCHEME_ANALYTE table. Note that nothing adverse should happen, if the table does not have USERFIELD6 to USERFIELD30 fields.

Added 25 extra user fields (USERFIELD6 to USERFIELD30) to the clsBOProfjobCuidSchemeAnalyte and clsCuidSchemeAnalyte classes.

Modified methods using the user fields to also cater for the optional extra user fields.

CCPROF01.DLL SPR 1644

Modified the formatted value calculations to default the value to the final value and clean up.

MDE, XMDE SER 1795

Modified methods using the PROFJOB_CUID_SCHEME_ANALYTE user fields, to cater for the optional extra user fields (USERFIELD6 to USERFIELD30).

SAMANA SER 1795

Modified methods using the PROFJOB_CUID_SCHEME_ANALYTE user fields, to cater for the optional extra user fields (USERFIELD6 to USERFIELD30).

CCPREP01 SER 1795

Modified ProfjobCuidSchemeAnalyteSQL to check that new fields are loaded, before forming the query for the PROFJOB_CUID_SCHEME_ANALYTE table.

INVOICE SER 1785

To be able to host user forms within the Invoice browser

InvoiceScreen1 = Shortcut, Filename

InvoiceScreen2 = Shortcut,Filename

etc

Expose:

PVEx

clsSecurity

clsInvoice

Added LoadScreenFileNames to mInvoice, ShowInvoiceScreen to frmJobs, mnuFileViewScreenItem_Click to frmJobs

Modified: mInvoice.LoadData, frmJobs.Form_Activate

Could be used to prompt for jobs selections, etc to construct invoice etc.

PROFILE SPR 1809

The hooks added for the cmdOK and cmdCancel buttons (See change made on the 18/09/2006 for SER 1792 for more information) now allow a return value. How it handles the return values is outlined below:

- If a string is returned (that has a length > 0), it will display the string in a message box and leave the form visible (ie: cancel the button that was clicked in effect).

- If a boolean value False is returned, it will leave the form visible (ie: cancel the button that was clicked in effect).

- Any other value will be processed as normal.

18/10/06 AuditJob, Batch, CCCOMM01, Client, Config,

Consumables, Dashboard, Invoice, LabMaintenance,

LibMan, MDE, Prodrep, Profile, Report, SamTrack

SAMREG, SCHEME SER 1793

There above programs have changed to be able to use a new GenericControl Control from script. This new control is basically a container for any ActiveX control the user would like to include in a script given its ProgID. In the process of making these changes, the Dashboard program has been changed to include an item in the toolbox for this new control.

The new control will have a line similar to the following added to it when it is added to the script:

'GENERICCONTROL,GENERICCONTROL1,,,,3570,2310,3030,900,Protoview.Explorer.1,,,,,,

The properties available to be set on this control are the Top, Left, Width, and Height properties and also the mask property which will hold the ProgID for the type of control to create.

CCPROF01.DLL SPR 1800

Added before and after save hooks to scheme sample grid.

CCACTX01.DLL, CCMESS.DLL, SQL Scripts SPR 1669

These changes are fixes to the SampleGrid from the testing documents. The major changes made are as follows:

- The exclude files have been included again for the cases where you want to copy from a template job that has some sample idents in it.

- The second column displaying the text for the analytestatus has been removed as a default column in inverted mode.

- New toolbar button and popup menus, Expand and Collapse, have been added. These give the option to expand or collapse all the selected schemes when viewing multiple schemes in normal mode. It will only expand or collapse a scheme if it has its column header selected.

o This change required new prompts to be added to the Resource DLLs.

o This change also included adding a new setting, ExpandOnOpen. The idea behind this is that all the schemes will be displayed expanded when the control is first opened if this setting is enabled. This setting is included in the new SQL Scripts:

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridExpandOnOpen','')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridExpandOnOpen','','BOOLEAN','','')

- Changing the status of related QC samples when an UNK sample is changed. The rules behind this one are if you change the status from a UNK to LNR or NA, the status will be copied down to any related REP, ReRead, or DUP samples. The values can never be copied back up.

CCACTX01.SLL SPR 1669

The code has been changed to use the new SampleGridExpandOnOpen setting. If the setting is true, all schemes will be expanded the first time the grid is shown when the opened in multi-scheme mode. It default to false for this setting should it not be set.

SQL Scripts

The Scheme1ListViewColumn and Analyte1ListViewColumn settings did not include the PROFJOB_SCHEME, PROFJOB_SCHEME_ANALYTE, PROCREG_SCHEME, or PROCREG_SCHEME_ANALYTE tables in the records for the STAFFPROGRAMEDIT table. These tables have been added to the INSERT statements.

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','Scheme1ListViewColumn','SCHEME S, PROFJOB_SCHEME PJS','BROWSER','','')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','Analyte1ListViewColumn','SCHEME_ANALYTE SA, PROFJOB_SCHEME_ANALYTE PJSA','BROWSER','','')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROCREG','Scheme1ListViewColumn','SCHEME S, PROCREG_SCHEME PRS','BROWSER','','')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROCREG','Analyte1ListViewColumn','SCHEME_ANALYTE SA, PROCREG_SCHEME_ANALYTE PRSA','BROWSER','','')

The update scripts also required an UPDATE statement be added to cater for the situation these records already exist in the STAFFPROGRAMEDIT table:

UPDATE STAFFPROGRAMEDIT SET LOOKUPTABLE='SCHEME S, PROFJOB_SCHEME PJS' WHERE (PROGRAMCODE = 'PROFILE') AND (INIVARIABLE ='Scheme1ListViewColumn')

UPDATE STAFFPROGRAMEDIT SET LOOKUPTABLE='SCHEME_ANALYTE SA, PROFJOB_SCHEME_ANALYTE PJSA' WHERE (PROGRAMCODE='PROFILE') AND (INIVARIABLE='Analyte1ListViewColumn')

UPDATE STAFFPROGRAMEDIT SET LOOKUPTABLE='SCHEME S, PROCREG_SCHEME PRS' WHERE (PROGRAMCODE='PROCREG') AND (INIVARIABLE='Scheme1ListViewColumn')

UPDATE STAFFPROGRAMEDIT SET LOOKUPTABLE='SCHEME_ANALYTE SA, PROCREG_SCHEME_ANALYTE PRSA' WHERE (PROGRAMCODE = 'PROCREG') AND (INIVARIABLE = 'Analyte1ListViewColumn')

PERFANA SER 1780

To allow the PERFANA program to be the host of various site specific QC forms, there need to be a mechanism to run a user form from within the QC program.

Suggest

PerfanaScreen1 = Shortcut,Filename

PerfanaScreen2 = Shortcut, Filename

etc

The objects would need to be exposed

clsPerfana

clsSecurity

etc

Fixed: Added LoadScreenFileNames to modPerfAna, ShowPerfAnaScreen, LoadSCRMenu to frmPerfAna

Modified modPerAna.LoadSettings, frmPefAna.LoadMessages, frmPefAna.tbarTool_ButtonMenuClick, frmPefAna.SetupMenu

CCLAS 1.4.12

Defect fixes only

CCLAS 1.4.11

CLIENT SPR 1588

Added client code label to the carbon copies edit form.

PROFILE SPR 1635

There has been a new event added to the control, AfterItemSelectionChange, to be able to disable buttons when a new list item is selected. The KeyUp event has also been code to check for the selection changing.

The ItemCheck event will now de-select any selected list items when an item is checked. The KeyUp event has also been coded to work around issues with checking items when SpaceBar pressed.

SCHEME SPR 1635

There has been a new event added to the control, AfterItemSelectionChange, to be able to disable buttons when a new list item is selected. The KeyUp event has also been code to check for the selection changing. Even though the control does not display these buttons, and there is technically no reason to for these changes to be made in this program, I have still done it to try and keep it as close to Profile as possible for consistency.

The ItemCheck event will now de-select any selected list items when an item is checked. The KeyUp event has also been coded to work around issues with checking items when SpaceBar pressed.

AUDIT, AUDITJOB, BATCH, CCLASMENU, CLIENT, COMMVIEW, CONFIG, CONSUMABLES, DASHBOARD, GENUTIL, INVOICE, LABMAINTENANCE, LIBMAN, LICENCE, PERFANA, PRODREP, PROFILE, REPORT, REVENUE, SAMANA, SAMTRACK, SAMREG, SCHEME, SPC, STAFF, STATREP, TASKMAN, XMDE SPR 1580

Added changes to allow context sensitive help to be displayed when pressing the F1 key. The help contexts are displayed at the form level only; control level contexts have not been implemented as yet.

Help should be displayed from each form in CCLAS when the F1 key is pressed. If there is a help context for that form, it should jump to the context set in the help. The Search menu was also coded in making these changes, so the Search tab should be selected when the “Search for Help on” menu item is selected.

A new hook was also introduced: ScriptShowHelp. This is located in a new script, HelpUDF.vbs in the config directory. A Dictionary object is passed through to this hook containing items of useful information that can be used in the script. It also gives the ability to change items and pass them back to the application that called this script. At the moment the HelpOverride and HelpFile items are the only items that will reflect changes back to the calling application, the rest of the items are more informational for testing purposes. The users will have the ability to display their own help systems using this hook if they wish, using the HelpOverride parameter to cancel the default help system displayed by CCLAS. If this script, or procedure doesn’t exist, or the HelpOverride parameter is set, the default help from CCLAS will be shown.

An example of this hook is given below, with a comment block at the top describing the procedure and the items of the collection passed in.

Sub ScriptShowHelp(oParams)

'* ************************************************************************

'* UNIT NAME:

'* HelpUDF.ScriptShowHelp

'*

'* DESCRIPTION:

'* Procedure to display User defined help.

'*

'* INPUT PARAMETERS:

'* oParams: Collection of parameters passed into method.

'*

'* OUTPUT PARAMETERS:

'* None

'*

'* RETURN VALUES:

'* None

'*

'* SIDE EFFECTS:

'* None

'*

'* NOTES:

'* oParams is a dictionary object containing different

'* useful pieces of information.

'*

'* Items are accessed using a key: oParams(Key).

'* Items can be edited: oParams(Key) = Value

'*

'* The items in this collection are as follows:

'* HelpFile : Name of help file to use.

'* ProgramCode : Programcode for program that called this method.

'* CurrentForm : Name of active form when help triggered.

'* HelpOverride: Flag to use current help method or not after this completes.

'* ControlHelp : Flag to use help to the control level or not.

'* HelpContext : Default help context to use if there is not help context.

'* HWND : Default handle of form to use if no active form.

'* ************************************************************************

Dim s

Dim l

Dim aKeys

Dim aItems

aKeys=oParams.Keys

aItems=oParams.Items

For l=1 to oParams.Count

s = s & aKeys(l-1) & ": " & aItems(l-1) & vbCrLf

Next

MsgBox s

' oParams("HelpOverride") = False

End Sub

INVOICE SPR 1667

There has been a change made to add a new Boolean setting: IncludeMiscSchemesinTotal.

The purpose of this new setting is to exclude the values of any MIS scheme from the total shown in the header line for a job when it is DISABLED.

The default value for this new setting is ENABLED, and it only comes into effect when the IncludeJobHeaderLine setting is ENABLED.

CCCLI01.DLL

Updated Costcentre BD to use standard code.

CCLOG01.DLL, CCPOOL01 .DLL SER 1674

Modified to check whether a workstation has PREFERRED CONNECTION defined, in the CCLAS.INI file. If no preferred section is defined for a workstation, the usual CCLAS section will be used.

[PREFERRED CONNECTION]

‘ Only 2 specific workstations have a different connection.

WS0001=CCLAS1

WS0002=CCLAS2

[CCLAS

[CCLAS1]

[CCLAS2]

INVOICE SER 1670

Modified clsInvoice to add a property get for InvoiceUniqueNo, and also added the new BeforeGetSequence (InvUDF8) hook, for InvUDF.VBS.

22/05/06 Audit,AuditJob,Batch

CCLASMenu,Client,CommView,

Config,Consumables,Dashboard,

GenUtil,Invoice,LabMaintenance,

LibMan,MDE,Perfana,Prodrep,

Profile,Report,Revenue,Samana,

SamTrack,SamReg,Scheme,SPC,

Staff,StatRep,Taskman,xMDE,

CCPRWZ01.DLL, CCQTWZ01.DLL SER 1580

All the programs had to be recompiled for the context sensitive help. It had been code to only use the help context for the main form of the application, and had to be changed to use the contexts for each form in the application.

AUDITJOB, CLIENT, INVOICE, MDE, PRODREP, PROFILE, REPORT, SAMTRACK, SCHEME, XMDE SER 1580

I have added code to allow context sensitive help to be displayed for the scripts for the User Criteria Forms. The help context of these forms will be help context of the form that hosts the script. If the owner form has no help context the help context of the main form of the application will be used.

The change involved coding a KeyDown event for the form, and setting the help context to be the help context of the owner form when it was set.

CLIENT, CONFIG, CONSUMABLES, INVOICE, LABMAINTENANCE, MDE, PROFILE, CCQTWZ01.DLL, SAMANA, SAMPLETRACK, SAMREG, SCHEME, STAFF, XMDE SER 1580

The applications have been changed so the forms displayed for editing UserFields will use the same help context as the form that called it. These forms are defined as scripts.

Dialogs that display scripts were also checked, but as the scripts are loaded onto the same form, no changes were required.

The code changes generally required changing a procedure called ShowScreen to pass through the help context to UserScreen which displayed the script.

CCMESSPT.DLL, CCMESSID.DLL, CCMESSFR.DLL, CCMESSES.DLL SER 1580

The Recource DLLs have been compiled without any help context ids in them. The thinking behind this is that CCUTIL.DLL can be changed to use the enumeration number for the help context id number, so the help context id in the resource files is no longer needed.

CCLOG01.DLL, AUDIT, AUDITJOB, BATCH, CCLASMENU, CLIENT, LICENCE, COMMVIEW, CONFIG, CONSUMABLES, DASHBOARD, GENUTIL, INVOICE, LABMAINTENANCE, LIBMAN, MDE, PERFANA, PRODREP, PROFILE, REPORT, REVENUE, SAMANA, SAMPLETRACK, SAMREG, SCHEME, SPC, STAFF, STATREP, TASKMAN, XMDE, CCWWW01, CCCOMM01.DLL, CCQTWZ01.DLL, CCACTX01.OCX SER 1580

These programs have been changed to allow context sensitive help to be triggered from the forms in CCLOG01. There was not enough information to be able to display the help from CCLOG. It needed a security object, an error handler object, the name of the help file, and the help context to be passed through to it. To work around this an event has been coded into every class in CCLOG that displays a form. This event is fired when the F1 key is pressed, and is called, funnily enough, F1KeyPress. This event will pass back the form object that triggered the event and this form can then be used in displaying the help using the objects from that application.

Not all the forms in CCLOG have been coded for in the applications. The ones that currently display context help are:

• The QCBlockSelector. This is shown from Batch, Scheme, and Profile when selecting the positions for STDs and BLKs in a scheme.

• The Export form. This is shown from GenUtil when reporting from the classes node, and from Perfana when reporting summary samples.

• The about box. This is shown from the help about menu option of every application that has a help menu. There is no help context number defined for the about box at the moment, as it doesn’t use a prompt for its form caption.

These changes will require the new CCLOG be re-registered. The above list of programs is basically every application that has a reference to CCLOG.

CCUTIL01.DLL SER 1580

The Enumeration property of the clsMessage class has been changed to return the value of the prompt as the HelpContextID. This will prevent the need of help contexts in the resource files. The thinking behind this is that the context sensitive help is on a form basis, meaning, there is a help context for every form rather than each individual control. This reduces the number of help context numbers needed by the system, and also improves the uniqueness of the help contexts as each form should have its own prompt. So since each prompt represent a form, there is no need to include the help context in the resource file, and the prompt number can be used for the help context ID.

PROFILE, SCHEME SPR 1669

The SQL scripts have been updated to include new settings required for changes to the sample grid outlined in this SPR. Below are the settings that have been added:

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridSchemeCodeDisplayColumn','S.SCHEMENAME,10,Scheme name')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridSchemeCodeDisplayColumn','SCHEME S','BROWSER','','')

GO

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridAnalyteCodeDisplayColumn','SA.ANALYTENAME,10,Analyte name')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridSchemeCodeDisplayColumn','SCHEME_ANALYTE SA','BROWSER','','')

GO

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridInvertedExtraColumn1','PJCSA.ANALYTESTATUS,10,Analyte status')

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridInvertedExtraColumn','PROFJOB_CUID_SCHEME_ANALYTE PJCSA','BROWSER','','')

GO

POROFILE, SCHEME SPR 1726

A new hook has been added to the ProfJobAnalyteAddNew.scr and the ProcRegAnalyteAddNew.scr user defined scripts. The header definition of this hook is given below:

Sub AfterNodeSelected(sScheme, sAnalyte, lVersion)

' Code goes here.

End Sub

The thinking behind this hook is that more useful information will be able to be displayed about the number of anlalytes selected and the number of analytes un-selected; like a status bar indicator. The normal NodeSelected hook could not be used as there was processing done after this was called that affected the data shown in the list.

CCLASMENU, CCMESSES.DLL, CCMESSFR.DLL, CCMESSID.DLL, CCMESSPT.DLL SPR 1580

A new prompt, ccFrmCCLAS, has been added. This is so the main form in CCLASMenu has a help context it can display. Before this the caption of the form was loaded from the MNU files and no prompt was used, so the form had no help context. The resource DLLs had to be recompiled to include the new prompt.

SCHEME, PROFILE SPR 1706

A new script hook has been added, SchemeUpdated. This hook will only be available from the combined scheme analyte selection, and will allow the user to do an UpdateScheme or UpdateAnalyte in script so the buttons do not have to be clicked manually after adding a scheme. It is fired whenever new schemes or analytes are saved in the job or procedure.

This function will be declared as follows:

Sub SchemeUpdated(sSchCode, lSchVersion, bAddScheme, bAddAnalyte, sTaskNumber)

End Sub

Below is a description of each of the arguments passed in to it:

sSchCode: The scheme code being saved.

lSchVersion: The version of the scheme being saved.

bAddScheme: True if the scheme is being added to the job/procedure.

bAddAnalyte: True if there are analytes being added to the job/procedure.

sTaskNumber: An identification number for the action being performed when the hook was triggered. The numbers are as follows:

514 => Refresh with Save

600 => Save

601 => Procedure with Save

602 => Grid with Save

604 => Update Scheme with Save

605 => Update Analyte with Save

900 = > Scheme Record Updated (ie double click on Scheme)

901 => Analyte Record Updated (ie double click on Analyte)

902 => After a procedure has been added (for new schemes and analytes added as part of the procedure)

CCRVREP01.DLL SER 1671

Added an InvoiceMask property to the clsRVREP class, which can be used to filter the invoice numbers used by the Revenue report.

REVENUE SER 1671

Added the InvoiceMaskDefault staff setting, which can be used to define the default filter for the invoice numbers. The default value for this setting is blank (similar to using %), to signify that no filter will be used for the invoice numbers.

Added the InvoiceMask1..n staff settings, which can be used to define the selectable drop-down options for the invoice mask, when Revenue is run interactively.

Added an InvoiceMask property to the clsRevenue class, which can be used to filter the invoice numbers used by the Revenue report. This will use the InvoiceMaskDefault, if not set manually.

Added the Invoice mask prompt to the General tab of the interactive Revenue program. The selected or entered Invoice mask will apply to the other tabs also, similarly to the date criteria, and also to the generated report.

PROFILE, CCPROF01.DLL SER 1673

Added a new hook for Profile, in PROUDF.VBS, to specify whether to allow concentration record creation (or re-creation) for a job, when using CreateConcDB, UpdateScheme or UpdateSchemeAnalytes methods.

Function CanCreateConcDB (sProJob, sSchCode, bQC, bUpdate, bUpdateAnalytes)

‘ clsBDProfJob, cslSecurity, clsSchemes

‘ If there are no schemes in the job or no samples, then don’t proceed.

‘ If Count(Schemes) = 0 Then

‘ CanCreateConcDB = “There are no schemes to create at this stage”

‘ ElseIf Count(Samples) = 0 Then

‘ CanCreateConcDB = “There are no samples to create at this stage”

‘ If Job already created, then ask the user for a reason for the update.

‘ ElseIf clsProfjob.Profjob.Activated > ‘1899-01-01’ then

‘ lContinue = Msgbox (“Job already created, do you wish to continue”,”Warning”,6)

‘ If lContinue = No then

‘ CanCreateConcDB = False

‘ Else

‘ CanCreateConcDB = “”

‘ End If

‘ Else

‘ CanCreateConcDB = “”

‘ End If

CanCreateConcDB = True

End Function

SQL Scripts SPR 1669

New settings were added for the new version of the SampleGrid. Below are the settings that have been added.

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridSchCodeDisplayColumn','S.SCHEMENAME,10,Scheme name');

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridSchCodeDisplayColumn','PROFJOB_SCHEME PJS,SCHEME S','BROWSER','','');

/

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridAnalyteCodeDisplayColumn','SA.ANALYTENAME,10,Analyte name');

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridAnalyteCodeDisplayColumn','SCHEME_ANALYTE SA','BROWSER','','');

/

INSERT INTO STAFF_PROGRAM_CFG (LABCODE,STAFF_CODE,PROGRAMCODE,INIVARIABLE,INISETTING) VALUES ('GLOBAL','CCLASMGR','PROFILE','SampleGridInvertedExtraColumn1','PJCSA.ANALYTESTATUS,10,Analyte status');

INSERT INTO STAFFPROGRAMEDIT (PROGRAMCODE,INIVARIABLE,LOOKUPTABLE,FORMTYPE,ENTRYTYPE,FORMLIST) VALUES ('PROFILE','SampleGridInvertedExtraColumn','PROFJOB_CUID_SCHEME_ANALYTE PJCSA,PROFJOB_SCHEME PJS,PROFJOB_SCHEME_ANALYTE PJSA,SCHEME S,SCHEME_ANALYTE SA','BROWSER','','');

CCSECU01.DLL SER 1652

A new function is required to translate relative CCLAS path into literal UNC directory.

required for Global and UserGlobal settings as well as Application Settings

clsSecurity.TranslatePath(p1,p2).

clsSecurity.TranslatePath ("%MDEScriptsDirectory%Test.vbs")

clsSecurity.TranslatePath ("%TemplateDirectory%Report1.tpl", "GLOBALSETTING")

clsSecurity.TranslatePath ("%TemplateDirectory%User.xls", "USERGLOBALSETTING")

clsSecurity.TranslatePath ("%TemplateDirectory%AnaReport.tpl", "REPORT")

The second parameter of clsSecurity.TranslatePath is optional and its default value is "GLOBALSETTING".

clsSecurity.RelativePath(p1)

Used to dertermine relative path (relative to GlobalSettings only), similar to Staff Program logic.

clsSecurity.RelativePath ("\\Server\Share\Folder\File.ext")

Fix: TranslatePath and RelativePath functions added to clsSecurity.

CCLAS 1.4.10

MDE, XMDE SPR 1528

When selecting multiple jobs with MDE, then the following should occur:

- Don't pre-select all schemes (this is happening under certain circumstances).

- If only one scheme present, then preselect that scheme.

- If only one scheme selected (or preselected) then keep the Include QC option ticked.

This means that the main logic applies if a single scheme is selected, regardless of how many Jobs are selected before this.

Fix: XMDE modified frmOpenJob2.FillListofSchemes, frmOpenJob2.TreeView1_NodeCheck

MDE modified frmOpenJob2.FillListofSchemes, frmOpenJob.TreeView1_NodeCheck

SAMANA SPR 1526

When select an instrument, save the current properties and restore these when Instrument is set back to None.

Default Properties

Data mode = Final

Auto append = Manual

Weight to volume correct = false

Product check = auto (true)

Note that when the Instrument is Stopped, these settings are not reset. These will only be reset if 'None' instrument is selected.

Fix: modified frmSamanaEdit.LoadInstrument, frmSamanaEdit.Form_Load

XMDE SPR 1533

I changed the code to expose the Form_Resize event for script in the MDESampleUserQuery.scr.

This was changed because Treeview items selected in the Form_Load were not reflected in the form when it was shown.

CCMESS.DLL, COMMVIEW SPR 1534

A prompt, ccMnuCommviewCaptureModeStopAll, was added for the Stop All button in CommView. The commview program was recompiled to use the prompt.

LICENCE SPR 1530

Licence server shows the network IP address instead of the name

When you execute the licence program, the Licence Server displays the network IP address instead of the name.

I.e. DB SERVER = TERMINATOR

Licence Server = 192.168.255.57

Fix: Modified frmLicence.DBServerName

PROFILE SPR 1492

The choice of Analytes should be form criteria based.

When using the new long name form for ProfileSchemeAnalyteNew.SCR, when auto-adding the analytes to the job, it should be doing this on the basis of the analytes found from the criteria found in the Analyte Tab.

Currently it adds all analytes in the scheme to the job if the AddAllAnalytes is enabled, regardless of the filters required on the Analyte Tab.

This will allow the user to control the criteria of the analytes to be found (ie Analyte Tab criteria) which will apply to any Analytes added to the Job if the Scheme is selected and the AddAllAnaltyes is enabled.

If necessary, a new staff setting might be required for this to be enabled.

ie

Profile AddAllAnalytesFilter = Enabled.

Also when the user highlights the current scheme, and it auto-queries on available analytes (in addition to those already committed), this filter should be based on the Analyte Criteria. Currently it shows all (ignores filter) yet if the user presses the query, only then does the filter apply.

So, every time analytes are found for auto-adding or for display, it needs to run through the Analyte Filter criteria to get the required Analtye records.

Fix: modified frmNewProfjobSchemeAdd.QueryData, frmNewProfjobSchemeAdd.pvEX_AfterNodeSelectionChange,

frmNewProfjobSchemeAdd.pvEX_ItemCheck, frmNewProfjobSchemeAdd.ReloadAnalyteListItem, mProfile.AfterSecurityClearance

CCLOG01, REPORT

Modified to change the connection string for tables in Crystal reports.

Allowed for the optional Crystal Reports settings in the CCLAS.INI file, that can be used to form the connection string, if a special one is required for reporting.

CrystalReportsDSN If not defined, DSN will be used.

CrystalReportsUID If CrystalReportsUID is not defined, UID and PWD will be used.

CrystalReportsPWD

MDE SER 1540

MDE – AfterChange Event

Requirement:

To be able to have a event hook script executed at the end of the editing of the MDE Cell.

Solution:

EndEdit event is firing a user script (ValueChanged.VBS)

Need an AfterChange.VBS with Sub Main (EditString, Row, Col) fired after EndEdit event.

The event could be set in AfterLoad.Vbs

i.e. Sheet.AfterChangeScriptFile = "AfterChange.VBS"

Sheet.FireAfterChange = True

Expose same objects etc as normal.

Can use SetValue method etc.

Fix:

Added property Let/Get FireAfterChange, property Let/Get AfterChangeScriptFile,

SetCuidSchemeAnalyteValue sub to frmJobEdit.

Modified frmJobEdit.F1Book1_EndEdit, frmJobEdit.ExecuteAfterChangeScript, F1Book1_SelChange

Added property Let/Get FireAfterChange, property Let/Get AfterChangeScriptFile,

SetCuidSchemeAnalyteValue sub to clsSheet.

Notes: The SetCuidSchemeAnalyteValue has the following parameters:

svalue – string

sAnalytecode – string

sSchemeCode – string optional

sCuid – string optional

sStatus– string optional

Calling SetCuidSchemeAnalyteValue will cause the change of f1book cell selection.

Any sub/function in script that causes the change of f1book cell selection must restore the original f1book cursor before exiting

a sample of AfterChanges.Vbs is as follows:

' objects exposed:

' F1Book

' Sheet

' clsVariables

' clsSchemes

' clsSecurity

' clsBDProfJob

' clsCCComm

' StatusBar

Sub Main(EditString, lRow, lcol)

Dim lSavedRow

Dim lSavedCol

lSavedRow = f1book.row ‘ save original cursor position

lSavedcol = f1book.col

sheet.SetCuidSchemeAnalyteValue "12.4", "AG", "ICPTOC", "0000004791","CHK"

'MsgBox EditString & " row " & lrow & " col " & lcol

f1book.row = lSavedRow ‘ restore original f1book cursor (row & col)

f1book.col = lSavedCol

End Sub

MDE SER 1544

Requirement:

To be able to display more user definable information related to each cell. The information that needs to be displayed should be able to come from any clsCuidSchemeAnalyte property.

Solution:

Investigate options as to how to add additional information to the cell status field at the bottom of screen. Able to use any clsCuidSchemeAnalyte properties as well as clsSheet etc.

Ie Analytical limits, Product Limits, current Statuscodes etc

Development Notes:

Scripted Solution

User defined hook that is fired when Cell is selected. To set this event include the following 2 lines in AfterLoad.vbs

Sheet.CellSelectionScriptFile = ShowCellStatus.VBS

Sheet.FireCellSelection = True

TP: sub MAIN in ShowCellStatus.vbs will take one parameter (oCSA - clsCuidSchemeAnalyte object)

The StatusBar.Text property should be set in the Sub MAIN.

Fix:

Added FireCellSelection property, CellSelectionScriptFile property, ExecuteCellSelectionScrip sub to FrmJobEdit.

Modified frmJobEdit.F1Book1_SelChange

Added FireCellSelection property, CellSelectionScriptFile property to clsSheet

An example of sub MAIN in ShowCellStatus.vbs is inserted below

'

Sub Main(oCSA)

'MsgBox oCSA.MinValue & ", " & oCSA.Maxvalue & ", " & oCSA.UnitCode

StatusBar.Text = oCSA.LimitMinValue & ", " & oCSA.LimitMaxvalue & ", " & oCSA.UnitCode

End Sub

INVOICE, CCINV01 SPR 1537

New Boolean staff settings:

IncludeJobHeaderLine

HeaderLineTotals

A condition has been changed in ProcessJob to display a HDR line in a single-job invoice when the IncludeJobHeaderLine setting is Enabled.

Code has been added to allow fields from the PROFJOBUSER table to be included in the JobSeparator setting. The tags are to be set in the manner of: ~ProfJobUser.Field~.

This change required changing QueryData to query the PROFJOBUSER table for the jobs being invoiced, and also creating a routine, ReplaceProfJobUserTokens to be called from ProcessJob.

Code has been added to calculate a SUM of the Amount values, a MAX of the NoSamples, and a MAX of the NoAnalytes to be added to the HDR lines when the new setting HeaderLineTotals is Enabled.

To change this code has been added to AddSheetDetails that add the amounts and store the MAX values for each job in the invoice, and replace it in the HDR line.

There was a problem where the INVMESSAGE fields contained more data than was allowed in the recordset, which caused a crash when assigning the value.

Code has been added to clsBDInvoice.GenerateInvoice to truncate the data if it was larger than the allowable field length.

CCPROF01.DLL

Added the new global setting, CheckLDL, to specify whether to check for less than analytical detection limit when saving a numeric final value (for MDE and SAMANA). Default is Disabled.

INVOICE SPR 1537

When editing an invoice, HDR, TAX, and SCG lines are stored in the recordset as INV lines. The code has been changed to check for a blank SCH_CODE, a SCHVERSION of 0, an AMOUNT of 0, and a blank TAXCODE, and treat these as HDR lines.

When editing an invoice, you can only open it using 1 job, even if it is a multi-job invoice. The application level collection in clsInvoice only contained the job that was opened, which had the effect of the HDR line for the second job not having its totals shown. I have changed the code to use another collection that will add all jobs in the invoice to it so the totals are shown.

Surcharges needed to be included in the totals. The code has been changed to implement this.

REVENUE SER 1446

In the job tab of the revenue application there should be the facility for userquery forms for the following options

invoice: Screen file -> RevenueInvoiceUserQuery.scr

job : Screen file -> RevenueJobUserQuery.scr

client :Screen file -> RevenueClientGroupUserQuery.scr

costcode: Screen file -> RevenueClientUserQuery.scr

In the scheme tab there should be the facility for user query forms for the following options

scheme: Screen file -> RevenueSchemeUserQuery.scr

Section group: Screen file -> RevenueSectionGroupUserQuery.scr

Section: Screen file -> RevenueSectionUserQuery.scr

Fix:

Added to mRevenue: PrepareScriptControl, ShowClientGroupUserQueryScreen, ShowClientUserQueryScreen,

ShowInvoiceUserQueryScreen, ShowJobUserQueryScreen, ShowCostCentreUserQueryScreen,

ShowSchemeUserQueryScreen, ShowSectionGroupUserQueryScreen, ShowSectionUserQueryScreen

Added to frmRevenue:

LoadSchemeUserQueryForms, LoadUserQueryForms, moSchemeFRMQuery_RefreshQueryData,

moSectionFRMQuery_RefreshQueryData, moSectionGroupFRMQuery_RefreshQueryData,

moClientFRMQuery_RefreshQueryData, moClienGrouptFRMQuery_RefreshQueryData,

moSchemeFRMQuery_RefreshQueryData, moInvoiceFRMQuery_RefreshQueryData,

moJobFRMQuery_RefreshQueryData

PROFILE SPR 1557

In Profile\Clients Tab\ Contact Code field, if the client linked to the job has only one contact defined then when a report client is added CCLAS will automatically add a contact code even though users do not want to select a contact

The contact code on the General tab behaves in the same way.

DEH: Need to add a blank Contact code choice in General and Client Tabs in Profile

Fix: modified frmJobEdit.LoadContactsEtc & frmJobEdit.LoadClientToContacts

TASKSCHD SPR 1559

Taskman ignores CatchUpScheduleItems=Disabled in Staff|CCLASMGR|Taskman and still runs the schedule with NextEvent date prior to system current date.

Fix: Added ResetSchedules sub to frmSessionRun.

Modified frmSessionRun.Form_Activate

STAFF SPR 1562

Changed frmStaffSettingEdit.ConfigureForm to allow a table alias to be included in the setting, and shown in the Browser list. This will assume the lookuptable field in staffprogramedit table will contain values like:

“table alias, table alias”

The alias is optional. This will give the benefit of knowing which table the fields are from.

The SQL scripts have been updated to include table aliases in insert statements for STAFFPROGRAMEDIT, and also to change the length of the LOOKUPTABLE field to 1000 characters.

STAFF SPR 1349

If a staff code has a password set and then later on the password needs to be removed, clearing Password required check box doesn't clear the password. Clicking on >> button to clear it manually shows Clear button disabled. One needs to save, close and reopen the staff code to see the button enabled. The fix required is either to enable the Clear button as soon as the Password required check box is cleared, or, even better, to clear the password on clearing the Password required check box.

The Password Required checkbox means that a Password is mandatory for this user. Clearing the checkbox doesn't automatically mean that the Password should be cleared as well, it just means that the user has the choice of whether to have a password.

The form does need changing so that the Password can be cleared once the mandatory password required is cleared. But the form doesn't detect the change in status (as it is not immediately saved and reloaded).

The changes required to the form is as follows:

- on change of Password Required, the Password Clear button needs to be automatically enabled.

Fix: modified frmStaffEdit.chkRequirePwd_Click

SAMANA

Added the DetLimitFailureColour staff setting, to be used when the analyte status is CHK. Default colour is red.

MDE

Added the DetLimitFailureColour staff setting that is used when the analyte status is CHK. Default colour is red.

Added the check for less than analytical detection limit, if the new global setting CheckLDL, is set to Enabled. Default is Disabled.

MDE SPR 1556

Set the maximum length for the F4 analytes comments.

Fixed problem where Ctrl+C, Ctrl+V and Ctrl+X were not working in the comments and command textboxes.

CCMAPI01.DLL

Modified clsCCMAPI class to add property Let/Get for the following.

Property Example Type Description

Sequence 0001 String Client sequence number. 0000 if it is the main contact for the job, otherwise it’s the CliSequence from ClientTo.

LabCode CDEMO2 String Labcode of the client contact for the report. Cli_LabCode if from ClientTo.

ClientCode MINING String Client code of the client contact for the report.

ContactCode SMITH String Contact code of the contact for the report.

ContactType REP String The contact type. Will be REP for reporting, but can be other types. CliType if from ClientTo.

TemplateFile \\server\share\filename

String Filename of the template used to create the report. Tplfile if from ClientTo.

FromDB True Boolean Whether the item details were extracted from the job, in the database or whether the item was manually added.

IsActive True Boolean Whether the item is active. This is to indicate whether the report will be generated and whether it needs to be emailed. Checked status from ClientTo grid, otherwise True.

Modified the clsCCMAPI. SendExchange method to extract semi-colon separated email addresses when defining the Recipient and CC for an email.

Added the clsCCMAPI.AddressDelimiter property to define the address delimiter or separator used in the SendExchange method to extract email addresses.

REPORT

Modified to use email addresses of the client contacts defined in the CopyTo fields, rather than only the main client contact for the job, and to use client contact CCs as the CC for the email(s).

Since Report either generates reports for the ClientTo contacts selected, or for just the primary client contact, the email recipients have been modified to reflect these two choices. Previously, only the primary contact’s email addresses and their CC’s email addresses were added, even though their report was not generated for the primary client contact if ClientTo items were active.

When a job is selected, Report now detects if the ClientTo items are active and if so, extracts all the email addresses for the ClientTo contacts and client contact CCs, and adds these to the Email collection.

Added the new Report staff setting, AddEmailForCC. If this setting is Enabled, a separate Email item will be added for each CC. The default for this setting will be Disabled, so that CCs for a client contact will be added in the CC of the email of the main or ClientTo client contact for the report.

If the user interactively unselects the ClientTo items, then the program should refresh the email list based on the primary contact and its CC’s. Note that deactivating a single ClientTo report would normally remove the email message for that ClientTo report.

Added the new Report staff setting, AutoRefreshEmail. If this setting is Enabled, the email messages will be removed or added from the Email collection, as client contacts are selected and deselected from the ClientTo list. If Disabled, ClientTo reports will not be created or emailed for the deselected clients, and the Email item for the contact will be set to not active (.IsActive = False).

Modified the Email tab to display the client code and contact code for the Email item. If you add a manual Email item, it will use either the main report client contact or the currently highlighted ClientTo contact, if only one is selected. The manually added Email item will have .FromDB = False.

Added the new Report application setting, EmailCCDelimiter, to specify the client contact CC address delimiter. Default is a semi-colon (“;”).

LIBMAN SPR 1513

LibmanSchemeUserQuery.SCR can now use clsBDScheme and clsSecurity.

LibmanProcRegUserQuery.SCR can now use clsBDProcReg and clsSecurity.

CCPROF01.DLL SPR 1556

Modified the DBSaveJobValues method to truncate the value of Usernotes if it is longer than the field size. It was previously not saving the value if it was longer than the field size. Similarly for Userfield1-5 and Formula.

XMDE

Added the DetLimitFailureColour staff setting that is used when the analyte status is CHK. Default colour is red.

Added the check for less than analytical detection limit, if the new global setting CheckLDL, is set to Enabled. Default is Disabled.

XMDE SPR 1556

Set the maximum length for the F4 analytes comments.

PROFILE, SCHEME SPR 1568

The code from 1.3 has been merged into 1.4 for the combined scheme analyte selection, and the BeforeSchemeOpen and BeforeAnalyteOpen hooks.

CCACTX01.DLL SPR 1569

Modified the sample grid to not allow Delete, Save or Open when access level is 1 for Profile, and modified to not allow Delete when access level is 2 for Profile.

SCHEME SPR 1597

The menu options for Grid, Update Scheme, and Update Analyte had not yet been coded. They have now been coded.

SCHEME SPR 1598

The Grid, Update Scheme, and Update Analyte options in the popup menu have now been disabled when there are no list items in the list.

SCHEME SPR 1590

Modified to add the default table aliases, SA. and S. respectively, to the Analyte1ListViewColumn and Scheme1ListViewColumn fields, if no alias was specified. This was to fix a problem that occurred with non-unique field names.

CCLAS 1.4.9

MDE, XMDE SPR 1482

Should be able to validate a Formula cell, even if Locked.

If you have cells Locked because of a Formulas, then the Right Click -Validate option should be possible.

If the cell is locked for any other reason, (ie Status code) then a change to another status should not be possible to be done by the user.

Should also be able to Ignore a cell that has a QC Failure and was locked because of a Formula. (Be aware of the AllowIgnore staff setting, though).

Fix: XMDE & MDE modified frmJobEdit.SetStatusCodeValidated, frmJobEdit.SetStatusCodeIgnored

MDE, XMDE SPR 1483

If you have a cell with a formula, and you enter values into its source cells

ie ZN = AAS1.CU + AAS1.PB

if you enter values into CU and PB, the ZN cell does calculate and get a NVL or CPL status (according to its Status Active flag), BUT if you copy/pase the values into CU and PB, although the formula calculates, the status is left blank.

On save and reload, the correct status is determined, but as there are scripts that check the current status in the cells, these cannot be used until the sheet is saved.

MDE, XMDE, CCPROF01.DLL SER 1481

REP/ options required

With the 1.4 review of the PJCSA table, the REPORT command needs to be able display the following data.

Required in priority order.

clsCuidSchemeAnalyte.property

REP/FV (FormattedValue)

REP/F (Formula)

REP/CF (CUID Formula)

REP/PS (PrecStatus)

REP/U1 (Userfield1)

REP/U2 (Userfield 2)

REP/U3 (Userfield 3)

REP/U4 (Userfield 4)

REP/U5 (Userfield 5)

REP/RV (RawValue)

REP/LBJ (LBatchJob)

REP/LBC (LBatchCUID)

REP/V (volume)

REP/W (weight)

If the supplied argument/switch to the REPORT command is not one of these abreviations, then just try to report the clsCUIDSchemeAnalyte property of the supplied switch.

ie REP/MinValue etc wil just report this property.

CCPROF01: modified clsBDProfjob.LoadJobValues

added properties PrecStatus, LBatchJob, LBatchCuid, RawValue to clsCuidSchemeAnalyte

XMDE & MDE : modified frmJobEdit.CommandRep

added GetPropertyValue function to frmJobEdit.0

+-+.00000000-

MDE SPR 1495

Formulas involving codes starting with numbers are not right in inverted style.

In the inverted style of MDE, each Formula needs to be converted into a CUIDFormula with the syntax of Scheme.Analyte.CUID

On the premise that the conventions will be the same, the MDE inverted style sheet should create the following Named Ranges for the examples above. Note there are no Analyte.CUID formulas allowed.

_123AAS.123CU.Cuid

_123AAS._123CU.Cuid

_123AAS.CU.Cuid

AAS123._123CU.Cuid

AAS123.123CU.Cuid

AAS123.CU.Cuid

Because of the limitations of the F1Book sheets, there are a finite number of named ranges that can be created for a sheet, therefore users should be fully aware that if there is any chance of the inverted style being used, all formulas should be Scheme.Analyte syntax and not just Analyte syntax.

In fact the Ranges that are defined with a numeric analyte code are not defined.

Which results in the CUID formula not actually working as expected.

Fix: modified frmJobEditStyle2.LoadDataEx, frmJobEditStyle2.GetCuidFormula

MDE, xMDE SER 1506

If you had a sample with results in it, and the status code needed to be changed to a locked status code, the finalvalue and, in the case of LNR, the formula were overwritten when saved. It has now been changed to retain the finalvalue and the formula, and only update the status, when changing the status code to be a locked status code.

In xMDE, this change has only been made in the default style, and not in inverted mode.

To fix this problem required changing the SetStatusCodeValue method. The change simply prevented the cells from being cleared when setting them to a locked status.

SAMANA SER 1507

Need a mode to start Samana up with a number of windows that can support multiple sessions opened automatically.

Similar to SPCRun, TaskmanRun, ComViewRun etc

Samana

AutoRun1 = MyInstrument1.VBS

AutoRun2 = SecondInstrument2.VBS

This is urgent for QNI site.

Also need some way in the Main ( ) of the IFF to be able to start the Instrument.

ie

clsCCComm.Sheet.StartInstrumentAuto

Fix: modified mSamana.ShowBrowser, frmSamanaEdit.LoadInstrument ,added LoadAndStartInstrument sub to frmSamanaEdit

LICENCE SER 1516

Introduce a File, SaveAs mechanism to save the current details to a notepad file.

Fix: Added cmdSaveDetails_click sub to frmLicence

LICENCE SER 1511

Also going with LicenceGenerator.EXE

Allow update from Text file Licence keys

Allow the Licence program to Update from a browsed filename.

The filename will contain encrypted information of current licences and updated licences. Will only allow update if the current and the source are teh same. Once updated the file cannot be used again, as the current and the source will then be different.

Fix:

Added ReadLicenceFile sub, DBServerName funtion to frmLicence

Modified frmLicence.cmdUpdate_Click, frmLicence.

SAMANA SPR 1522

Samana does not evaluate the Product limits

DBMS: SQL Server

Database: CQNI

Job: FP013771 (This is a lab batch job with one scheme called FNITRC)

Sample Id: FC_00236 SD 1439 221105

1. The product limits do not display if the lower action/upper action limit is zero

2. When running the interactive samana to processed instrument data from a flatten dat file,or evaluate.

On the MN analyte there is an Upper limit of 0.04. The result comes in higher than this limit, but is not set to QFH.

The product codes are set per sample not per job. The sample in the example has a Product Code called FCLOT.

Even when typing values directly into Samana, it still does not evalute the limits.

On opening XMDE, the cell is not red and only becomes so when running "Check QC values".

1. Fix: modified frmSamanaEdit.LoadAnalytevalues

2. Not a bug. AutoProductCheck has been set to false in the IFF script.

CCLAS 1.4.8

Relink of all executables for compatibility reasons

CCLAS 1.4.7

MDE SPR 1437

Modified to not allow change the status of locked cells, unless changing the status to LNR.

CCCFG01.DLL SPR 1441

The IDS/EID/DES/PRD file entry should allow commas

When entering sample identifications into IDS, EID, DES or PRD, because of the Wildcard syntax that is used, commas are not valid, except when there are valid wildcard characters as well.

So that an external ident of "sample 1, red colour" is warned as invalid, as it doesn't match the wildcard syntax.

What is required is a sanity check. if there are no wildcard characters (#, &) in the record, then treat the line as a ingle Format 1 and don't complain that the ident syntax is incorrect.

Programs affected:

Profile (ident entry functions)

DbCreate (which checks the IDS etc before executing)

Fix: modified cccfg01.dll clsExpandIdent.ExpandAny.

SCHEME SPR 1443

When adding Analytes to Std, always select default Unit first

When defining standards and recording the expected values for Standards, the Unit code to select from is from the total Unit table, but the default Unit Code in the Combo should be the current Analysis Unit defined for the Scheme_Analyte records.

Fix: modified frmQCAnalyteAddNew.AnalyteList, frmQCAnalyteAddNew.cboAnalyteCode_Click, frmQControlEdit.DialogQcAnalyteAddNew

Added LoadSchemeAnalyte to frmQCAnalyteAddNew

SCHEME, CCSCH01 SPR 1465

Limiting Repeatablity must be allowed to be zero

When the Limiting Repeatablity is set in Scheme on the Analyte, a value of zero should be allowed.

Currently only values greater than 0 are allowed.

Fix: modified ccsch01.dll clsBOSchemeAnalyte.LimitRep

GENERAL SPR 1466

AfterQuery event on Job Browsers

In the UserQuery.SCR forms, there is an Event called AfterQuery() that is fired off after a valid query is executed.

But, not all program's SCR files support this, and if it is not there an error occurs.

For example, the std ProfileUserQuery.SCR on the 1.2.4 CD doesn't have this Subroutine, but the 1.2.4 Profile EXPECTS it to be present.

The same thing can happen to 1.4.6

So, please change it that all programs can support it, if it is present in the SCR. if it is not present, then don't try to fire it.

Fix:

PROFILE: modified frmUDFQuery.RunScriptProcedure

XMDE: modified frmUDFQuery.RunScriptProcedure, frmJobs.moFRMQuery_RefreshQueryData

MDE: modified frmUDFQuery.RunScriptProcedure, frmJobs.moFRMQuery_RefreshQueryData

INVOICE: modified frmUDFQuery.RunScriptProcedure, frmJobs.moFRMQuery_RefreshQueryData

REPORT: modified frmUDFQuery.RunScriptProcedure, frmJobNumbers.moFRMQuery_RefreshQueryData

AUDITJOB: modified frmUDFQuery.RunScriptProcedure, frmJobNumbers.moFRMQuery_RefreshQueryData

PROFILE SPR 1467

The default location for Analytical report templates should not be Templates\Profile

When selecting the analytical report template to be assigned to a job, the default folder is coming from the Staff Setting:

PROFILE - TemplateDirectory

But this is the same staff setting that is used to determine the default template directory for Worksheets/Jobsheets etc.

What is required is that the Report Template prompt on the General Tab to use the Staff Setting from :

REPORT - TemplateDirectory rather than the one for the PROFILE program which is being used to find worksheets etc.

Fix: modified frmJobEdit.cmdClientToTplFile_Click, frmJobEdit.cmdReportTemplateBrowse_Click, mProfile.AppStart

MDE, XMDE SER 1473

Instrument Run list options similar to SAMANA

Need

Instrument1=ShortName,VBSFilename.VBS

...

...

Instrumentn=ShortName,VBSFilename.VBS

Same as SAMANA

Fix:

1. XMDE

Modified: mde.AfterSecurityClearance, frmjobEditStyle2.Instrument, frmjobEditStyle2.SetComm

frmjobEdit.Instrument, frmjobEdit.SetComm

2. MDE

Modified: mde.AfterSecurityClearance, frmjobEdit.Instrument, frmjobEdit.SetComm

CCLAS 1.4.6

AUDITJOB SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

INVOICE SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

MDE SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

PRODREP SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

PROFILE SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

REPORT SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

SAMPLETRACK SPR 1409

Modified the jobs list queries for the UserQuery browser, so that jobs for disabled clients can be displayed.

CCPROF01.DLL SPR 1398

Modified AddCuidAnalyteDetails, to behave appropriately when an analyte is added and updated, for an existing scheme, If the scheme is in the included schemes, or included schemes is blank, WKLISTSTATUS for the scheme will be cleared if it is IS or NA. If WKLISTSTATUS for the scheme is LNR, the analyte status will be set to LNR.

XMDE SPR 1376

Adjustment of Scheme/element selection form

Move the internal frames & radio controls to right of form, and expand the Tree view to take up the remaining space. Total form width is still to be controlled by customised form width.

Ensure that the internal frames etc are the same size as MDE.EXE displays.

Fix: modified frmOpenjob2

SAMANA SPR 1438

If a run list is created from within samana which includes more than one job , but importantly more than one scheme the scheme code in the run file is the last selected scheme ie in the file

L0509,XRF_WEIGHTS,0000000856,UNK,08 1405 050923 D

L0509,XRF_WEIGHTS,0000000857,UNK,08 1418 050923 D

P050922,XRF_WEIGHTS,0000000801,UNK,08 1436 050922 D

The job l0509 was originally selected for DECREP and only the last sample was actuall selected fro XRF_WEIGHTS.

Fix: modified frmSamanaEdit.SaveRun

CCLAS 1.4.5

CCCFG01.DLL

Modified clsBDUniqueNo.GetSequence, clsBDUniqueNo.ProcessSequence

added SaveUniqueNoNew to clsBDUniqueNo.

CCQTWZ01.DLL SPR 1272

Added code to KeyDown event on scheme grid, so schemes could be deleted by using the delete key

I Added settings QuoteSchemeLVWDisplayColumn, and QuoteProcedureLVWDisplayColumn to CLIENT. This was to allow a different column to be shown when adding procedures in quotes, as it was using the PROFILE setting.

Set tooltip for label showing conversion code. It did not have one previously. This also had an inverse effect, in that it caused an error when setting the combo text in the labels change event. I had to code a small fix to only set the text if the conversion code is in the combo’s list.

REPORT SER 1354

Sorting order of PJCSA recordset in reports using Crystal template phase 1

Enhancement to REPORT in generating analytical reports using Crystal templates.

Phase 1:

To enable REPORT to sort the PJCSA recordset (when generating Crystal reports) by a PJCSA field defined by a global setting namely ReportRecordOrder. ie "ReportRecordOrder=PJCSA.CUID" except PJCSA.REPSEQUENCE.

The default value of the setting is PJCSA.CUID.

Fix: modified clsReport.GenerateReportCrystal

MDE SER 1294

The part of the MDE & XMDE form that allows the user to select the scheme and analytes is now getting way too small once longer names are being used for codes and even short names.

Can this form be made much wider (even up to the 800x600 width) which should give sufficent width in the scheme/analyte tree view section.

Increase the form size by at approx 1/4 again.

Fix: modified frmOpenJob form

PROFILE SER 1358

Adding profjob_user columns to listview browser & sorting listview by clicking column header

Enhancement to profile browser:

1. Adding profjobuser columns to listview browser

2. sorting listview by clicking column header

Fix:

1. Modified frmProfile.LoadProfjobs, frmProfile.LoadProfjobClientProjectJobs, mUDFQuery.BuildUserQuerySQL

2. modified frmProfile.PVExplorer1_ColumnClick

Sorting of columns default to sort by text. Date time columns will be sorted by date provided the date formats are in the following:

YYYY/MM/DD, YY/MM/DD, DD/MM/YYYY, DD/MM/YY, MM/DD/YYYY, MM/DD/YY. Trailing "hh:nn" is acceptable.

CCPROF01.DLL SPR 1359

Added routing SetCuidInForUpdateRSEX, called from CreateConcDBSamples. This was to fix problem where gridding was not being updated correctly when doing an update, and job had REP samples in different schemes.

Problem was SetCuidInForUpdateRS tries to use SampleType and SampleIdent to update, which is not unique enough.

CCMLB01 SPR 1344

Changed GetSchemesSQL in clsMLB to remove duplicates from recordset based on LAB+SCH and not just SCH. Previously is was removing on just SCH, so if the same scheme code existed in 2 labs, one of them was removed.

MDE SER 1374

Allow the weight checking against clsCuidSchemeAnalyte.MinValue etc

When a weight is captured, it needs to check it against the Sheet.CuidSchemeAnalyte class, which could be changed in GotRecord events.

Fix: modified frmJobEdit.Checkvalue

SAMANA, CCCOMM01.DLL

Currently if SAMANA detects a formula in a cell, it will not store the results.

This feature may be used is some sites, so that need a Samana Setting that can bypass this.

Suggest Samana Setting AllowAutoOverwriteFormula = Enabled (Disabled by default)

As this property will effectively be an instrument by instrument or scheme by scheme choice, this setting should be translated into a clsCCComm property that could be changed at will in script.

ie

If sSchCode="AAS" then

clsCCComm.AllowOverwriteFormula = True

Else

clsCCComm.AllowOverwriteFormula = False

End If

Fix:

1. added LET/GET properties AllowOverWriteFormula to clsCCCOMM (CCCOMM01.DLL)

2. Modified: clsSamana.Instrument Let property, clsSamana.StoredCapturedAnalytevalues, mSamana.AppStart

frmSamanaEdit.LoadInstrument, frmSamanaEdit.StoredCapturedAnalytevalues

CCPROF01.DLL SPR 1329

Archiving job doesn't detect and defer to the Job.LCK file

1. Runing the clsBDProfJob.ArchiveJob sProJob method in a script doesn't defer to the presence of the Job.LCK file in the BIN folder.

If a job is locked (ie through PROFILE or MDE), then it should not be able to be archived.

2. BeforeJobArchive & AfterJobArchive script must be excecuted in clsBDProfJob.ArchiveJob sub

Fix: Modified ccprof01 clsBDprofjob.ArchiveJob, Added BeforeJobArchive & AfterJobArchive subs to clsBDProfjob

PROFILE SPR 1381

Two cases have been identified by 2 different clients where the Validation and QC Failure status of a cell in MDE does not update when a result is entered. For both scenarios the cell in question has a formula in it.

The Validate and/or QC Failure status only updates once the sheet is saved, closed and re-opened.

This is unacceptable to the clients, because it means that each sheet has to be opened twice in order for the user to be notified of a status.

1. Client: A, Version 1.4.4

In this case you have an analyte in a scheme (A) which is refering to an analyte in another scheme (B) by a formula.

When the A scheme is opened (with Resolved External Formula checked on), the value comes in from scheme B, but no status is set and no cell

colour change happens. On closing scheme A, the user is asked to save. Then on opening scheme A again, the Validation or QC Failure status is set, with a cell colour change.

2. Client: B, Version 1.2.4

In this case there is one scheme which has a weight analyte and analyte with a formula (based on the weight analyte)

The weight analyte is populated byIFF capture from a balance directly into MDE.

As soon as the weight is captured, the formula analyte calculates. But the Validation or QC Failure status is only set once the scheme is saved, closed and re-opened.

If data is typed into the weight analyte directly, then the formula analyte calculates and updates the status immediately (without re-opening)

Incidently, if a script is run in MDE which does a Sheet.SetValue into a cell, then a formula analyte calculates, but does not resolve/update the status.

Fix:

1. Modified frmJobEdit.Loadata,

2. modified frmJobEdit.StoreCapturedAnalyteValues.

CONFIG

The prompts have been changed for pricing. This is so the grid can show different prompts for each type of pricing, and the messages can be more meaningful. These prompts will also be used in the QuoteWizard, which will be changed shortly. There is a new message DLL for each language (CCMESSES, CCMESSFR, CCMESSPT), to include these new prompts. The values are as follows:

SCH pricing

ccMsgtxtPriceMethodPrice = Price per Analyte

ccMsgtxtPriceMethodRangeUpTo = Analytes Number Up to

ccMsgtxtPriceMethod = Price per Analyte

ccMsgtxtPriceMethodRangeMin = Min Price in Range

ccMsgtxtPriceMethodRangeMax = Max Price in Range

SMP pricing

ccMsgtxtPriceSamplePrice = Price per Sample

ccMsgtxtPriceSampleRangeUpTo = Samples Number Range

ccMsgtxtPriceSample = Price per Sample

ccMsgtxtPriceSampleRangeMin = Min Sample charged

ccMsgtxtPriceSchemeRangeMax = Max Samples charged

ANA pricing

ccMsgtxtPriceValuePrice = Price for Analyte

ccMsgtxtPriceValueRangeUpTo = Values Up To

ccMsgtxtPriceValueRangeSize = Portion size

ccMsgtxtPriceValue = Price of portion

HLY pricing

ccMsgtxtPriceTimePrice = Price per time portion

ccMsgtxtPriceTimeRangeUpTo = Time Up To

ccMsgtxtPriceTimeRangeSize = Time Portion size

ccMsgtxtPriceTime = Price of time portion

AUDITJOB, INVOICE, MDE, REPORT SPR 1130

In all the Job browsers, it is desired to be able to support the PROFJOBUSER table fields as well as the PROFJOB fields (which are default).

This would allow any site specific fields to be populated and easily displayed on any Job browser.

This might (eventually) require a change to the Staff program so that to allow for the merging of PJ/PJU tables and PJC/PJCU tables where the entry dialogue (ie STAFFPROGRAMEDIT entries) requires the user to select the field from a combined table OR to have more than one table in the TABLE lookup field, but the problem here will be to know about the joins (maybe).

MDE, CCPROF01.DLLSPR 1263

CCLAS is setting the LIMITSTATUS flag incorrectly when Client Upper Limit does not exist. When there is no upper limit set, the MDE function that checks the results against the limits, seems to treat the empty upper limit as zero, and therefore all results are deemed a LFH because they are greater than zero.

Fix: modified

CCPROF01: ClsBDProfjob.DBLoadjobvalues

BATCH SPR 1188

When selecting schemes/analytes to be added to the Batch, it requires a user query form, similar to Image, to allow the localised adjustment of the schemes & procedures available for labbatching.

Also Procedure needs a form similar to Profile

ie.

BatchSchemeAddNew.SCR

BatchProcedureAddNew.SCR

Fix:

Modified frmCriteraScheme: NewProcedure sub.

Modified frmAddSchemes: form_load sub , Security property, from_activate sub,

added: moUserScreen_ExtenderEvent sub, queryData sub, LoadUserFields sub

Added frmProcedureAdd form

CCPROF01.DLL SPR 1384

If AutoPrepComplete=ENABLED then when results have been entered in Weight, Raw or Final Mode the Date Started for the Prep should be set. (See pics)

Fix: modified ccprof01 clsBDProfjob.updateJobStatus, clsBDProfjob.DBSaveJobvalues

BATCH SPR 1339

Added new staff application settings for Instrument and Scheme based batching.

1. SchemeBased Criteria

SchemeSelectAnalytes = All, Any(all as default)

SchemeMinSampleNumbers = 30 (0 as default)

SchemeMaxSampleNumbers = 100 (0 as default)

SchemeAnalyteStatus = All,NotAnalysed, Analysed, NotAnalysedORAnalysed,AwaitingCheck (NotAnalysed as default)

SchemeLabbatchStatus = All, NotLabBatched, LabBatched (NotLabBatched as default)

SchemeDateField = REGISTERED

SchemeSampleTypes = UNK,DUP

2. Instrument Based Criteria

InstrumentMinSampleNumbers = 30 (0 as default)

InstrumentMaxSampleNumbers = 100 (0 as default)

InstrumentDateField = REGISTERED

InstrumentSampleTypes = UNK, DUP

InstrumentAnalyteStatus = All,NotAnalysed, Analysed, NotAnalysedORAnalysed,AwatingCheck (NotAnalysed as default)

InstrumentLabbatchStatus = All, NotLabBatched, LabBatched (NotLabBatched as default)

Fix: modified frmBatch.SchemeCriteria, frmbatch.InstrumentCriteria, frmbatch.Security (property set)

added frmBatch.LoadAppSettings sub.

XMDE SPR 1130

Modified the Job browser, to allow PROFJOBUSER table fields

CLIENT, CONSUMABLES, INVOICE, PROFILE, SCHEME SPR 1340

With the number of UserNotes fields in our databases, the std interface when selecting a file to store into these fields, stores the whol UNC of the filename.

Currently with full UNC paths stored in our tables, any movement of the root directory has no knowledge that the file paths should be also moved as well.

At worst it should store it based on the drive letter selected (it translate the Drive letter to UNC).

Far better to determine the relative path to known CCLAS folder names (as stored in the GlobalSettings) and store the filename prefixed by the

%CCLASRootDirectory% or %NotesDirectory% path.

Also when open the documents etc, the relative path must be translated before the file is opened.

It should move through the Folder Names stored in GlobalSetting, and if applicable use them. If none are found, then try CCLASRootDirectory, if not then store with drive letter based on selection.

CLIENT: modified frmClientEdit.Image1_Click, frmClientEdit.Client (set property), frmClientEdit.cmdNotesfileBrowse_Click,

frmClientEdit.Form_Load, frmClientContactEdit.Image1_Click,

frmClientContactEdit.Client (set property), frmClientContactEdit.cmdNotesfileBrowse_Click

frmClientProjectEdit.Client (set property), frmClientProjectEdit.cmdNotesfileBrowse_Click

added GlobalDirToPath, PathToGlobalDir functions to mClient.bas

Fix:

CONSUMABLES: modified frmConsumableEdit.Consumable, frmConsumableEdit.cmdNotesFile_Click,

frmConsumableEdit.imgPictureFile_Click, mconsumables.LoadSettings

frmSupplierEdit.Supplier, frmSupplierEdit.cmdNotesfile_Click

frmSupplierEdit.imgPictureFile_Click

frmSupplierContactEdit.Supplier, frmSupplierContactEdit.cmdNotesfileBrowse_Click

frmSupplierContactEdit.imgPictureFile_Click

added GlobalDirToPath, PathToGlobalDir functions to mconsumables.bas

INVOICE: modified frmEditInvoice.cmdProfileNotesfileBrowse_Click, frmEditInvoice.cmdClientNotesfileBrowse_Click,

frmEditInvoice.form_load, frmEditInvoice.Invoice

added GlobalDirToPath, PathToGlobalDir functions to frmEditInvoice

PROFILE: modified frmJobEdit.cmdNotesfileBrowse_Click, frmJobEdit.Profjob

added GlobalDirToPath, PathToGlobalDir functions to frmJobEdit

SCHEME:

modified: frmSchemeEdit.cmdNotesfileBrowse_Click, frmSchemeEdit.cmdMethodFileBrowse_Click, frmSchemeEdit.scheme

frmQControlEdit.QControl. frmQControlEdit.cmdNotesfileBrowse_Click

added GlobalDirToPath, PathToGlobalDir functions to mscheme.bas

LABMAINTENANCE:

modified: frmLabMaintAuditEdit.cmdDoneNotesfileBrowse_Click, frmLabMaintAuditEdit.cmdNotesfileBrowse_Click

frmLabMaintAuditEdit.LoadDetails

frmLabMaintScheduleEdit.cmdNotesfileBrowse_Click, frmLabMaintScheduleEdit.LoadDetails

added GlobalDirToPath, PathToGlobalDir functions to modLabMaintenance.bas

STAFF SPR 1303

Changed Properties dialog to add another tab. This tab will display all the settings not in the current lab that exist in the GLOBAL lab. The user can then, using the list, select settings they would like to copy over from the GLOBAL lab. This tab will only be available when editing CCLASMGR records, and if the user has full access. The Upd global button will now be accessible from this tab. This will give the flexibility to copy whatever settings desired from the GLOBAL lab.

SAMANA SER 1405

Create UDF form from Menu

Need a new option to be able to host a user defined form, that can expose the various objects and can be used to add Run Files or AddSamples directly to the Samana Grid.

Staff Settings required.

ie

ProgramCode= SAMANA

SAMANARun1 =%ConfigDiectory%SamanaUDF1.SCR

SAMANARun2 =%ConfigDiectory%SamanaUDF2.SCR

Objects to Expose

clsSecurity

clsBDProfJob

FormSamana

.LoadInstrument sInstrument

.StartInstrument

.AddRunFile sfilename ' add a run from file

.ClearAll ' clears all samples from Grid

.vaSpread1

The Samana Grid MUST be refreshed on closure of the Udf Form.

Also the Samana.Grid (or what it is called) should also be exposed in the script, so that in theory the items can be altered completely in script.

Also need to be able to set the Instrument IFF name in the user form

Fix:

Modified mSamana.AftersecurityClearance, frmSamanaEdit.AddRunFile,

frmSamanaEdit.Toolbar1_ButtonMenuClick, frmSamanaEdit.Form_load,

Added frmSamanaEdit.SetUserDefinedRunMenu, frmSamanaEdit.AddRunFile

mSamana.ShowScreen, mSamana.PrepareScriptControl

CCPROF01.DLL SPR 1407

Made changes to clsBDProfJob.RoundValue. These changes were to allow the checks for the value being Less than the Detection Limit, or greater than the Upper Limit, to be done after the value had been rounded. This was to fix situations were a value of 0.6, which after rounding has a value of 1, would yield different results on a Detection Limit of 0.7.

Another small difference that was added was to report asterisks(******) if there were not items in the rounding table. Before it would return the final value, or blank.

Also made some changes to remove some unnecessary usage of a recordset object, and help efficiency. As it was being put in an array to find the items the next time roundvalue was called with the same rounding table, changed it to use the array all the time, and just use the recordset to store it in the array.

SCHEME, CCSCH01.DLL SER 1301

1. On opening a procedure, if it cannot find any scheme or analyte codes then it MUST warn the user (that information is being removed) and remove the scheme and/or analytes from the visible grid. if the user continues on the open, any missing schemes/analytes should be highlighted in colour.

2. Procedure SaveAs from the main browser should also detect if any schemes/analytes are not present, and warn the user that they will be removed from the new procedure records. Message text ="Some Schemes and/or analytes are no longer available for use in this procedure. Remove incorrect schemes/analytes and continue to copy or do not copy procedure. " Yes, no"

Any removal of schemes/analytes MUST be audited as well as the Copy.

3. If SaveAs from one procedure code to another, there should be a warning if the scheme version is going to be incremented then there is a chance to alter this method.

This will require a new staff setting.

ProcReg ConfirmVersionUpdate = Enabled/Disabled.

If Enabled, then the user is given the chance to confirm that they wish to update the version, or to reject this option, in which case the version is not changed, or to Cancel the whole SaveAs step.

If Disabled, then no warning is given (as is now) and the version is updated.

Message text = "New scheme versions are available for some of these schemes. Update to the new version (yes), or keep the current version (no) or cancel this copy action. " Yes, No, Cancel."

CONFIG SPR 1419

DL and Ceiling in Rounding items needs to be able to store larger numbers

The GUI for the entry of DL and Ceiling in the Rounding Item is too restrictive.

The smallest number is .0000001 or 0.000001 if you incude the leading 0.

This GUI needs to be opened up completely, as some clients are using very small units of measures. need more than 7 digits being able to be entered.

DL and Ceiling cells now allow a max number of 13 digits to be entered.

Fix: modified frmRoundEdit.SetCellTypes, frmRoundEdit.AddCols

SAMANA SPR 1406

Insturment dropdown selection

new staff setting.

ProgramCode = SAMANA

Instrumentx = Description,Filename.VBS

Instrument1=InstrumentName, Bal1.VBS

Instrument2=Good Balance, Bal11.VBS

Instrument3=Optima ICP, ICP1.VBS

Only those instruments (VBS) files nominated in IFFScripts folder will be selectable.

If no settings for Staff, then use CCLASMGR's setting.

If no setting for CCLASMGR, then show all as is current (ie just filename without the .VBS extension).

Modified: frmSamanaEdit.LoadInstrument, mSamana.AfterSecurityClearance, frmSamanaEdit.Profjob

CCOMM01.DLL SPR 1427

The IFF scripting mechanism needs a new subroutine hook urgently.

Priority is 1.3.22 (for BHP Newman) but also 1.4.5 for Pilbara Iron (Brockman).

This Subroutine will be in the IFF file, like the GotRecord and AfterSampleStore subs.

Sub AfterNewFileDetect (sNewFilename)

Msgbox sNewFileName

' Copy sNewFilename to sNewFilename.BCK

End Sub

This subroutine will allow the following:

1. Allow the source file to be backed up

2. Allow the source file to be manipulated

The sequence should be as follows:

1. Detect the file is present.

2. Execute the subroutine

3. Check if file is still present (ioe IsFile)

4. Open the file

5. Extract the contents and fire the GotRecord event when terminator Code is found etc.

CCLAS 1.4.4

Relink of all executables for compatibility reasons

CCLAS 1.4.3

PROFILE, CCPROF01.DLL SPR 1342

When deleting a scheme from a job, delete the CUIDs except for UNK, DUP.

When deleting a scheme from a job, the login deletes the records from PJCS and PJCSA then tries to delete all PJC records that are not in any PJCS records.

But on the deletion of the last scheme in a job, all CUIDs are deleted from PJC and PJCU tables.

When deleting a scheme from a job, the login deletes the records from PJCS and PJCSA then tries to delete all PJC records that are not in any PJCS records.

But on the deletion of the last scheme in a job, all CUIDs are deleted from PJC and PJCU tables.

Fixed. Modified PROPFILE: frmNewProfjobSchemeAdd.SqlDeleteJobCuid,

Modified CCPROF01: clsBDProfjob.DeleteProfjobScheme

PROFILE SPR 1333

1. When analytes are added via the new scheme/analyte selection screen, they should be sorted by SA.ANASEQUENCE. Currently they are sorted by name.

This applies mainly when the user has selected "add all analytes". However, when analytes are initially added to the list view, they should also be sorted by anasequence.

2. Duplicate scheme sequence found in some jobs

Modified: frmNewProfjobSchemeAdd: LoadAnalyteListitem, SqlUpdateJobSchemeSeq

XMDE SPR 1306

Added new properties to clsSheet:

clsSheet.Style – This will return NORMAL as this class is used when displaying the normal style.

clsSheet.GroupByAnalytes – This will always return False for this object as it only used when displaying the normal style which will never be grouped.

Added new properties to clsSheetStyle2:

clsSheetStyle2.Style – This will return INVERTED, as this class is used when displaying the inverted style.

clsSheetStyle2.GroupByAnalytes – This will return True if the sheet is opened in the inverted style with the Group By Analytes checkbox checked, otherwise it will return false.

XMDE SPR 1304

Fixed some issues with the REP/QC command:

1. Fixed width of unit column on the report sheet to be the same as the details sheet.

2. Fixed an error in calculating the %Difference. Was getting the wrong row for the original result.

3. Set width of “Expected Value” and “First Reading” column to be wide enough for headers, and also fixed the problem with it not displaying the original result. Problem was that I had left out the code to display the original result.

4. Fixed a problem in CheckQCValue that was not setting the correct status when a value outside of the range was entered.

XMDE, MDE SPR 1331

It was reported that you could enter values like <2, & $5 even with alphanumeric mode disabled. I found the following:

1. To be able to enter values like <2 is by design.

2. To be able to enter values like $5 is a feature of the F1Book control, for entering currency values.

3. You could enter values like #nnn!, and it would quite happily accept it, as it was using string manipulation to check this when looking for errors in formulae. This I fixed.

REPORT, CCPROF01.DLL SPR 1335

Issue was that the report was being saved over the template if no output file was specified.

I changed Report program to disabled Report button if an output file was not specified.

I added functionality to CCPREP to set a default report file name if none given. This is so non-interactive reporting will work in the same way.

The default file in these cases will be set to: CollDirectorySetting\JobNumber DefaultTemplateSetting|Report.XLS. If there is no value in the DefaultTemplate setting, it will use Report.XLS.

CCLAS 1.4.2

CCPROF01.DLL SER 1330

1. Any SampleGrid sample deletion MUST be clearly audited. (Currently no auditing at all on delete). Also if changes on the ProfJobCuidUser form, then these need to be audited as well.

2. Also need a new Profile staff setting of ZipOnSampleDelete which if enabled will create a zip backup of job after the AfterSampleDelete sub is called

3. Need a new staff setting that will rebuild the ident Files (ie IDS, EID, DES, PRD etc) (either internally or externally based on UseIdentsFiles global setting. This will be required after SampleDelete as well as SampleAdd (ie AddSampleToConcDB)

GlobalSetting UpdateIdentsOnChange

4. Need a new public method on clsBDProfjob clsBDProfJob.RefreshIdents (JobNumber as string) . that will rebuild all Idents (IDS, EID etc) from the PJC table when called (either in script on on SampleGrid change or AddSampleToConcDB)

5. Need to ensure that as soon as the user moves from any SampleTab (ie UserIdents to InternalIDents), then if dirty then Save with prompt. Also whenever focus on any of the Sample Idents tabs, always read from external files or PJ fields as based on GlobalSetting UseIdentsFiles.

1. Fixed. Modified CCACTX01.OCX: sampleGrid.DeleteItem

2. Fixed. Modified CCACTX01.OCX: sampleGrid.DeleteItem

3. Fixed.

4. Fixed. Modified CCPROF01.DLL: added a new public method RefreshIdents on clsBDProfjob

5.Fixed. Modified PROFILE: frmJobEdit.CmdCreate_Click, frmJobEdit.TabStrip2_Click

PROFILE SPR 1308

1 Disabled Schemes

The basic criteria for finding schemes to be added to a job, should as CORE not display any schemes that are Disabled.

Fixed.

This should not be part of the SQLWhere function, but added to any SQLWhere definitions that the scripters have provided.

2. SQLOrder not doing.

It seems that the Function SQLOrder is not used in ordering the record set

Fixed.

Used a simple example, to sort by Scheme description for available schemes. Regardless of this seting, it was always sorted by the first column in the list view.

Function SQLOrder()

'

' How do order the results of the query.

'

If fraScheme.Visible = True Then

SQLOrder = "SCHEME.DESCRIPTION"

Else

SQLOrder = ""

End If

MsgBox SQLOrder

End Function

3. If the user double clicks on the scheme or analyte item in the list view side, then the error message indicates that record doesn't exist, but it should be better to explain that the record is unavailable because it hasn't been committed to the database yet.

Fixed.

4. Always fire the NodeSelected subroutine when the 'Schemes' or 'Selection' node is selected.

1. Fixed: modified frmNewPofjobSchemeAdd.LoadSchemeAnalytes, frmNewPofjobSchemeAdd.LoadSchemes

2. Fixed : modified frmNewPofjobSchemeAdd.Querydata

3. Fixed : modified frmNewPofjobSchemeAdd.pvEX_ItemDblClick

4. Fixed : modified frmNewPofjobSchemeAdd.pvEX_AfterNodeSelectionChange

PROFILE SER 1322

When selecting analytes to be added or removed from an existing scheme, if the user can select mulitple rows, then the Right Click needs to have the option

- Select All

- Unselect All

- Select Highlighted

- Unselect Highlighted

- Toggle Highlighted

Implemented: subs added to frmNewProfjobSchemeAdd :

SelectHighlightAnalyte, SelectHighlightScheme, ToggleHighlightScheme, ToggleHighlightAnalyte, RemoveHighlightAnalyte, RemoveHighlightScheme

CONFIG, CCCFG01.DLL SER 1313

Modified to allow the user to enter any nice number.

BATCH SPR 1311

Modified to use the ANASEQUENCE order, when loading the analytes list.

Added the labcode to the where clause of a query for the schemes list selection, and also to some sample extraction queries.

MDE

Added the labcode to the where clause of a query for schemes list selection.

SAMANA

Added the labcode to the where clause of a query for sample run extraction.

PROFILE SPR 1297

The field ProfJob_Scheme.Procedure code does not get displayed when PREP, MISC, HDR Schemes type exist in a procedure (The functionality added was to be able to see the Procedure code THAT the scheme has come from).

Fix: modified frmProfjobSchemeEditMISHDR, frmProfjobSchemeEditPRP

CCLAS 1.4.1

Relink of all executables for compatibility reasons

CCLAS 1.4

CCLAS is re-badged as a Mincom Pty Ltd software product.

CCCFG01.DLL, CONFIG

Changed DLL objects, and added Userscreens in the program for the new database fields. Added to the following objects:

GroupSection GroupSectionUser.SCR (probably should have been SectionGroupUser.SCR - DEH 13.05.05)

StatusCodes StatusCodesUser.SCR (probably should have been StatusCodeUser.SCR - DEH 13.05.05)

Instrument InstrumentUser.SCR

CannedComments CannedCommentsUser.SCR

CCSTAFF01.DLL, STAFF

Changed DLL objects, and added Userscreens in the program for the new database fields. Added to the following objects:

Grouping GroupingUser.SCR (Probably should have been GroupStaffUser.SCR or StaffGroupUser.SCR – DEH 13.05.05)

CCSCH01.DLL, SCHEME

Changed DLL objects, and added Userscreens in the program for the new database fields. Added to the following objects:

ProductAnalytes

CCCLI01.DLL, CLIENT

Changed DLL objects, and added Userscreens in the program for the new database fields. Added to the following objects:

GroupClient GroupClientUser.SCR

ClientQuote ClientQuoteUser.SCR

CCPROF01.DLL

Changed DLL objects for the new database fields. Added to the following objects:

ProfJobCuidSchemeAnalyte

CCPROF01.DLL, MDE, SAMANA, PROFILE, REPORT SER 1217

Calculating and and storing FormattedValues in profjob_cuid_scheme_analyte table

To enable programs that write values into FinalValue to also calculate FormattedValue and store.

New global and program settings added to staff_program_cfg to enable the calculating and and storing of FormattedValues :

Global settings: AutoStoreFormattedValue = ENABLED | DISABLED – default value is DISABLED

AuditFormattedValueHistory = ENABLED | DISABLED - default value is DISABLED

Report setting: UpdateFormattedValue = AUTO | CONFIRM | NONE - default value is NONE

Profile setting: UpdateFormattedValue = AUTO | CONFIRM | NONE - default value is NONE

The setting AutoStoreFormattedValue if enabled will enable MDE and SAMANA to calculate and store FormattedValues when saving final value of analytes

The setting AuditFormattedValueHistory if enabled will audit changes to FormattedValue made by SAMANA, MDE, PROFILE, REPORT

The setting UpdateFormattedvalue if set to AUTO will enable PROFILE, REPORT to automatically update FormattedValues of the current job.scheme.analyte (in profjob_cuid_scheme_analyte table ) if any change to an analyte that affects its Formattedvalue is made.

The setting UpdateFormattedvalue if set to CONFIRM will enable PROFILE, REPORT to prompt the user to update FormattedValues of the current job.scheme.analyte (in profjob_cuid_scheme_analyte table ) if any change to an analyte that affects its Formattedvalue is made.

CCLOG01.DLL SER 1050

Added the UseWindowsPassword global setting, to specify whether to validate the password against the Windows password for the CCLAS user. Default is Disabled.

CCLOG01.DLL SPR 860

Modified the Login dialog to use the Windows settings for the Menu bar for the username and password background, similar to the About box and other backgrounds in dialogs.

CCLOG01.DLL SER 1277

Change the tab sequence, to set the focus to the OK button after entering the password. Was previously going to the change password button.

CCLAS SPR 1259, 1233

Modified to convert (path) global settings in the StartMenu staff setting.

CCSUPP01/.DLL SER 1278

Added the GenerateGUID function, to generate a GUID, to the clsSupport class.

Eg,

Dim oSupport

Set oSupport = CreateObject("CCSUPP01.clsSupport")

sGuid = oSupport.GenerateGUID()

PROFILE

Added new form for scheme and analyte entry.