Stephen Smith's Blog

All things Sage 300…


with 175 comments

I’m a Software Architect with Sage, located in Vancouver, Canada. I’ve been developing software since high school, or way too many years to record. I’ve worked on the Sage 300 line of accounting products for the past 23 years. See for more info.

Written by smist08

January 18, 2009 at 12:19 am

175 Responses

Subscribe to comments with RSS.

  1. Hi Smith

    Can i write a VB Macro if its accpac webbased?


    February 7, 2010 at 9:52 am

    • For screens that use the new Accpac 6 web based technology, you won’t be able to run VBA macros in the Browser. You can still run them from the server or from the old Windows Desktop. If you mean the current Accpac 5.x Web Deployed screens, then yes you can use VBA macros, and there is a doc installed with System Manager on how to do that.


      February 7, 2010 at 5:45 pm

  2. Hi Steve,

    Hope you are doing well. A quick question for you. Does Accpac publish a Web service for sales tax calculation that is similar to that from Avalara or it relies completely on 3rd party vendors for sales tax calculations? In other words, if I am creating an order from an external interface (APIs) can I query a service in Accpac that will calculate and return in the various sales taxes?



    Hemant Makhija

    February 23, 2010 at 5:18 pm

    • Hi Hemant,

      Hope you are doing well also. We don’t specifically publish a sales tax service like Avalara. But if a customer installed Accpac with Web Deployment and activated web services then they could use our current SOAP web services to access the Tax views to calculate sales taxes. However it would be up to that customer to keep the sales tax rates up to date inside tax services.



      February 24, 2010 at 12:32 am

  3. Hi Steve,

    Great blog! I’m an IT director for a small distribution company (1-10 users) which has used Accpac since the early 90’s but we are considering a competing erp solution due to limitations in Accpac. Is there a link you can provide for more info on features of 6.0, we are on 5.5 right now.



    July 18, 2010 at 9:46 pm

    • This blog has quite a few articles on 6.0, especially from December and January. What are the limitations that are concerning you the most?


      July 18, 2010 at 11:00 pm

      • Primarily, it is the following:

        1. Limited built-in reporting capabilities with steep learning curve for custom reporting (ie: Financial Reports).

        2. Inflexible and inaccurate inventory management.

        3. Lack of built-in module / integration for RFQs with OE. This is crucial for a distribution company.

        4. On a related note, there is also the high cost of maintenance and upgrading core software and related custom applications (VB apps).

        Thanks for listening.


        July 19, 2010 at 1:01 am

      • Thanks for the comments. Feedback is always very useful and greatly appreciated. Just a couple of notes on a couple of upcoming things that might help you:

        1. With 6.0A we are adding a very very simple to use Inqiry/Reporting tool which I talk about in: With Accpac 5.6A we also introduced the Accpac Intelligence reporting product that you might want to check out.
        2+3. I don’t know of any changes that affect these areas.
        4. I think when we have completed the transition to becoming a full Web application this will be much better. Installations only happen on the web server and customizing the screens is much easier. Plus improving total cost of ownership is a major initiative going forwards.


        July 19, 2010 at 2:34 am

      • I think your post on adhoc query hit the nail on the head. Also, there was a lot of other great info on the page you referenced about SageCRM, OE and the Portal.

        Look forward to trying out 6.0!

        Keep up the good work.


        July 19, 2010 at 3:51 am

  4. Hi,

    could you help me on this issue?, actually i want to create Balance Sheet, P&L and Trial Balance, Based on From Date and To Date Parameters not based ob Fiscal Period, i have crated Balance sheet using “GLPOST” able, but i m unable to give proper output. how to modify the FR report?,

    Thanks in advance.
    Nava Deeban S

    Nava Deeban S

    August 18, 2010 at 1:11 pm

    • I’m not sure how to do this with regular FR since it always takes fiscal year/period as its input parameters. However, you might have a look at the new balance sheet and income statement crystal reports that are run from the new G/L data snapshots in the Accpac 6.0A Beta Web Portal.


      August 19, 2010 at 1:58 am

  5. Hi Stephen,

    Is there there an open beta for 6.0A or is it closed? I would be very interested in trying it out in our environment.



    August 19, 2010 at 2:11 am

  6. You have some really interesting material here. Would you allow us to use some of it in our Accpac customer newsletters, acknowledging you as the author?

    Thank you


    September 16, 2010 at 6:03 am

    • Sure that would be fine. What I really like is if you can provide URL links back to this blog.



      September 16, 2010 at 2:57 pm

  7. Dear stephen,
    I am trying to create a subclass view using SDK, i followed the same steps, as in SDK document, when i compile, i am getting errors as follows…
    can i get help on this?
    TTAPPJH1.h(430) : error C2059: syntax error : ‘}’
    TTAPPJH2.h(748) : warning C4013: ‘TTAPPJH_IDX’ undefined; assuming extern returning int
    TTAPPJH2.h(748) : error C2065: ‘TTREF5’ : undeclared identifier
    TTAPPJH2.h(748) : error C2057: expected constant expression
    TTAPPJH2.h(749) : error C2057: expected constant expression
    TTAPPJH2.h(749) : error C2229: struct ‘tagV’ has an illegal zero-sized array
    TTAPPJH2.h(751) : error C2229: struct ‘tagV’ has an illegal zero-sized array
    TTAPPJH2.h(1182) : error C2057: expected constant expression
    TTAPPJH.C(971) : warning C4034: sizeof returns 0
    TTAPPJH.C(1535) : error C2065: ‘TTAPPJH_IDX_COUNT’ : undeclared identifier


    December 2, 2010 at 2:37 pm

    • Hard to say exactly. It looks like there are some problems in your ttappjh.tbl file that are causing syntax errors when the *.gen files are being compiled. Perhaps have a look at line 430 in ttappjh1.h and see what’s being referenced there and then see which are causing the errors.


      December 2, 2010 at 3:49 pm

  8. Hi Steve,

    How are you? Hope you are doing well.

    Work Environemnt:
    Citrix Box
    Sage ERP Accpac 5.6A
    Windows 2008 R2
    MS SQL Server 2008 R2

    We have a custom module developed using SDK activated for Accpac with the above environment for a customer. Customer will not give admin/power user access to users for various security reasons.

    The issue here is as a normal user he is unable to access the custom module but can access Accpac. Please give us a workaround or what am I missing here? is there any solution for this issue.

    The custom module works fine only for the admin user who installed the program in the citrix box and doesn’t work for other users.

    What is the fix to this issue other than giving admin/power user rights to the users. How does accpac works for users other than admin and not for the custom module developed fully using Accpac SDK.

    please let me know the issue that stops the custom program to work for other users? do i need to do anything during the install of the custom program? if so, what is the fix?



    August 6, 2011 at 5:32 am

    • Usually you need to assign that user to admin, then run regacc, then reassign them back to being a normal user. This process will register any ActiveX controls that need registering. If your custom solution has any additional controls that Accpac may not know about, then register these also while they are administrator.


      August 6, 2011 at 4:01 pm

      • Hi Steve,

        Hope you are doing well.

        Your suggestion worked fine. However, I will have to do this manually at client’s environment. I wanted to know if this has to be done during the setup of my custom program.

        Thanks a lot.



        September 9, 2011 at 3:07 am

      • If you have any ActiveX or COM controls that need to be registered, then yes, you will need to do this.


        September 9, 2011 at 3:34 am

  9. Thank you very much Steve.

    I shall try this and will let you know the feedback.



    August 7, 2011 at 4:56 am

  10. Hi Steve,

    Topic: Accpac datasource Clone.

    I have situation where I wanted to know if I shall use datasource clone to achieve it.

    Situation: Custom program will refreshdata from a view into Accpac viewlist. I have an option in the header to choose costing method (Average, Most recent & Standard) from a dropdown list. When user chooses any one of the costing method, the custom program will have to pick the appropriate cost from I/C location details and populate it in one of the viewlist column. (This column will have a cost already generated in view and custom program will allow user to change the cost by choosing the appropriate costing method)
    This view is a flat view and It is not defined as “Revision List” hence whenever a value is put in and program moves out of the row the value is saved into the view (db table).

    Issue: To populate the cost in the viewlist the custom program will have to update the datasource (in the DB table) with the cost and do refreshdata to reflect it in the viewlist. User may change the header costing method option any number of times.

    Update the cost in the datasource (DB table) and refreshdata seem to be a bad idea bcoz the user may choose some costing method and close the UI however, the cost will be updated by the custom program which is not be the ideal requirement.

    Shall I use the cloned datasource to show the cost values populated and then once user hits a save button then save it back to the original datasource? please advise if my understanding with the datasource clone is not correct.

    Please suggest the right away to handle this situation.



    September 9, 2011 at 12:07 pm

    • I tend to think you should set it up as a proper header detail set of views. Then it will use revision lists. If you don’t do this, then you are always going to be fighting table out of sync problems. The key point of a header detail view set is that when you save the header, it saves the header along with all the details in one database transaction, so things never get out of sync, it always save everything or nothing.


      September 9, 2011 at 3:42 pm

  11. Hey Steve,
    Just wondering if you or your team have done any testing with Accpac running over VMWare View or ThinApp? Terminal Server and Citrix is unfortunately not an option with an existing client expanding. All their App servers are already virtualized with VMWare.



    Awie van den Berg

    October 5, 2011 at 9:32 am

    • We do support and test with the VMWare ESX environment. The official word from customer support is that this is all they support. I’m not directly familiar with View or ThinApp, but if these are part of ESX then they might support you.


      October 5, 2011 at 5:21 pm

  12. Hi Steve,

    I am getting classic error “Session Could not be opened”

    Sage ERP Accpac Version : 55A
    Operating System: Windows XP

    There is a custom program VB6 EXE. I have written the below code to create a session. I get the error “Session could not be opened”

    Please let me know what could be the cause of this error and how to fix it.



    Dim lSessMgr As New AccpacSessionMgr
    Dim strObjectHandle$, lSignOnID&

    Dim oSession As AccpacSession
    Dim oDBLink As AccpacDBLink

    strObjectHandle = “”
    lSignOnID = 0

    With lSessMgr
    .AppID = APP_ID
    .AppVersion = APP_VER
    .ProgramName = PGM_NAME
    .ServerName = SERVER
    .ForceNewSignon = True
    .CreateSession strObjectHandle, lSignOnID, oSession
    End With



    October 14, 2011 at 5:57 am

    • As a first step, try removing the .ServerName= line, since this is only for web deployed.


      October 14, 2011 at 3:52 pm

      • Steve, I have removed the ServerName= line, still am getting the error.. please advise


        October 15, 2011 at 5:11 am

  13. Steve, I have removed the ServerName= line, still am getting the error..
    Please let me know is there anything am missing.


    October 15, 2011 at 5:36 am

    • Here’s some code I have lying around:

      Private mSignonMgr As New AccpacSignonManager.AccpacSignonMgr
      Private mlSignonID As Long

      Private mSessionMgr As New AccpacSessionManager.AccpacSessionMgr
      Private mSession As AccpacSession

      mlSignonID = -1

      mlSignonID = mSignonMgr.RegisterSignon(Me.txtUserID, Me.txtPassword, Me.txtDatabaseID, “”, Date)

      With mSessionMgr
      .AppID = “XX”
      .AppVersion = “55A”
      .ProgramName = “XX9999”
      End With

      mSessionMgr.CreateSession “”, mlSignonID, mSession



      October 15, 2011 at 11:31 pm

      • Hi Steve, Using the above code in VB6, I get an error “The session is not initialised”. Runtime error -2147467259 (80004005). The code does not go past this point Set mDBLinkCmpRW = OpenDBLink(DBLINK_COMPANY, DBLINK_FLG_READWRITE).

        I am using V62A database.

        Ian Booth

        August 21, 2014 at 11:06 am

  14. Hi Steve,

    I am just wondering if there is any documentation wit regards to the use of the ACCPAC .Net objects and more specifically the security requirements around using those in an ASP .Net environment.

    I have managed to figure out most of the issue and everything works fine in my developement environment however as is typical when deploying to the live environment i have errors and they occur when the code hits the init of the ACCPAC session with and access denied error.

    The only time it works in the live environment is if i am logged on as an admin user.

    Thank you.

    Duncan Campbell

    November 29, 2011 at 6:42 am

    • Tech support may have some notes on this. The documentation tends to be on how to connect from a regular .Net program. Generally, by default, running under IIS, a user has very limited access rights. You have to grant them sufficient rights to call .Net assemblies and COM objects. Then if the program files or shared data is located on a different computer than the IIS server, then you need to assign them to a user with domain network rights or they can’t access the files on the other file server.


      November 29, 2011 at 10:52 pm

  15. Is there somewhere I can find the definitions of the tables and or what the values would mean in the various tables. I am trying to do some reporting but I am struggling with ensuring I have the right values. I am looking for things like Batch Type, account type, trans type, etc …


    February 7, 2012 at 5:24 pm

  16. Steve,

    Is there a way to get the Accounts Receivables view in ERP 6.0 published in Sage CRM 6.2? Customer very reluctant to move to 7 due to a highly integrated CRM deployment. Thanks.


    Gopinath Narayanan

    February 28, 2012 at 11:21 am

    • Not sure what you mean. The A/R integration pieces haven’t changed much. There are CRM pages that show A/R information as well as having the ability to drill down to A/R screens.


      February 29, 2012 at 1:52 am

  17. Steve,

    We are in the process of prototyping SData to write an interface to 6.0A from our Retail Manager solution. It has taken a while to get something working (we are new to SAGE and 6.0A so this has been a big learning curve for us) and your blogs have been a big help so far so thanks for that.

    Using the customers, we are now able to process customer records through the all CRUD stages. We do have a few questions and concerns and hope that you could assist. Our plan was to focus on our interface to SAGE using SData for 6.0A but we are a bit concerned that we may not be able to address all of our requirements. Our main requirement at this stage is to be able to write data back to 6.0A for customers, items, sales orders, inventory transactions and bank transactions but we are struggling to find how to achieve this. We also need to read data back and this seems to be easier to achieve.

    So, a few questions:
    * We can see that customers, items and oe are able to be inserted (and maintained) via SData but cannot easily identify (not sure where to look) whether the adding of Bank and Inventory transactions are supported as well.
    * One of your examples demonstrated a customer insert where you had a sample XML layout for the customer data. This sample did not use all of the columns and we would like to know where we could get the info that identifies all of the the columns that could be included for an insert operation for the various tables (primarily customers, items and sales orders at this stage). We tried using the ..\customers\$schema call for this , but it it does not appear to identify all of the columns that are able to be inserted for a customer (eg: TEXTSRE1,TEXTSRE2 etc are not listed) – or are we missing something.
    * We can’t see any way to add bank and inventory related transactions via SData. Is this possible? If so, where do I find this info as well.
    * How can we find a full list of supported CRUD operations on the 6.0A version.


    Peter Brooks

    March 13, 2012 at 8:01 am

  18. Hi Steve,
    I have been reading some of your articles, and find them well written and easy to understand. I wonder if you can help me with an issue. We are running Accpac 6 on a server client basis with SQL. I run crystal reports on my workstation, and am trying to create a custom payroll report, with much of the information found in the CP Check Register report. This includes various earnings and various deductions, including the tax. I noticed that Sage uses a datapipe dll to create their out of the box report. Is there any way I can use this same datapipe to create my custom reports? When I try to use it, I get a “database connector crdb_p2bpipe.dll could not be loaded” error.



    March 21, 2012 at 5:05 am

    • You can, but I think its fairly difficult. You need a section in the CPRPT.INI file similar to the ones for the existing report. It might be easier to backup and then modify the existing report, test it by running it from the regular UI, then when you are done rename it and create a section in CPRPT.INI for it, then restore the original report. The good news is that we are currently working to remove all the datapipes from Payroll.


      March 21, 2012 at 4:58 pm

  19. Hi Steve

    I would appreciate if you could let me have the “official” process to move Accpac V6.0 & Pervasive V11 installed on a Windows 2008 R2 server to a Remote Desktop VM server.

    Accpac Fanatic


    April 3, 2012 at 7:35 pm

    • I don’t know if there is an “official” process, but I would install it on the new server and get running with Sample data. Then with all the users out of the system, copy the shared data folders over and point database setup at your production database, then depending on whether you are using Terminal Server or Workstation setup, switch all the users over to the new server (possibly by running workstation setup again).


      April 3, 2012 at 8:54 pm

  20. Hi Steve,
    Have a client on Accpac V6.0 which has branches in Egypt.
    They use the screens in English, but want some of the fields to contain arabic language so that they can be printed on forms and reports.
    I have set up the WS to allow arabic.
    I can type in the arabic language on a screen, but when I save it, it changes to ?????????
    I have checked the SQL table and that also contains ????
    I changed the field in SQL and typed in the arabic characters – SQL does not change these characters.
    On the accpac screen this field shows as ????
    On a crystal report this prints in arabic – so the SQL is okay – it is just the Accpac side of things.
    I have spent time on the forums and Sage site, and have tried all suggestions, but to no avail
    I have been troling the web for help and came across you so I really hope that you have the answer for me.
    much appreciated.

    Ian Lowe

    May 24, 2012 at 9:21 am

    • From the control panel, choose “Region and Language” then from the Administrative tab, change the “Change system locale…” to select and Arabic language.


      May 24, 2012 at 3:16 pm

  21. Hi Steve,
    Thanks – this worked a treat – much appreciated.

    Ian Lowe

    May 25, 2012 at 8:57 am

  22. Hi Steve,

    In March 2012 we asked a question about development access to AccPac ERP via SDATA and you provided a response and your suggestion was that we join up as a development partner. Well, we have done so and have eventually received our login details with no indication of where to access different bits of info. I have requested additional info but it may be quicker to ask the question here. So, could you please point us to the different areas that we are able to access the development SDK as well as the various forums that may be available – in particular for development using SDATA.


    Peter Brooks

    August 19, 2012 at 8:41 pm

  23. We have made a fair bit of progress with our SData interface but it has not been without a very steep learning curve and associated frustrations. Unfortunately we have now hit a wall and hopefully you can provide some assistance. Basically our aim is to have all transactions generated in our Retail solution transferred across to Sage AccPac 6.0A. We have managed to load our invoices using the SData oeorders resource but are having the following frustrations:
    * the entry added via oeorder is auto shipped (qtyorder=qtyshipped) but, even though we specify an override invoice number, invoice date and ship date and select the appropriate fields eg INVPRODUCE etc, these are ignored and the system generates its own invoice number. Should this work?
    * if we wanted to do add the oe in 2 phases, oe added first and then a second process that does the Ship All, how could we do the Ship All process via SData. Are there any examples? How would I create a OEOrderShipAll resource.
    * we need to add AR Receipts via SData and again we can’t see any examples on how we could use this or what resource we could use.
    Could we assume that we would need to identify the views that would used to process these transactions and then create a resource with the appropriate views linked and the resourceviewFileds included or excluded. If this is the method, is there any other info available on this. The blog you provided recently on this was a good intro but I can’t find anything further about this. Am I missing some help info or docs!

    We also had an issue with a new AccPac 6.0A install. Once completed, when we tried to access the SData portal, we received an error indicating that the class com.sage.accpac.swt.sagecrmorderui.server.OEOrdersResourceKind could not be found. I had a look in the oe classmap.xml file and noticed that most of the other resources referred to the com.sage.orion.sdata.servlet.accpac.ViewResourceKind class. So, I changed the oeorders class to point to this class and the system seemed to work ok. So, what is the difference between the 2 classes and have I caused a potential problem by pointing to the base class.

    Really look forward to a response and some pointers.



    Peter Brooks

    September 6, 2012 at 9:55 am

    • Hi Steve,

      Does Accpac 5.6A works in VMware VDI? How is the “access” speed like? If slow, what advice will you give? Thanks for your help!


      February 13, 2013 at 12:08 pm

      • I haven’t used VMWare View (VDI), we use VMWare ESX. But we’ve always had good experience with VMWare products. I suspect it will work well. The main thing is to ensure the desktop sessions have enough memory and then I think they should work well.


        February 13, 2013 at 4:34 pm

  24. Hi Stephen – We queried our network of BPs searching for knowledge/practical experience running Sage ERP Accpac on Microsoft Azure. We have an existing client who wishes to deploy in that environment. Unfortunately, we have not received a reply and our client was hoping for a quick response. Can you offer any comments that it will not be an issue for them?


    February 28, 2013 at 7:50 pm

    • Not yet. I blogged on how to run Accpac from the Amazon cloud here: However to run Accpac in Azure will require a feature called “Persistent VM”. This feature is only in preview mode and until this is available for production you wouldn’t be able to deploy Accpac to Azure. This feature allows the virtual machine to save changes when it is restarted. Also you can’t currently use Azure-SQL with Accpac since there are some problems. We are working around the Azure SQL problems but won’t support this until either our 2013 release or sometime after that. However you can install regular SQL Server in your Azure Persistent VM and run that way once persistent VMs are released (sometime this summer probably). Hope this helps.


      March 1, 2013 at 12:52 am

  25. Hi Stephen – I’ve written a lot of code and custom integrations for Dynamics GP (using the eConnect API’s), Dynamics AX (using MorphX/X++), Dynamics CRM, SL, etc., but I haven’t worked with Sage 300 until now. I read the article “To SDK or Not to SDK” you published on the R&D Team Blog. I’m working on an app that will extract data from Sage 300. Data extraction shouldn’t be overly difficult. However, there will also be inbound transactions that I will need Sage 300 to consume. There is no need to modify the Sage UI. I am trying to write this app so as to be the least intrusive as possible. That said, I’m also assuming the Sage 300 user/client is unsophisticated (ie they’re not running CRM, no IIS/Apache/Portal, etc.). So, assuming this app will run locally along side of the Sage 300 client, it sounds like using the .Net interface is the way to go. If I was going to write this app for GP, I’d have the client install eConnect and the inbound eConnect service. Then, I’d write a service in C# using the eConnect API, hydrate the object that is the subject of a tranaction (say, for example, a sales order invoice), then submit. Does Sage have a similar toolset? Do you think using the .Net interface is a viable option? Any advice you can provide will be greatly appreciated.


    March 14, 2013 at 10:12 pm

    • Using our .Net interface is a good way to go. You only need the regular Sage 300 workstation setup installed, then you have most of the APIs available to you including .Net and COM. You don’t need anything like eConnect. Then you just need to login and use our views via the API to retrieve and push data. The SDK has a number of samples usually installed in c:\pluswdev\samples\dotnet.


      March 14, 2013 at 10:18 pm

  26. Hi Steve

    I’m kindof at a loss here and I hope you can offer some advice – I have used this technique successfully for years now – and suddenly it’s causing a problem.

    I have developed a simple VB.NET console application that references the Accpac COMAPI. It simply creates a quote in OE.

    My laptop has the visual 2010 environment and I have a 2008 server that has Sage 300 ERP installed. I ran the WSSetup on my laptop to get access to accpac and the API on the server. I compiled, installed and ran the program on my laptop and the program works as expected. (each time I run it a new quote gets created)

    However when I install the program on the 2008 server where Sage 300 ERP is installed, the “session.init” fails and I get an error as follows

    Problem signature:
    Problem Event Name: CLR20r3
    Problem Signature 01: quoteconsole.exe
    Problem Signature 02:
    Problem Signature 03: 5164bd7a
    Problem Signature 04: QuoteConsole
    Problem Signature 05:
    Problem Signature 06: 5164bd7a
    Problem Signature 07: 13
    Problem Signature 08: 128
    Problem Signature 09: System.InvalidCastException
    OS Version: 6.0.6002.
    Locale ID: 1033

    My startup code looks like this

    Private mysession As AccpacCOMAPI.AccpacSession

    Sub Main()

    mysession = New AccpacCOMAPI.AccpacSession

    mysession.Init(“”, “XY”, “XY1000”, “61A”)

    mysession.Open(ACCPACUSER, ACCPACPSWD, ACCPACDATABASE, Today, 0, “”)

    I am confident that the session.init is failing because I put trace statements in the code after every line and I never got to the trace line after session.init.

    Do you have any ideas for me. Much appreciated.


    John Todd

    April 10, 2013 at 2:00 am

    • Strange that its an InvalidCastException. Hard to see how passing in four string constants could cause this. You might try opening up the SDK sample in c:\pluswdev\samples\dotnet\vb-Net and see if it has the same problem.


      April 10, 2013 at 3:44 pm

      • Oops, sorry I was thinking of the .Net API rather than the COM API. For the COM API it might be something about how its defined and then the cast is object.method or something.


        April 10, 2013 at 3:49 pm

  27. Thanks Stephen. I went on to use the Accpac spy to monitor the COMAPI Session and according to it the session object was not even being created – so I brought the DIM into the Main sub and at least then the session object was being created but it still failed on the init. Unfortunately I ran out of time and decided to write the code in VB6 which works well. Thanks for your time on this.

    John Todd

    April 11, 2013 at 11:41 am

  28. Great resource — keep up the excellent knowledge share

    David Beard

    April 23, 2013 at 4:25 am

  29. Hi Stephen

    I’d like to ask few questions about BI but at this stage I’d like to ask private question if that is an option.


    Grega Loboda

    July 26, 2013 at 12:23 pm

  30. Hi sir,

    I would like to ask assistance. i found it hard to insert an order to an Sage 300 ERP :-(
    the samples on the gives me an error when i tried it on the Mozilla Rest Client ( ‘The property ‘orderDate’ provided in the payload is not a property of the ‘oeorder’ resource.’ ) and ‘SDataBadPayloadPropertyNotKnown’ error
    i’am completely stuck with this. I just need to insert an order to the Sage 300 ERP.

    Hope to hear from you sir.

    Thanks a lot.


    October 4, 2013 at 7:01 am

  31. Hi Stephen,
    I read your blog on customizing the order screen in crm ( I was able to add a few new fields to the Customer Details tab and it works great however when I save the order and it posts back the 2 new fields show as editable. What I’ve determined is that it seems like it’s based on the id of the widget. If I rename the orders_DESC widget to orders_FOB and rename the orders_FOB widget to orders_DESC then the Description shows as editable and the FOB field shows as read only. Do you know what would be causing that? Thanks Stephen.


    October 9, 2013 at 1:08 am

    • One limitation of this way of customizing is that you don’t get the read-only/editable state change logic. So the custom added fields are always editable. Generally this isn’t too much of a problem since you can see from the rest of the form not to expect to edit them. I think your renaming is just replacing some of the existing fields and inheriting the builtin logic behind them.


      October 10, 2013 at 6:39 pm

  32. Hi Stephen.

    I am writing an interface to the sage desktop using the vb .net framework 4.5 in visual studio 2012. I would like to use the accpacfieldedit control, but get an error whenever I try to access the accpacdatasource:

    {“Could not load file or assembly ‘Interop.AccpacCOMAPI, Version=, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified.”:”Interop.AccpacCOMAPI, Version=, Culture=neutral, PublicKeyToken=null”}

    What am I missing? Thanks

    Robert Braunlich

    November 5, 2013 at 6:53 pm

    • If you are interacting with our COM controls then make sure you use all COM controls and don’t use the Sage 300 .Net API since this isn’t compatible with all the COM stuff. The error you are getting looks like it can’t find our COM API. Perhaps the runtime folder isn’t int he PATH or you need to run regacc to get all the controls registered properly. Make sure you can run the UIs from the regular Sage 300 desktop.


      November 6, 2013 at 1:17 am

  33. Hello Stephen,
    Thank you for your helpful blog.
    We are using Sage accpac since v5.5. We used it at our factory. and currently using v5.6. We have many problems by Day end process. it take a long time.
    We run it 3 times a day. and it stop our process 15 mins each time. from last week we enable lot tracking. it face us a big problem, day end process increase to 50 mins each time. ( We used a high performance server/hardware and there is nothing we can do on our server setting)
    Would you please help me :
    1- is there any way to we rollback and disable lot tracking ?
    2- is there any suggestion to decrease Day end process time? ( I read your article on your blog and we test that setting we use costing during posting)
    3- If we upgrade to v 6, is there any improvement on Day end process? we have a lot of customization so we are not happy to upgrade to new version while we not sure about performance improvement .

    Best regards,

    Mehdi Alidoost

    November 11, 2013 at 6:43 am

    • A lot of time people run day end frequently to update costing. If you choose the costing during posting option in the applications, then costing will be kept up to date without running Day End. Then you can run Day End once a day (at night) and it won’t have to do the costing part either.


      November 11, 2013 at 10:43 pm

      • Thank your for your reply, Is there any changes in new version about Day End process, If we upgrade will we have better process performance?

        Mehdi Alidoost

        November 12, 2013 at 6:50 am

      • It would depend on what your problem actually is. We do take performance problems seriously and there are always improvements in each new version (even each product update). But for your situation, it might be worth setting up the new version on a test system and giving it a try.


        November 12, 2013 at 4:54 pm

      • We need consulting service on our case, Main problem is performance. We have to upgrade to sage x3, or we can upgrade to new sage 30?. We did many customization, and migration to X3 is difficult decision. Would you help us on this case or would you introduce consultant to me. ( I want some one check our system, db ,… and tell us new version of Sage 300 can help us or not)

        Mehdi Alidoost

        November 16, 2013 at 8:09 pm

      • Partly it depends on where you are located. You cloud start with your Business Partner or contact Sage Customer Support directly. One company that has helped clients with performance problems is Tairox ( But I don’t know what logistics would work for you.


        November 17, 2013 at 5:53 pm

  34. Hello Stephen,

    I encounter some problems when using macro in vb6. Hope you can guide me to the correct direction.
    1. Macro create journal fail, because no value in optional field. Although the optional field has been set to not required.
    2. Auto create CN fail, because item inventory cannot be negative. CN should be adding stock.

    Thank you

    Michael Kok

    November 15, 2013 at 6:14 am

    • I would try macro recording these operations from the regular UIs and compare what you get with your code to see if you are missing something. It might be you just need to compose some more Views or need an extra process call.


      November 15, 2013 at 5:00 pm

      • Dear Stephen,

        Thank you for your kind reply.

        1. I actually copied a recorded macro from Accpac, but using different version 5.4A. In production we are using Accpac 6.0A. However I did change all the declaration. Not sure whether this is the reason.

        2. For this I also use recorded macro from Accpac. From UI screen everything works, but when I play the macro, it shows the same error message.

        Michael Kok

        November 18, 2013 at 3:05 am

      • Not sure what’s going on with the optional fields, but for the CNs:

        Reason why you cannot create CN – The item is at negative inventory level but IC doesn’t allow negative inventory, therefore the system tightly controls the situation by not allowing any transactions on the item, even if the purpose of CN is to replenish the stock. The workaround:

        – Turn on “Allow Negative Inventory” in IC Options
        – Post the CN to bring the inventory back to above zero
        – Restore the system by turning off “Allow Negative Inventory” in IC Options


        November 19, 2013 at 2:46 am

  35. Thank you for the suggestion. That is how we had adviced our customer as temperory solution. But they insist on a better long term solution.

    Michael Kok

    November 19, 2013 at 3:50 am

  36. Hi Stephen,

    I’m a application developer that has a client that wants to integrate into Sage 300 ERP. What are the API or Web Service options. The Sage site is strangely not forthcoming about what would seem to be important information about integration that any developer would need to create a realistic cost proposal for this type of work. Thanks for you attention in advance.

    J. Sciarra

    December 10, 2013 at 4:47 pm

    • Perhaps have a look at this article: Generally the COM API or .Net API are the recommended way to go. These APIs can do anything in the system. There are Web Services interfaces with SData but the API is only on a subset of the system so you could get stuck depending on what you are trying to do.


      December 10, 2013 at 4:51 pm

  37. Hi Stephen,
    Just started getting “A Session Cannot Be Started” error when trying to connect to ACCPAC through IE. Also, our CRM database won’t connect, yet ACCPAC ERP connects fine. Also, when i try to go to accpac/help (or any site under the ACCPAC Website) i get 403 – Forbidden Access is denied. I believe this is an IIS issue, but cannot find anything wrong. Where should I start? Very Novice at SAGE. Thank yo so much in advance.

    j maxwell

    January 21, 2014 at 5:19 pm

  38. I am using .net remoting, and ports are open. It sees the database and asks for a log in. It doesn’t matter what log in i use, it replies “a session cannot be opened”

    j maxwell

    January 21, 2014 at 5:43 pm

    • You may have to contact customer support on this one. Or you could try the COM Spy program that is in the tools under Sage 300 from the Start Menu. Try spying on different things to see if you can get a more helpful error.


      January 21, 2014 at 11:45 pm

  39. Hi Stephen, I’m just wondering is there a way to do a single sign-on into Accpac (Desktop or Web Deployment) from another app, so the Accpac login screen will not show up?


    March 21, 2014 at 3:55 pm

  40. Thank for your reply, Stephen. I understand from your reply that we can pass the $objecthandler into another app, so it doesn’t need to show Accpac login anymore. But, how about the other way around? Login into an app and then the app passes the login credential into Accpac, so Accpac Desktop will not show its login screen anymore. Thank you in advance.


    March 23, 2014 at 4:22 am

    • Sorry but there aren’t sufficient command line arguments to the desktop to stop this.


      March 23, 2014 at 4:10 pm

      • Thank you for your reply, Stephen. Please continue your good job.


        March 24, 2014 at 2:32 pm

  41. Good afternoon Stephen,

    I am having a hard time wrapping my head around user permissions. The fact that two calls to support 3 months apart yielded two different answers is adding to the fog.

    We are using ERP 6.1. One support person told the that if I want users to have entirely different security profiles from one company to a ‘new one’, that I had to set up a different SYS database for the new company. The second support person said that users are universal to ERP 300 and that the SYS database doesn’t play any role.

    Replicating up from one database and back down to another database doesn’t seem to have any effect on permissions which seems to contradict the first support call and importing User Authorizations from one company to another can trigger an ‘user ID is invalid’ error message which seems to contradict the second support call.

    Can you point me to an article that sets it clear?


    May 16, 2014 at 7:06 pm

    • This article might be of some help: Security Groups will be transferred through the system database so you can share these. User Authorizations are by company, so they won’t be. You can still have completely different security rights by company when sharing the same system database. When you sync both will have the same security groups available to assign, but you can assign different security groups to each user in each company. Another mechanism to copy the user authorizations from one company to another is to export them, change the company in Excel and then import them to the new company.


      May 16, 2014 at 8:47 pm

      • Thank you for your quick response.


        May 22, 2014 at 2:15 pm

  42. Hi Stephen,
    I am following you ACCPAC articles , it is all are very use full, and resolving lot of issues which we encounter on our real world.
    I came up with the different issue this time.
    We developed a WEBSERVICE to cater the integration with ACCPAC AR module. Customer is having 15 user licenses but some times all 15 is been consumed by users and our web service is not be able to process properly.
    Is there any that available to keep one user is dedicated for web services?
    If so please let us know ASAP? We almost deadlocked by customer on this request..


    June 16, 2014 at 2:46 am

    • I think the only way is for your web service to keep a session open, then it will keep the lanpak while it runs.


      June 16, 2014 at 2:42 pm

      • Thanks for the information Stephen..!!

        This is a REST service , So we don’t have the session to keep the ACCPAC session open

        I can remember , in earlier version’s of ACCPAC we use IAP user for the integration, which doesn’t have this kind of issue.

        Please take this as a request for the new ACCPAC version release ! Accommodate some mechanisms in which we can dedicate one user license only for the integrations.


        June 16, 2014 at 11:44 pm

  43. Hi Stephen, I’m trying to complete transit transfers and transit transfer receipts with the API (c#). I can do regular transfers no problem but there appear to be some subtle differences with transit – is there any chance you could post a sample or link something that would get me closer please?



    Jon Embrey

    June 18, 2014 at 1:58 am

    • I don’t happen to have anything handy. Usually RVSpy and/or macro recording the standard function can help.


      June 18, 2014 at 3:20 am

  44. hi Stephen,

    I got a problem to integrated with ACCPAC V5.6, here is the error message “Could not load file or assembly ‘Interop.AccpacCOMAPI’ or one of its dependencies. An attempt was made to load a program with an incorrect format.”.

    I created a webserivce to call ACCPAC COM lib, when I publish to server then it happen.
    Please help.



    July 3, 2014 at 10:57 am

  45. hi Stephen,

    I found the problem is because the value of enable 32-bit applications is false in application pool, I changed it to true, then the error was gone.



    July 4, 2014 at 5:41 am

  46. I have a weird issue with 64-bit Sage 2014. When I print a sales order confirmation or anything to crystal reports preview I get this hourglass for about 7 seconds before it finally pops up with the report. Nothing special in the report at all. Everything works fine on 32-bit versions. I did read the Upgrade guide about adding 32-bit sources to ODBC but that does not help. Any thoughts?

    Bill Olson

    August 20, 2014 at 4:40 pm

    • Make sure you have the latest Product Update, since it includes fixes to the Crystal runtime. I think most people run on 64 bit Windows now. I tend to think you are better off entering the server name in Database Setup (assuming you are using SQL Server), rather than creating data sources by hand.


      August 20, 2014 at 4:44 pm

  47. Hello,

    I just installed PU1 a few weeks ago and re-ran workstation setup on all the workstations. As far as running database setup I usually don’t because when I run it the connections are already there.

    Bill Olson

    August 20, 2014 at 5:01 pm

    • Check the client configuration for SQL Server and make sure that TCP/IP is the only enabled protocol. Sometimes it tries one (which is bad), times out and then tries the next and this causes such a delay on starting things like reports.


      August 22, 2014 at 3:48 am

  48. Hi Stephen. I wrote a .net application that allows users to create a payment batch by giving them a list of AP invoices that they can select in a grid type format. Once they select the invoices to pay and click Create Payment Batch it comes back with a message stating that Batch ### was created. I would like if possible for the user to be able to click on that batch # and have it open the ActiveX control for the Payment Batch Entry and browse to that batch #? I’m guessing it’s not possible but just thought I would ask :-) Thanks Stephen.

    On a different note, I’m using the SessionManager to create a session and it grabs the session that’s already open if there is one. However is there a way to tell if the session was created from a new sigon or if it grabbed an existing one? The problem I have is that when the user exits out of my application I’m calling the signoff method, but if they are still in Sage 300 I don’t necessarily want to do that. i suppose it doesn’t matter since Sage 300 still works even if the session has been removed, but just thought I would ask. Thanks Stephen

    Brad Edwards

    August 21, 2014 at 10:05 pm

    • forgot to turn on the notify :-)

      Brad Edwards

      August 21, 2014 at 10:07 pm

    • You might have a look at this blog article: on a better way to handle sessions.


      August 22, 2014 at 3:54 am

    • When you run payment entry you can set an object key. The parameter values are:

      ‘ ObjectKey: A set of parameter name and value pairs concatenated as
      ‘ by the subroutines defined in PropertyString.bas.
      ‘ Possible parameters are:
      ‘ Name Possible Value Meaning
      ‘ —————————————————————————–
      ‘ “BATCH” “1”..”999999999″ The number of the batch to be opened.
      ‘ “NEW” A new batch is to be inserted and opened.
      ‘ “ENTRY” “1”..”9999999″ The number of the entry to be opened
      ‘ Used only if the parameter “BATCH” is
      ‘ given and in range of “1”..”999999999″.
      ‘ “SKIPBATCHWARNING” “TRUE” Suppress any batch readonly/warning messages
      ‘ on load of the batch passed in.
      ‘ “FALSE” Ignore this parameter
      ‘ “MODE” “1” Simulates inquiry mode even if user has edit rights.
      ‘ “0” Ignore this parameter.


      August 22, 2014 at 3:52 am

  49. Hi Stephen,

    So here is my code to open the Payment Entry screen in my non-sdk c# .net app.

    String strCodebase = “”;
    String strObjectHandle = “”;
    String strClsId = “”;

    this.sageSession.CreateObjectHandle(“AP3100”, “”, out strObjectHandle, out strClsId, out strCodebase);

    ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
    var path = this.sageSession.Application.ProgramsPathOnServer;
    startInfo.WorkingDirectory = Directory.GetDirectoryRoot(path);
    startInfo.FileName = Path.Combine(path, @”runtime\a4wContainerXP.exe”);
    String args = String.Format(“/clsid:{0} /codebase:\”{1}\” /objecthandle:{2}”, strClsId, strCodebase, strObjectHandle);
    startInfo.Arguments = args;
    startInfo.UseShellExecute = false;


    How do I set this objectkey. I see off of the sageSession object where you can get GetObjectKey but no place to set it. Could you possibly give me an example based on my current code where you would set the objectkey to open up the particular batch for a payment entry? I’ll keep searching on the wiki site but so far I’m not finding much. Thanks Stephen :-)

    Brad Edwards

    August 22, 2014 at 12:51 pm

    • nevermind Stephen. I see where you can set the object key in the CreateObjectHandle method and I was able to set the Batch # so that works great. You mentioned the PropertyString.bas in order to determine the options you can set. Where is this file at? Thanks Stephen.

      Brad Edwards

      August 22, 2014 at 1:06 pm

  50. Hi Stephen, I am trying to program some setup screens using c#. Is there an existing way to make sequence and ordered header detail repositories stateless. Thanks


    August 30, 2014 at 1:35 pm

    • Not specifically. You would have to manage this yourself.


      August 30, 2014 at 5:59 pm

  51. Hi Stephen,

    Not sure if you’ll be able to answer my question but just thought I’d leave a comment as I cannot find what I’m looking for on the web so far.

    A client asked us if it’s possible to integrate Sage Evolution with their website, so that stock values of the products are updated whenever a user purchases any product. The website is built on a WordPress using WooCommerce. Is WooCommerce SagePay extension enough to integrate Sage Evolution and WordPress or do we need to use something like SData to be able to update the products data?

    If both options cannot help in this situation is there any other way to tackle this?




    September 15, 2014 at 4:01 pm

    • Sorry, but I know very little about Sage Evolution. I think you will need to contact their tech support to find out the best person to talk to. I imagine you are trying to communicate from the cloud to an on-premise installed Sage Evolution, which would then depend on whether they have a web server type component for such integrations or if you need to provide this yourself.


      September 15, 2014 at 4:14 pm

      • No problem, thanks for your reply. And yes that’s basically the idea of what we’re trying to do.

        I’ll be contacting Sage Evolution and see if I can get any information.

        Thanks again for your help :)


        September 15, 2014 at 4:34 pm

  52. Hello,

    I’m having a weird issue with Sage Accpac 200 Version 6.0A on Windows 7

    The software installed fine and I can log on to the system. However when trying to enter any module (E.g IC-I/C Items-Items), the screen doesn’t load at all. I will have a small dialog box named Sage Accpac and a moving bar that keeps restarting… but the UI will not load at all. And I cannot close it normally, i have to end it through task manager.

    Thanks very much.


    James Hung

    October 14, 2014 at 6:20 am

    • Some times this means controls didn’t register properly during installation. Running the Regacc program (located in the runtime folder) will often fix this. If it doesn’t try running Accpac Spy (or COM Spy) on the AccpacSession to see if this gives you more information.


      October 14, 2014 at 3:35 pm

  53. Hi Steve,

    Hope you are doing good.

    Clients environment:
    Sage Accpac 500 ERP – ver 6.0
    Pervasive SQL version 10
    MS Windows 2008

    am getting an issue when i install & activate a custom application new build in client’s computer.

    The issue is — the app build is installed and activated without any issues. however, the tables are not created for the view objects. When i try to open an UI of the app. It gives view object error. I then installed SDK and when i open the view in view tester, I see a strange below error

    “This app has failed to start because MSVCRTD.dll was not found.
    Re-installing the application may fix this problem.”

    Please help me out to get rid of this error and create the views for the custom app.



    November 19, 2014 at 5:50 am

    • This means you have a debug build of something. Are you doing custom development? If so you need to either do a release build or install the debug version of the C runtime.


      November 19, 2014 at 3:50 pm

      • If you are using Visual Studio, usually you can choose to do either a release build or a debug build. The debug build leaves out some optimizations and includes extra information. This makes it easier to single step through your code in the debugger. In release build, this is left out and more optimizations are applied to the code. Similarly there are two versions of the C runtime, one better for debugging and the other optimized for release. Note that unless you build with the same version of Visual Studio 2005 that we use, you may have to install the correct C runttime for your DLLs anyway (there is a redistributable install included with Visual Studio).


        November 19, 2014 at 5:03 pm

      • Thank you Steve for the response.

        Yes am doing a custom development. am sorry, what do you mean by a release build? do you mean the .pdb files creating while making view objects as debug version

        looking forward to your reply


        November 19, 2014 at 4:56 pm

  54. Hi Steve,

    you might be right because when i delivered a build earlier (5.6.15) to this one (5.6.16) I believe the environment was Visual Studio 6 it used VC++ and for the build 5.6.16 I have to use the environment Visual Studio 2008. do you think this is causing the error

    “This app has failed to start because MSVCRTD.dll was not found.
    Re-installing the application may fix this problem.”

    However, before this error, after activating the app, when i try to open an UI i get error invalid view ..

    Do i need to change my dev environment to Visual studio 6? OR is there a way i will get the correct C runtime files?

    I am not using visual studio 2008 to make the build. I only use it to create view objects .dlls, VB6 to make .ocx files. ViewCreate() works without an error however, a corresponding table is not created in the Pervasive database.

    Looking forward to your reply.



    November 20, 2014 at 6:33 pm

    • There is a redistributable folder under the VC folder in Visual Studio where you can get the runtime to install on your customer’s computer.


      November 21, 2014 at 5:34 pm

      • Steve,

        Here is your answer to my question. I will find the correct c runtime files and distribute it to customer.



        June 18, 2015 at 8:33 am

      • Steve,

        BTW, i didn’t find the redistributable folder in the Visual studio 6 and i have decided to compile my program using VS 2005 please let me know the exact version of Visual studio 2005 the .Net framework Sage uses to build view objects so that i will also build my view objects. I don’t have to install the redistributable once again in customer place.

        Looking forward to your reply.



        June 25, 2015 at 6:01 pm

  55. Hi Steve

    I’m using SDATA services semi-successfully on ERP 300..
    Please can you provide an example of using either the /oeShipments/$service/ShipmentFromOneOrder or /oeShipmentShipAll service?

    I keep hitting “class not found” errors on pretty much all services…as if they were never implemented?


    January 14, 2015 at 10:22 am

  56. Hello Steve,
    I have a simple question, how can I find credit available for a customer. I need a custom report and list a group of customers with their credit limit and credit available .



    January 15, 2015 at 6:13 am

    • Use the ARCBAL View (AR0160), this calculates all sorts of things around credit limits for you.


      January 20, 2015 at 3:22 am

  57. Hi steve,

    Wish this new year 2015 begins with all 360 degree sunshine of health & wealth to you.

    I am upgrading some of my programs (developed using SDK) to 2014 version of Sage 300 ERP. However, i get an error when i change the version from 56A to 2014 in grp.txt file header. Whenever i compile (make) the folder eng/resource i get a warning & an error

    1. Warning: LINK : warning LNK4044: unrecognized option “manifest:no”; ignored

    2. Error: line(11): Invalid version specification.

    How to overcome this error? is there a workaround or am i doing something wrong?

    Looking forward to your reply,


    Below is the result in error redirected file

    cl -W3 -nologo -E -I. -IC:\Proj\CU2014\BUILD32\INCLUDE -IC:\Proj\CU2014\BUILD32\GEN -IC:\Proj\CU2014\BUILD32\OBJ CUENG.RC >C:\Proj\CU2014\BUILD32\OBJ\CUENG.PP
    rc -r C:\Proj\CU2014\BUILD32\OBJ\CUENG.PP
    del C:\Proj\CU2014\BUILD32\OBJ\CUENG.PP
    copy C:\Proj\CU2014\BUILD32\OBJ\CUENG.RES C:\Proj\CU2014\BUILD32\OBJ\CU2014ENG.RES
    1 file(s) copied.
    link -nologo -incremental:no -machine:iX86 -subsystem:windows -dll -heap:0 -map:C:\Proj\CU2014\BUILD32\CODMAP\CU2014ENG.MAP -noentry -manifest:no C:\Proj\CU2014\BUILD32\OBJ\CU2014ENG.RES -out:C:\Proj\CU2014\BUILD32\RUNTIME\ENG\CU2014ENG.DLL oldnames.lib shell32.lib gdi32.lib kernel32.lib user32.lib comdlg32.lib advapi32.lib a4wapi.lib a4wmtr.lib a4wroto.lib a4wrv.lib xapi32.lib a4wmac.lib a4wprgt.lib a4wrpt.lib a4wstat.lib cato3dat.lib cato3nbr.lib cato3tim.lib cabl3.lib
    LINK : warning LNK4044: unrecognized option “manifest:no”; ignored

    Group Resource Compiler Version 1.2
    Copyright (c) 1992-2008 Sage Software, Inc. All rights reserved.

    line(11): Invalid version specification.


    January 20, 2015 at 5:54 am

    • FYI: Is there a new SDK released to develop in Sage 300 ERP version 2014? I am using SDK version 60A to upgrade.


      January 20, 2015 at 5:55 am

  58. Hi Stephen,

    I’m modifying the OE Entry screen in CRM (the integrated one) and I added a location text box in order to update the location on the order header. That works great, but instead of just doing a text box I would like to add the icLocationFinder widget, but when I do it gives me this error “Widget orders_LOCATION specifies a datasourceID icLocationFinder that does not exist or is not a data provider.” What am I missing. Surely the datasource is there because it’s used in the oe detail grid. Is it possible to access the location finder in the header? Thanks Stephen :-)

    Brad Edwards

    January 22, 2015 at 2:16 am

  59. Stephen,

    I have been working with Sage 300 ERP for abut 13 years and have come across an issue that has me stumped. All of a sudden I have a user who is unable to import orders from SQL. This is what the cryptic RVSPY renders… Any ideas. (“Failed to Insert Record”) has been working for years!

    [1924.7ff.186c] OE0740: OETERMO [08:43:45.32].Fetch(view=0x0CFBB99C)
    [1924.7ff.186c] OE0520: OEORDH [08:43:45.32].Get(view=0x0E01C4F4, field=1, size=10)
    [1924.7ff.186c] 0 2147841}
    [1924.7ff.186c] 0 <==[08:43:45.34;t=15;ovh=15] {}
    [1924.7ff.186c] OE0740: OETERMO [08:43:45.34].Get(view=0x0CFBB99C, field=6, size=10)
    [1924.7ff.186c] 0 0}
    [1924.7ff.186c] OE0740: OETERMO [08:43:45.34].Fetch(view=0x0CFBB99C)
    [1924.7ff.186c] 1 <==[08:43:45.34;t=0;ovh=0] {**NO-MORE-DATA**}
    [1924.0.186c] AR0160: ARCBAL [08:43:45.35].Load
    [1924.0.186c] AR0160: ARCBAL [08:43:45.35].VersionTemplate()
    [1924.7ff.186c] 6666 <==[08:43:45.35;t=9266;ovh=9110] {**ERROR**}

    Ed Dewsnap

    March 27, 2015 at 1:47 pm

    • The error code 6666 is a verify failed error, this could be something to do with the document number or document type. It can also be trying to do things like a ship all when there aren’t any detail lines. Since it happened right after some calls to ARCBAL perhaps the customer is over their credit limit. or from the previous OETERMO calls, perhaps a required optional field is missing.


      March 27, 2015 at 3:44 pm

  60. Hi Steve,

    Hope things are going good. I read your article about drone. This is something amazing.

    I have a question for you. Need your help.

    am trying to customize the Internal usage where i am trying to show the stock on hand, on PO, on SO similar to OE Order entry.

    I have placed a datasource control for adsICLOCQT – IC0374. To activate the datasource at runtime I need to set the DBLink. I see that Accpac UI control expose property called UIDBLinks however, i am unable to get the DBLink (company) to activate the datasource adsICLOCQT – IC0374. getting the error

    “Object doesn’t support is property or method”

    Not sure where i am going wrong. here is the code snippet.

    ‘ Code snippet

    Option Explicit

    Private WithEvents mIC3530 As VBControlExtender
    Private mDBLink As AccpacDBLink

    Private Sub Form_Load()

    Set mIC3530 = Me.Controls.Add(“ACCPACIC3530.ACCPACIC3530UICtrl”, “mIC3530″)
    Me.Caption = mIC3530.object.CompanyID & ” – ” & “Customized I/C Internal Usage Entry”
    Me.Icon = mIC3530.object.uiicon
    Set mDBLink = mIC3530.object.uidblinks(0).GetDBLink
    mIC3530.Visible = True

    End Sub

    Looking forward to your help.



    April 29, 2015 at 5:33 am

  61. Hi Steve,

    I am trying to upgrade one of my custom program to Sage 300 ERP 6.2a version (2014)

    I compiled all of the program files and views installed in Windows 8 64bit Operating system.
    When i try to activate the program i get an error saying invalid view id (this is the superview i use for activation) which i am able manually activate hacking CSAPP table.

    Is there anyting i am missing in activation program?

    Please help looking forward to your reply.



    June 9, 2015 at 4:43 pm

    • You could try runing RVSpy to see if it tells you anything. The View has to have roto id XX0000 where XX is your two letter program id. Otherwise make sure the view is copied to your new XXVVV folder.


      June 9, 2015 at 8:47 pm

      • Usually if you are using some sort of common library, it comes with an msi file or something that you can run from you install program to get the files copied to the correct place. A common case is the C runtime where where you need to exactly match the version of the C compiler we use or you must install the version that you use.


        June 15, 2015 at 5:31 pm

      • To answer your question the activation program id AccpacCU0000 and the view’s roto id is CU0100 (CU is the program id) The view dll cuinit.dll is copied to XXVVV folder (CU62a)

        When installing the custom program the below things are done using Inno Setup
        1. all the build32\runtime files are copied (.ocx, view .dlls, lang dlls) are copied as is in the same structure to Accpac programs folder CU62A
        2. The OCX files are registered

        However, I manually registered the .ocx files by opening the command prompt as adminstrator user.

        i getting the error in Activating the custom app “Invalid view id CU0100″ the view cannot be identified or found” ..


        June 15, 2015 at 5:58 pm

      • Steve,

        I use Inno setup program to make the setup build of my app. I guess the error is due to come common libraries that the app use is a 32bit and when the app is installed in 64bit OS i get the error. should i copy the common files in SysWoW64 folder if yes how to figure out what are the common files that i need to copy to SysWow64 folder.

        Please let me know how to install my app in a 64bit OS



        June 15, 2015 at 5:25 pm

      • I would try loading this view using the View Tester (one of the SDK utilities). If it won’t load it might be missing a dependent library perhaps. Try running Visual Studio’s dumpbin utility on your dll to ensure its possible to open it. If you need to debug this you can write a simple C command line program that just calls LoadLibrary on your View DLL. If the DLL loads ok, perhaps there is something wrong with your roto file, perhaps the view isn’t specified there. Try loading it with ViewTester (in the SDK tools).


        June 16, 2015 at 8:33 pm

      • Thanks Steve for the feedback.

        I have tested the views in View Tester. All the views are created and it works. (in 32bit OS, Windows 7). When i make a build setup and installed in client’s machine, the program gives the error “Error occurred when opening view , Error is not a valid view ID, Error occurred when activating Sage 300 ERP datasource.

        Now, i removed CU0100 which is a superview and wrote a VB EXE to create views using CreateDataStructure function first inserting an entry in CSAPP table and then creating other views. The application activated. However, when a program/function in the app is launched getting the same error saying “Error occurred when opening view , Error is not a valid view ID, Error occurred when activating Sage 300 ERP datasource.
        Where CU0150 is a setup options view object.

        In Clients prod environment – Windows 8 64bit OS. is there anything needs to done specific to the environment?

        Looking forward to your feedback help in this regards.



        June 17, 2015 at 5:33 pm

      • Usually when it works on the developer’s machine and not the clients machine it is because it somehow depends on something installed by Visual Studio. Some usual causes are building debug, and then the client not having debug versions of the C runtime. It might be worth taking the correct release or debug version of the C runtime from the redistributable folder under your visual studio and trying to install that on the clients machine.


        June 17, 2015 at 8:46 pm

    • Steve, Thank you for the feedback. Let me take the c run-time files from my dev machine and distribute it via the setup program. But, am not sure what are the runtime files and where should i look for those files. If you can help on this that would be great !!
      Anyways, i shall keep you update.
      thanks for your time Steve.



      June 18, 2015 at 8:09 am

  62. Hello,

    I have a Crystal Report that I need some help with customizing in Sage 300 ERP 2014. We are looking to automate Point of Sales reports for a specific vendor and I have all the columns except a few I don’t know how to get. One is subrtacting VENDCOST from UNITCOST and multiplying this by QTY. This gives us our rebate cost. Also I have 6 customers that have their own quote number. Is there a way to print this on the output based on the customer? For example Customer1 is 12345B and Customer2 is 67890C.


    June 10, 2015 at 2:54 am

  63. Steve,

    I am trying to build (compile) View objects in VC ++ 2005 so i installed VS 2005 (visual Studio 8) VC ++ express edition.
    I couldn’t able to see folders MFC\bin & ATL\lib to define them in environment variables Lib & Bin.

    however, i could able to see folder Program Files(98)\Microsoft visual studio 8\VC\bin and Program Files(98)\Microsoft visual studio 8\VC\Lib.

    Do i need to do something to bring in these folders to make the build view objects or the files in MFC\bin and ATL\Lib are available in VC\Bin and VC\Lib

    please help. Looking forward to your reply.



    June 26, 2015 at 6:03 am

  64. steve,

    I tried the below to overcome the view object error that i get. Error occurred when opening view , Error is not a valid view ID, Error occurred when activating Sage 300 ERP datasource.

    1. Unable to copy the redistributable files in the neither syswow64 nor to system32. I am getting access denied error.
    2. Thought would install Visual studio 2005 as Sage 300 ERP view objects is compiled using this version of VC++ and sage 300 ERP would have the C++ runtime files Installed already in the customer machine. However, after installing the Visual studio 8 VC ++ 2005 when i compile the views i get the error “nmake fatal error u1077 return code ‘0x2′”

    Unable to proceed further. Please advise where i am going wrong.

    looking forward to your reply.



    June 26, 2015 at 5:38 pm

  65. Steve,

    I am trying to compile and build my program view objects in VS 2005 C++
    Do i need to make any changes in the existing view C files. Please let me know because after installing VS 2005 VC++ the program files folder didn’t have the folders MFC and ATL and when i compile the views am getting errors like the below

    NMAKE fatal error: U1077 “0x2 return code”

    Please advise on how to rectify these errors



    June 29, 2015 at 5:19 pm

  66. hello.. website is down and sageNA staff don’t seem to know anything about that site. Can you get it restarted please..

    bkcsfi sfi

    July 1, 2015 at 10:47 pm

  67. Hi Steve,

    Development Environment:
    Windows 7, 32bit, visual Studio 2005 VC++, Accpac & SDK 2014
    MS SQL Server 2008

    Client Environment:
    Windows 8, 64bit, Sage 300 ERP 2014, MS SQL Server 2008

    I am trying to upgrade one of my custom module (Add-on application) from 5.6A to 6.2A. I compiled my views (accpac business objects) in Visual Studio 2005 VC++

    When i deploy and activate the application i get the error “Error occurred when opening view . However, if install Visual Studio 2005 VC++ component, the application activated and the view objects are created and opened without any issues. Unfortunately, i am not entitled to install Visual studio VC++ 2005 at client environment.

    Below steps taken to fix didn’t help.
    1. Installed Visual Studio 2005 VC++ redistributable pack x86.
    2. copied msvcrtd.dll and msvcrt80.dll into syswow64 folder.
    3. Copied VC++ redistributable files manually into program files\Sage Accpac\aavvv folder.

    Hence, my questions are:
    1. I guess Sage Accpac 2014 uses Visual Studio 2005 to build its views (Accpac Business Objects). Please confirm.
    2. If answer to 1 is yes i built the views using Visual Studio VC++ 2005, why am i getting this error?
    3. Do I need to install or copy any other files in addition to visual studio VC++ 2005 redistributable pack x86? If yes, Please let me know what are the other files that needs to be installed/copied to overcome the issue.
    4. Is there a place where i can download the set of runtime files that needs to be installed?

    Looking forward to a fix for this issue.

    Please let me know if any further information is required to understand the issue.



    July 2, 2015 at 6:04 pm

  68. Hi Sir, I am running an old version of AccPac ver 4.0A, having this error earlier processing was not completed, I am not programmer and the accounting left the company I do not have the user and paswword for ADMIN, what can I do ?? thanks a lot

    Ramon Tuco

    July 16, 2015 at 7:00 pm

    • Your business partner should be able to help you with this.


      July 16, 2015 at 7:54 pm

      • Hi Smith,

        I am trying to create OE Shipment as well as OE Invoice using java SDK. Is it possible to get any sample code to proceed with ?

        I have tried generating VBA Macro and converting same in java but does not work properly.

        I am really in a big trouble and need your help. Kindly see to it.


        July 22, 2015 at 11:16 am

    • Did you check out this article: It talks about how to use the Java API.


      July 22, 2015 at 2:53 pm

      • Three are a number of ways to create a shipment. If you know the order you want to ship you can get the business logic to do all the work. I only have VBA code for this, but perhaps you can adapt it:

        OESHI1headerFields(“ORDNUMBER”).Value = orderYouWantToShip

        OESHI1headerFields(“SHIP1ORDER”).Value = “1” ‘

        OESHI1headerFields(“GOSHIPALL”).PutWithoutVerification (“1”) ‘ Perform Ship All

        OESHI1headerFields(“GOCHKCRDT”).Value = “1” ‘



        August 2, 2015 at 12:04 am

      • Yes. I tried the code in the above article. It creates Invoice in AR module whereas I want to create Shipment as well as Invoice in OE Module. I have tried recording VBA macro and then converting same in Java.

        Kindly let me know what is wrong with this code.

        Below is the code Snippet :

        public void createOEInvoice(Program program)
        View OESHI1header = new View(program, “OE0692”);

        View OESHI1detail1 = new View(program, “OE0691”);
        View OESHI1detail2 = new View(program, “OE0745”);
        View OESHI1detail3 = new View(program, “OE0190”);
        View OESHI1detail4 = new View(program, “OE0694”);
        View OESHI1detail5 = new View(program, “OE0704”);
        View OESHI1detail6 = new View(program, “OE0708”);
        View OESHI1detail7 = new View(program, “OE0709”);
        View OESHI1detail8 = new View(program, “OE0702”);
        View OESHI1detail9 = new View(program, “OE0703”);
        View OESHI1detail10 = new View(program, “OE0706”);
        View OESHI1detail11 = new View(program, “OE0707”);
        View OESHI1detail12 = new View(program, “OE0705”);

        try {
        OESHI1header.compose(OESHI1detail1, null, OESHI1detail3, OESHI1detail2, OESHI1detail4, OESHI1detail5);
        OESHI1detail1.compose(OESHI1header, null, OESHI1detail8, OESHI1detail12, OESHI1detail9, OESHI1detail7, OESHI1detail6);
        OESHI1detail3.compose(OESHI1header, OESHI1detail1);
        OESHI1detail6.compose(OESHI1detail1, null);
        OESHI1detail7.compose(OESHI1detail1, null);
        OESHI1detail9.compose(OESHI1detail1, OESHI1detail10, null, OESHI1detail11);
        OESHI1detail10.compose(OESHI1detail9, null);
        OESHI1detail11.compose(OESHI1detail9, null);

        OESHI1header.set(“DRIVENBYUI”, “1”);
        OESHI1detail1.set(“DRIVENBYUI”, “1”);
        //OESHI1header.init(); /* No Such init() method in java API */
        OESHI1header.set(“PROCESSCMD”, “1”);

        OESHI1header.set(“CUSTOMER”, “1100”);
        OESHI1header.set(“PROCESSCMD”, “1”);


        OESHI1detail1.set(“ITEM”, “A1-656/0”);
        OESHI1detail1.set(“PROCESSCMD”, “1”);


        OESHI1detail1.browse(null, true); // isAscending = True

        OESHI1detail1.set(“LINENUM”, “-1”);;

        OESHI1detail1.set(“QTYSHIPPED”, “2.0000”);

        OESHI1detail1.set(“LINENUM”, “-1”);;

        OESHI1header.set(“CREATEINV”, “1”);
        OESHI1header.set(“DESC”, “Creating Invoice From Java API”);
        OESHI1header.set(“REFERENCE”, “This is a test reference…”);
        OESHI1header.set(“PONUMBER”, “1”);
        OESHI1header.set(“OECOMMAND”, “4”);

        catch(Exception e)
        int count = program.getErrors().getCount();
        if ( 0 == count )
        for ( int i = 0; i < count; i++ )




        July 31, 2015 at 2:04 pm

      • Dear Smith,

        Tried creating Shipment without starting from an order. I have referred same VBA code you have shared (Last Code Snippet).

        It gives an error : Record already exists.

        Kindly help!!!


        August 3, 2015 at 2:08 pm

      • Here is a slightly more complicated version if VBA where we ship a order and then adjust the quantity shipped of the details and add some optional fields:

        OESHI1headerFields(“ORDNUMBER”).Value = orderWeWantToShip

        OESHI1headerFields(“SHIP1ORDER”).Value = “1” ‘

        OESHI1detail1Fields(“LINENUM”).Value = 0
        OESHI1detail1.Browse “”, True

        OESHI1detail1Fields(“QTYSHIPPED”).Value = “3.0000” ‘ Quantity Shipped

        ‘ Change the COLOR optional field of the detail.
        OESHI1detail7Fields(“OPTFIELD”).Value = “COLOR” ‘ Optional Field
        If OESHI1detail7.Read = True Then
        OESHI1detail7Fields(“VALIFTEXT”).Value = “Orange” ‘ Text Value
        End If



        OESHI1detail1Fields(“QTYSHIPPED”).Value = “2.0000” ‘ Quantity Shipped


        ‘ Update the CLERK optional field in the Header
        OESHI1detail6Fields(“OPTFIELD”).Value = “CLERK” ‘ Optional Field
        If OESHI1detail6.Read = True Then
        OESHI1detail6Fields(“VALIFTEXT”).Value = OESHI1detail6Fields(“VALIFTEXT”).Value + ” Doris ” + CStr(Date) + ” ” + CStr(Time) ‘ Text Value
        End If

        OESHI1headerFields(“GOCHKCRDT”).Value = “1” ‘


        August 2, 2015 at 12:06 am

      • Here is an example where we create a shipment without starting from an order:


        OESHI1headerFields(“CUSTOMER”).Value = “1200” ‘ Customer Number

        OESHI1detail1.RecordGenerate False

        OESHI1detail1Fields(“ITEM”).Value = “A1-103/0” ‘ Item
        OESHI1detail1Fields(“QTYSHIPPED”).Value = “1.0000” ‘ Quantity Shipped


        lastLine = OESHI1detail1Fields(“LINENUM”).Value
        OESHI1detail1Fields(“LINENUM”).PutWithoutVerification (CStr(lastLine)) ‘ Line Number
        OESHI1detail1.RecordGenerate False

        OESHI1detail1Fields(“ITEM”).Value = “A1-105/0” ‘ Item
        OESHI1detail1Fields(“QTYSHIPPED”).Value = “3.0000” ‘ Quantity Shipped
        OESHI1detail1Fields(“LINENUM”).PutWithoutVerification (“-1”) ‘ Line Number


        OESHI1headerFields(“GOCHKCRDT”).Value = “1” ‘


        August 2, 2015 at 12:07 am

      • Done!!! Thank you very much Sir. Really Appreciate it.

        There is one more question I have :

        How do I make transactions (Order, Shipment, Invoice creation ) in Sage ERP Server from a separate client machine using JAVA SDK. So far I am able to do these transaction on the same machine.


        August 3, 2015 at 4:03 pm

  69. Try just admin as the password. Maybe he hasn’t changed it. It’s 4.0A really old? If it is you should upgrade.,


    July 16, 2015 at 8:10 pm

  70. Hi Smith,

    I am facing a problem while creating Shipment using Sage Java API.

    Problem : Record Already Exists Error – Sage 300 ERP –
    When I submitted shipment at the very first time, it got submmitted and I can see it in Sage ERP Shipment Interface. I tried submitting the same data second time and it gave me Record Already Exists Error.

    I am not able to go ahead only because of this problem. Kindly help!!!

    Shyam Yadav

    September 17, 2015 at 10:33 pm

  71. Hi,

    I am having a few problem with the installation of Sage 300 ERP 2014.
    The problem really is the Web Interface.

    ms edge.png – this is the message I got when I enter the sage web interface in Microsoft Edge on windows 10.
    ms edge2.png – this is how the page look after clicking ok.

    I can click on the Help, but nothing happen. I can’t click on the sign on.
    So I loaded the web interface into IE on windows 10, and set it in Compatible mode.
    Ie.png – this is the site in IE.

    I can’t click on the help, but I can click on the Sign-on, but this is the message I got.

    My setup:
    Domain = testcwc.local
    OS = Windows Server 2016 TP3
    SQL = Microsoft SQL Server 2016 TP2.2
    ERP = Sage 300 ERP 2014

    FW-01 = ClearOS 6.6, firewall/gateway, 2gb, 80gb,
    AD-01 = OS, AD/DNS/DHCP, 4gb, 24GB,
    SQL-01 = OS+SQL,4gb, 25gb, 30gb,
    Accpac-01 = OS+ERP, 4gb, 25gb, 40gb,
    Accpac-02 = OS+!!!, 4gb, 30gb, (will be the portal server)
    Wrk-01 = Windows 10 pro + Microsoft Edge + IE 11 (dhcp)

    Accpac-01 (shares)
    D:\Sage300ERP\ (everyone – full access)

    Do you have any videos on installing/setup/configuring Sage 300 ERP 2014 Web Interface & Portal ?


    fbifido (@fbifido)

    October 2, 2015 at 10:42 pm

    • The Web Desktop won’t support Edge. It runs ActiveX controls to run the screens so it can only work in IE. I think the Portal should run in Edge, but it won’t have been tested in the 2014 release, the only note will be that it won’t be able to run VB screens from Edge.


      October 2, 2015 at 11:08 pm

    • I don’t have any videos on installation, but check out Sage University, they may have something.


      October 2, 2015 at 11:09 pm

  72. Hi Steve,

    Need your help. I am not sure where i am going wrong.

    I have customized I/C Internal usage UI using VBController object launching the internal usage OCX control at run time. All works fine. But, When user from the custom UI launches the Transaction listing report UI it launches good. when user clicks print, the report is not launching it hangs with the below error

    “CustomInternalUsage.exe stopped working
    Windows can check online for a solution to the problem”

    => Check online for a solution and close the program
    => Close the program
    => Debug the program.


    Sage 300 ERP – 2012
    Windows 7 32 bit OS

    The custom program is present on the server and a shortcut is created in Accpac desktop. The program is launched from workstation.

    What would be the cause of the error that crashes the custom program.

    However, in standard Internal usage UI the Transaction listing report is launched from the menu and printed/previewed without any error.

    Please advise.



    October 20, 2015 at 5:18 pm

    • Can’t really say. Could be something with the Crystal Runtime. Perhaps check that you have enough free memory (or swap space) and enough disk space for the temp folder. Otherwise you might need to check for Service Packs or hotfixes, but off hand I haven’t heard of this one before.


      October 22, 2015 at 4:10 am

  73. Hi Steve,

    Currently, one of customer using Sage 300 6.2 PU3 and have problem in AR receipt batch list that one batch when we post it’s show status “Post In Progress” and have message as below: (Posted Receipt. Attempt to modify a different record than was retrieved). Please help advise!


    October 28, 2015 at 4:34 am

    • Sounds like there is some sort of bad data in this batch. Perhaps run RVSpy to see what it doesn’t like. You could also try deleting the batch, then re-enter it. Otherwise you might need to contact support.


      October 28, 2015 at 3:31 pm

      • I have run RVSpy a whole day but it’s not finish cos this customer have very big data till 140 GB, and already try delete batch and post it’s again but it’s still error. In the same time i already scan ISAM to check *ism but it’s still not finish for spend 1 day as well. I think this data is corrupted. Appreciate for your feedback on this issue soonest.


        October 31, 2015 at 3:03 am

  74. Hi Steve,

    We are new to the sage ecosystem and your blogs have been really useful for us to pick up some integration concepts. We wanted to share this particular issue with you, and you probably were speaking on related topic in one of your blogs. We are integrating a mobile app with Sage 300 and posting invoice transactions using Sages Java SDK. Now this requires us to deploy the integration code on the same machine on which Sage 300 is deployed. We tried doing this using an additional Tomcat server and then eventually deploying the integration code on Sages Tomcat server. We see that the tomcat instance crashes with a MSVCR30.dll which we suspect is due to a 32 bit JVM running on 64 Windows Server. Now Sage 300 by default installs a 32 bit JVM and we cant change that I suppose. How do we resolve or work around this problem hence. have you seen any example in your experience where sage tomcat services crash due to such an issue. Would love to hear from you on this.



    November 6, 2015 at 12:04 pm

    • Sage 300 is an 32-Bit application, so when the Java API transitions to the C-DLL part, it has to do this as a 32-Bit application. One problem we’ve seen is to not allocate too much memory to the Java Heap in Tomcat, you need to leave some of the 32-Bit address space for the non-Java components. Perhaps ensure your Java heap isn’t over 1 Gig, so there is memory left over for non-Java components.


      November 6, 2015 at 6:47 pm

      • The java heap is under 1G, however no luck.. We were thinking of deploying an additional 64 bit app server and JVM however since you mention that C-DLL being 32 bit this would also not work – is this correct.


        November 9, 2015 at 6:49 pm

      • That is correct, you can only talk to the Sage 300 DLLs from a 32-Bit process.


        November 9, 2015 at 9:53 pm

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 331 other followers

%d bloggers like this: