Upgrading Great Plains Dexterity Customization – switching to new technologies: SQL, Crystal, eConnect


Upgrading Great Plains Dexterity Customization – switching to new technologies: SQL, Crystal, eConnect

 by: Andrew Karasev

This article is for intermediate Great Plains Dexterity developer. It describes the directions to phase out Dexterity functionality and replace it with newer technologies.

Microsoft Great Plains and its current programming language Dexterity should still be considered seriously by developers community. However Microsoft Business Solutions announced switching to new technologies, mostly.Net, where all the MBS applications will be arranged into suites (Microsoft Financials, Microsoft Distributions, Microsoft Manufacturing, Microsoft Human Resources) and integrated into so called Microsoft Business Portal. Looking into the future we recommend you to analyze Microsoft Great Plains Dexterity customization for replacement it's portions with Microsoft SQL Server stored procs, Crystal Reports, direct C#/VB.Net web publishing, eConnect

1. Replace Dexterity cursor with SQL Stored Procedure

Dexterity was designed as multiplatform technology (primarily Btrieve, Ctree, SQL Server, potentially Oracle). Dexterity data retrieving mechanism is based on Range start, Range End, Get First and Get Next clauses. It is in fact similar, however a little bit slower to cursors in Transact SQL. Long ranges in Dexterity are good candidates for replacement by SQL stored procedures with update clause.

For example, consider to replace following Dexterity code:

Range clear SOPHDRWORK.

Clear ‘SOP Type’ of table SOPHDRWORK.

Clear ‘SOP Number’ of table SOPHDRWORK.

Range start table SOPHDRWORK.

Get first table SOPHDRWORK.

While errEOF do

If ‘Salesperson ID’ of table SOPHDRWORK “ERIC” then

Edit table SOPHDRWORK.

Set ‘Salesperson ID’ of table SOPHDRWORK to “BILL”.

Save table SOPHDRWORK.

End if.

Get next table SOPHDRWORK.

End while.

With the following SQL code

Update SOP10100 set SLPRSNID”BILL” where SLPRSNID”ERIC”

Bringing new data into a table in Dexterity is based on change/edit table clauses, in SQL they are equivalent (by performance) to inserting one record at the time.

When having long cycle of change/edit table in Dexterity, consider replacement by SQL stored procedure with Insert Into clause.

2. Use Crystal Reports, call them from via VBA in Modified form

The easy way to call Crystal Report from your VBA code from your modified form:

Const RPT "D:ClientsTheClientInvoice Status.rpt"

Public crwApplication As CRPEAuto.Application

Public crwReport As CRPEAuto.Report

Private Sub PrintBeforeUserChanged(KeepFocus As Boolean, CancelLogic As Boolean)

If SalesTransactionInquiryZoo.Type "Invoice" Then

If crwApplication Is Nothing Then

Set crwApplication CreateObject("Crystal.CRPE.Application")

End If

Set crwReport crwApplication.OpenReport(RPT)

crwReport.ParameterFields(1).SetCurrentValue (DocumentNo)

crwReport.Preview

End If

3. Use Direct.Net Web Publishing from Great Plains Database

The easiest and safest way is to use eConnect - SDK with VB samples, created for eCommerce programmers and web designers to call the functionality in Microsoft Great Plains. If your company can not afford eConnect - create your own set of stored procedures to address Great Plains database and go ahead with Visual Studio.Net to do the web publishing.

Happy upgrading and customizing! if you want us to do the job - give us a call 1-866-528-0577! help@albaspectrum.com