Stephen Smith's Blog

Musings on Machine Learning…


with 272 comments

I’m a retired Software Architect, located in Gibsons, BC, Canada. I’ve been developing software since high school, or way too many years to record. I worked on the Sage 300 line of accounting products for the 23 years before retiring. Since retiring I have pursued Artificial Intelligence programming, earned my Advanced HAM Radio License and enjoy mountain biking, hiking and nature photography. I recently completed my first novel, “Influence” that is available for sale on at See for more info.

Written by smist08

January 18, 2009 at 12:19 am

272 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

      • I am getting the “database connector crdb_p2bpipe.dll could not be loaded” error when I try and modify one of the Crystal reports, too.

        R.J. Dunnill

        October 1, 2018 at 8:16 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

    • 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

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


      August 22, 2014 at 3:54 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

      • 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

      • 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

  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

      • 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

      • 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

      • 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

      • 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

      • 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

      • 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

      • 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

      • 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

  75. Hi Smith,

    I have created a macro for OE Entry using VBA, and have created a shortcut in “Order Entry” directory in the Sage 300 ERP. But, now there are 2 icons, the original and the macro. The question is how I can hide the original icon, without changing the user permission?
    Btw, I’m so sorry to ask you through your “About” page. Is there any forum for such question?



    December 11, 2015 at 2:38 am

  76. Hi Steve

    Iam trying to run the following vba code (where FromCOA is my datasource and FromAcct is a AccpacFieldeditControl)

    AccpacCOMAPI.AccpacSession.Init “”, “XY”, “XY1000”, “61A”
    AccpacCOMAPI.AccpacSession.Open “ADMIN”, “ADMIN”, “SAMINC”, Date, 0, “”

    FromCOA.Session = AccpacSession
    FromCOA.ViewID = “GL0001”
    FromCOA.Active = True

    FromAcct.DataSource = FromCOA
    FromCOA.Browse “”, True
    FromAcct.ViewFinder.Filter = “”
    FromAcct.ViewFinder.DisplayFieldIDs = Array(21, 3)

    It works fine in the first time .
    Now if tried to change the company id and connect to another company

    AccpacCOMAPI.AccpacSession.Init “”, “XY”, “XY1000”, “61A”
    AccpacCOMAPI.AccpacSession.Open “ADMIN”, “ADMIN”, “SAMLTD”, Date, 0, “”

    FromCOA.Active = False

    FromCOA.Session = AccpacSession
    FromCOA.ViewID = “GL0001”
    FromCOA.Active = True

    FromAcct.DataSource = FromCOA
    FromCOA.Browse “”, True
    FromAcct.ViewFinder.Filter = “”
    FromAcct.ViewFinder.DisplayFieldIDs = Array(21, 3)

    the FromCOA.Active = False line gives an error. and i can not bypass it because the session can not be changed while the control is Active.

    Any help will be appreciated.


    December 15, 2015 at 9:03 pm

    • I’m not really sure, but perhaps if you run COMSpy on the Field Edit Control it will give you an idea of what its doing.


      December 16, 2015 at 10:01 pm

      • Thanks , I will try that.


        December 17, 2015 at 3:00 pm

  77. Hi Steve,

    Hope you are doing well.

    I recently upgrade my custom app to 6.1 & 6.2. I noticed that all the accpac standard UI is when opened the windows Task Manager, processes tab displays a4wContainerXP.exe. However, when the UI from my custom app is launched, the processes tab in “Windows Task Manager” displays a4wContainer.exe.

    I am facing an issue with the custom app. In the workstation the custom app is installed by running the Workstation setup as administrator followed by which ran the RegAcc that registered the custom UI files. (ocx) the custom program is developed using VB6.0.

    Whenever the custom UIs are launched it neither give an error nor launches.

    Please advice why it is not launching.

    P.S. The windows login user is also made as Power User.



    February 13, 2016 at 7:04 am

    • You might look at your applications xx.ini file and need something like:


      Check GL’s GL.INI for an example (in the GL62A folder).


      February 14, 2016 at 6:08 am

      • Steve,

        Thanks for the reply.

        Would this fix the issue by launching the custom app UIs for users other than Administrator? The custom app UIs launch when administrator user login however, it didn’t for other users.

        I shall make this entry in xx.ini and give a feedback update.



        February 18, 2016 at 6:01 pm

  78. Hi Stephen

    I had 3 question

    1 – Is there any Web service on Sage 300-v 2014 (SDK) , which we can use them to create / Edit / Save / Post any type of documents, and do you have any document for these web service?
    2 – How can we create / Manage documents ( transaction ) from Custom Web Application in sage 300 ?
    3 – is there any facilities or tools that may help to create documents ( transaction ) using SharePoint ( as a Workflow or ECM )?



    February 15, 2016 at 7:00 pm

  79. HI Stephen,

    We have a site with Sage CRM and Sage 300 ERP integrated. Web Deployment and the Portal are installed. We had a request to remove the “Promote to Order” button in Sage CRM -> Opportunities -> Quotes screen. I followed the instructions to modify Portal XML, and updated the files sagecrmquotesummary.xml and sagecrmquotesummary_uiContent.xml to remove the button “Promote to Order”. I restarted all Services for Sage 300 ERP, and CRM, as well as restart IIS. The button still remained on the screen. Is there anything that I am missing?



    February 17, 2016 at 1:59 pm

    • Not entirely sure. One thing is that you have to restart Tomcat for it to take effect. To be sure you could try restarting your computer. Otherwise I suspect you edited the wrong files.


      February 22, 2016 at 7:24 pm

      • Is there a way to determine which file would need to be edited?


        February 24, 2016 at 12:45 pm

      • It would need to be one of the xml files under C:\Program Files (x86)\Common Files\Sage\Sage 300 ERP\Tomcat\portal\swtServices\uiDefinitions\oe62a\eng (or whichever version you are running).


        February 24, 2016 at 4:58 pm

  80. I have found through trial and error that if you need to get the UI’s working as a non-administrator you need to login to the machine as an administrator and open up command prompt (as administrator) and run regacc. Log out and back in as the user and it should work.


    February 18, 2016 at 6:11 pm

    • That is correct. For the Sage 300 2016 release we do that for you automatically from the installation script.


      February 22, 2016 at 7:22 pm

  81. Hi Stephen,

    Why is it when I log into Sage 300 (SAMINC) and then in my app I use the CreateSession method to get that session, but if I change companies (eg SAMLTD) my app still shows SAMINC. It’s not refreshing the session information. Is there some trick to getting the session to change companies when it’s changed in Sage 300? Thanks man.

    Brad Edwards

    February 21, 2016 at 3:22 pm

    • Not sure I really understand the question. Do you mean you app is running and someone closes the desktop and re-opens it with a different company? This article might be relevant –


      February 22, 2016 at 7:22 pm

      • Stephen,

        No. If I open Sage 300 and login to SAMINC and then I run my app which grabs the open session using CreateSession, when I go to File – Change Company and change it to SAMLTD (so I don’t close out of Sage 300, just change the company), the session that I used in my app does not reflect that change. It still shows SAMINC as the company. Does that make any more sense 🙂 Thanks Stephen.

        Brad Edwards

        February 22, 2016 at 7:26 pm

      • Makes sense. We don’t re-open the screens with the new company, we just do a close and open, so the desktop won’t close if any screens are open. If you follow the procedure in the article I mentioned then the desktop won’t close if your program is open, so it will also force you to close and re-open for the new company.


        February 23, 2016 at 9:29 pm

  82. Hi Stephen,

    A quick question on how to identify to which Sage 300 module does the Serial Number belong.

    Is there any specific logic of how the Serial Numbers are generated for each module? In other words, is it possible to look at a Serial Number and understand to which Sage 300 module does it belong?

    For example, we have noticed that the Serial Numbers for the Optional Fields always has the letters PT, while the Serialized Inventory serial numbers contain SN.

    I would like to know how to identify whether the serial number is for the System Manager or some other module.

    Thanks in advance.


    March 1, 2016 at 2:25 pm

    • The Serial Numbers are owned by the I/C module. So you would look in I/C for all the serial numbers. As far as field labelling, I don’t think there is the consistency in the system to do what you describe. There are fields with names like Serial or SerialNum which are just used for numbering the records in a given table (probably like the optional fields ones). Perhaps have a look at ICXSER (IC0830) which is the serial number master file.


      March 1, 2016 at 11:43 pm

  83. Hi Stephen,

    How do I know which views do I have to compose in order to perform an insert? In the doc I see which one are the related ones, but do I have to compose all of them, and all of the associated ones and so on?

    Egidio Caprino

    March 22, 2016 at 6:02 pm

    • Usually you just need the main header/detail ones. The AOM shows all the possible compositions, but we don’t document anywhere the minimum set. I think the only way to find out is via trial and error. Try the main ones and then see what error messages are returned on the error stack, they will tell you about any missing compositions.


      March 22, 2016 at 6:42 pm

  84. Hi Stephen,
    What is the Key(index) limitation in Accpac view, due to our requirement we have already 14keys, Stil we want to add? can i add? is there any limitation for key count?


    April 13, 2016 at 9:33 am

    • The limitation is still 15 indexes. Now that Sage 300 only supports SQL Server, I suppose they could raise this limit quite a bit since SQL Server 2012 supports 999 indexes per table. But note that having a lot of indexes makes inserts and deletes quite slow. If the indexes are modifiable, this slows updates.


      April 14, 2016 at 4:50 pm

      • Thank You so much Stephen!


        April 15, 2016 at 4:05 am

  85. Hi Steve,

    I am getting this error when i try to create view using view tester in SDK.

    “Database error (operation=CREATE-TABLE, error=102).
    [Microsoft][SQL Server Native client 10.0][SQL Server] Incorrect syntax near ‘_KEY_0’.

    Please let me know what is this error is all about and where i am going wrong in create a Accpac view.

    I am not getting any error messages while building the view.

    Please help.



    April 29, 2016 at 4:06 am

    • hi Krish, I suspect there is problem in your primary key definition. check the .tbl file the field definitions before audit fields. then viewname1.C file 2 places key definitions will be there and no. of segments needs to be given properly


      April 29, 2016 at 4:43 am

    • I would run SQL Trace (or ODBC Trace) to see what the generated SQL statement looks like. This should give a clue as to what has gone wrong. You could inadvertently be using a SQL reserved word or perhaps have a funny character somewhere. You could then further copy/paste the SQL over to management studio to get a better error message as well.


      April 29, 2016 at 8:00 pm

      • Thank you Steve for the hint and help.

        I did SQL Trace and found that the Key constraint name is delimited with a blank space. However, i reviewed the .ptn file and noticed that the below statement is the root cause.

        pppp=”IUPLAT ” ; table name – padded to eight characters

        instead of padded to 8 chars there was only 7 chars.



        May 1, 2016 at 1:25 pm

  86. Hi Arun,

    Thank you for the update.

    However, the key field .tbl file is defined per the standard given in the programmers guide. I don’t see any problem as such in it.

    Please help



    April 29, 2016 at 4:40 pm

  87. Hi Stephen

    We use a third party sales system to feed receipt info to ACCPAC. Couple of days back we did a tax change and now once we export data to ACCPAC using the software we get “Tax class 0 is not in the range of 1 through 10” error message. Can anyone give us an advise please ?


    May 5, 2016 at 7:33 am

    • I would suspect this was being defaulted previously but your changes caused the defaulting to not happen. Or perhaps you added some new master records that you didn’t set a default tax class for.


      May 12, 2016 at 2:55 pm

  88. Hi Stephen. I would very much like to connect with you regarding some information on Sage 300. I am a BI developer and we require some expert knowledge on Sage 300 and it looks like you know your stuff.

    We are looking at building a cash flow report, a report that really only tells you what money as actually been paid out and paid in, the report involves finding out how projects/jobs have been doing with cash flow, and also including cash flow related transactions that might have been done through miscellaneous transactions (that are related to projects, but not through the project module)

    If you can help please could you reply so that we can connect on the phone or if not I could explain more about what we need

    – Clint Grove

    September 14, 2016 at 9:18 am

  89. Hi Steve,

    Greetings for the day !!

    I have an issue for one of my custom work on Sage 300 ERP.

    I am using transaction processing to create & post shipments and also post IC Assemblies in the custom program. Whenever, the custom program is in progress users were unable to use any of the other standard Sage functions/programs until my custom program processing is done.

    Is there any way to overcome this issue. The transaction processing begins during Shipment create & post
    and IC Assemblies Post. If there is any issue during the process, the transaction is rolled back.

    Please suggest a work around or how to handle this issue.

    Looking forward to your response.



    November 20, 2016 at 6:12 pm

    • When a record is updated in a SQL Server transaction it will be locked until that transaction completes or rolls back. Probably you are causing options records (which tend to have the next record number fields) to be locked for the duration of your transaction. I would suggest not creating mega-transactions of this form.


      November 20, 2016 at 7:05 pm

  90. Hi Stephen, I have a customer who uses the Sage CRM Order Entry (Integrated with Sage 300). When they add an item in the details screen by doing a search they want to filter out Inactive products. Is it possible to add some search criteria to the finder screens in the xml files? I’ve been looking but can’t seem to find anything. thanks 🙂

    Brad Edwards

    December 12, 2016 at 3:56 pm

    • Hi Stephen, just checking to see if you had any thoughts on my question above. thanks 🙂

      Brad Edwards

      January 4, 2017 at 3:40 pm

      • I don’t think there is a way to do this. I think your best bet is to enter a product feedback/enhancement request from the help menu.


        January 4, 2017 at 4:33 pm

  91. Is there an easy way to make a crystal report that is a 1 page document to print it twice everytime?

    Bill Olson

    January 6, 2017 at 1:59 am

    • You can certainly do it with a macro via the NumOfCopies property of the report object. I don’t remember if this is saved with the report object from the UI when you save your print preferences or not.


      January 6, 2017 at 2:27 am

      • Could you elaborate on that please?

        Bill Olson

        January 6, 2017 at 2:38 am

      • For using a macro, have a look at this blog posting: When using the print… dialog from any UI, you can save your print settings, so you can remember printing different reports to different printers and such. However I don’t remember if this also remembers the number of copies (I suspect not). You might be able to edit your Cystal Report, perhaps Crystal has a feature to duplicate a page?


        January 6, 2017 at 5:02 pm

  92. Mr. Smith,

    I know you’re retired, and owe me – Mr. bottom of the totem pole, ZERO favors, but I’ve got an itch that I can’t scratch, and I’m hoping you can help me out.

    Do you know which versions of SAGE’s accounting solutions support integration with SDATA?

    I’m evaluating SAGE 50/100/300 US, and I’m needing to both read and push data into the tools.

    I know there is SDK, but I’d rather use an established API than re-invent the wheel.

    I’ve got a client who is driving me insane, and I’ve spoken to literally 30 SAGE reps, and when asked about SDATA, you think I’d insulted their mums instead of asking them about a very important integration tool they supposedly developed and own! 🙂

    I told… random.

    Much love.



    January 9, 2017 at 7:34 pm

  93. Hi Stephen,

    I’m creating a new grid view for the PJC Billing Worksheet Details using DevExpress controls because the customer wants the ability to group by and sort columns. On the out-of-the-box Billing Worksheet Details there is a Drill Down button. is there any way in the api to do this drill down logic easily? In other words if the Module is PM, Document Type is Timecard, Document Number is 000001 is there a way in the api to easily call the PJC Timecard screen for that particular document number? Thanks Stephen!!

    Brad Edwards

    January 18, 2017 at 4:55 pm

    • Probably the only way to determine this is to run RVSpy. Admittedly painful, but at least you can filter out view calls you don’t care about. Beware that doing this can cause bad performance since there won’t be indexes on the things you are grouping or sorting on.


      January 18, 2017 at 8:37 pm

      • Thanks Stephen. I’ll give that a try. In regards to the performance, I’m actually bringing all the data into the grid and it does the grouping/sorting in memory so it’s pretty darn fast 🙂 Thanks.

        Brad Edwards

        January 18, 2017 at 8:52 pm

      • Stephen,
        Where do I find the keys for a particular view? I’m trying open PM2100 (PJC Timecard screen) and I’m passing in “TIMECARDNO=’000001′” as the object key but it doesn’t retrieve the timecard. It opens the screen but it’s a New timecard. Thanks!!

        Brad Edwards

        January 19, 2017 at 5:26 pm

  94. Hi Steve,

    Greetings for the New year

    Getting this below error message when users try to edit a Purchase order or GRN line item quantity to 0 (zero). This is strange as the I/C Option “Allow Negative Inventory” is turned on. However, the Item quantity is edited to 0 zero.

    “ERROR”: Invalid input. Negative inventory levels are not allowed.”

    The above error message happens suddenly today.

    Note: The customer do import from external excel files for receiving GRNs & POs. However, the error is not consistent. Also, we were able to enter new POs & GRNs the issue doesn’t popup.
    DIC has been run for IC & PO the report didn’t seem to show up relative error message.

    please note: I have shared the RVspy of the above error to your email.



    January 22, 2017 at 10:36 pm

    • Sorry Steve, The IC Options “Allow Negative Inventory” is turned Off status.


      January 22, 2017 at 10:37 pm

  95. Hi Steve,

    The RVSPY output is a Greek & Latin to me and i am sure this is will be the same for some of the Sage SDK developers too.

    Is there an article or a way which I could able to read through understand the logic flow of the program/function.?

    Is there any basic technique that would help me understand the function flow of the process under RVSPY?

    All i know is to read the hexa decimal values and convert them to decimal is that is all about RVSPY or anything more?

    If you could outline some basic principles to read through RVSPY output, I will be happy that i know 2 more languages (Greek & Latin) 🙂

    Hope this helps most of our SDK developers as well.



    January 22, 2017 at 10:49 pm

  96. Hi Steve,

    I could able to find the article to RVSPY in this blog itself.

    Here is the link

    Thanks Steve,


    January 22, 2017 at 10:56 pm

  97. Hi Steve,

    Good day!

    I tried to create an integration using shipment in c#, however when I try to run it’s throwing an error “Shipment Detail Serial Number. Invalid view operation requester.”. While in vb it’s running correctly.
    Could you please help me and check what’s the issue. The issue will show in the “SHIP1ORDER”.

    object ship=1;
    object order = “LO0003703”;
    OESHI1headerFields.get_FieldByName(“ORDNUMBER”).set_Value (ref order); OESHI1headerFields.get_FieldByName(“SHIP1ORDER”).set_Value(ref ship);

    Thank you.




    March 1, 2017 at 9:01 am

    • I suspect you need to set the PROCESSCMD to say what you want .Process to do.


      March 1, 2017 at 4:47 pm

  98. Hi Steve,

    Greetings for the day

    I am facing an issue when iam inserting a row in a custom detail view.

    Header view: DSDNTH, Detail view: DSDNTD
    I compose it and trying to insert a row in detail view DSDNTD in view tester. I get the below error message

    “Internal Error. Transaction is not active.”

    I am not sure what is the issue with the detail view. The error is displayed when i Insert row. However, the header row is inserted without error.

    please let me know why is this issue and where is the problem

    Look forward to your response.



    March 14, 2017 at 4:22 pm

    • This might depend on how the third party product “DS” implemented the view protocol. Some third party products don’t follow the view header/detail protocol. You might want to RVSpy on one of their UIs or contact that company for some details.


      March 14, 2017 at 4:45 pm

  99. Hi Steve,
    Good day!
    The below error prompt when click on AR Invoice Entry
    Can’t Create Control: {73B4FBEF-C5E2-4970-94B0-AB729E9B4F74}
    This also happened to AR Receipt Entry, Refund entry and others screen. The AR invoice Batch List are working fine.
    We are using Sage 300 Version 2014. This happened in one of my user PC, other users are ok. I have no issue to run Sage under administrator login, this error will prompt when I login with user account other than administrator.
    I had tried
    1) assign the local admin for the user
    2) uninstall and re-install sage
    3) Run RegAcc using the user account with local admin right
    4) delete user profile from C:\users
    Any advice will be highly appreciated !


    April 13, 2017 at 10:04 am

    • Usually running regacc as admin does the trick. I wonder if this particular user has less rights than the other users. Perhaps they aren’t even allowed to run activeX controls?


      April 13, 2017 at 9:34 pm

  100. Hi Steve – I have a client who has very sporadic issues when trying to run an install from a unc path on the network of Sage 300 Construction and Real Estate…. it gets thru the pre-reqs, then comes up with an error in the background “Err Cannot Access Remote Docs or Acct…”, and a window pops up in front of that:

    The installer cannot access the TIMBERLINE OFFICE folder on the server. Verify that the TIMBERLINE OFFICE folder is shared. Also verify that the following subfolder exists on the server:

    ..\Sage\TIMBERLINE OFFICE\9.5\Documents

    If it does not exist, create it.

    After the Documents subfolder exists and the TIMBERLINE OFFICE folder is shared, locate the TIMBERLINE OFFICE\9.5\Accounting\WinInst subfolder, and then run the installer by clicking install.exe in that subfolder

    This literally causes the computer to be rebuilt – it’s the ONLY way we’ve found to get it to install. It will install on other computers, using the same credentials, going to the same path, etc, but will not work on one computer (until rebuilt)

    I’m stumped – any thoughts?


    April 20, 2017 at 5:04 pm

    • Sorry I worked on the Sage 300 ERP that was previously Accpac. It doesn’t have anything in common with Sage 300 CRE that was previously Timberline. A bit confusing I know. Besides rebuilding, not sure if you can use a drive mapping instead? Also check that the total path isn’t too long, when using UNC you can have problems if it start going over 200 characters (since the total limit is 260).


      April 20, 2017 at 5:22 pm

  101. Hi Smith,

    Good morning,

    Need a quick help

    I am getting the below message when a user other than admin is trying to open one of our custom application UI from workstation.

    “Closing the UI because you are not authorized to access it”

    Any idea what is causing this issue and how to resolve this issue?



    June 6, 2017 at 11:27 am

    • Your custom application UI you need to provide Security rights and access for user, or you can handle in VBA CheckAccessRights function for all users


      June 6, 2017 at 1:30 pm

  102. Thank you Arun. Let me check and give a feedback.



    June 7, 2017 at 5:19 am

  103. Hi Steve,

    A custom program is trying to create a Shipment Entry whenever the Unit price is update I am facing an error message as below this happens randomly. There is only one price list as a whole for all the items which is named as default as such in Inventory. There is no rules set for validation message though in the price list.

    “Invalid input. Unable to update read only field unit price.”

    Also, the above error didn’t appear when the user is “ADMIN” it happens for other users and not always.

    please let us know where is the problem and why i get this error message.



    June 22, 2017 at 7:03 am

    • I think there are 2 unit price fields in the table. Try to use the other field.


      June 22, 2017 at 10:14 am

      • Hi DakoChan,

        The error message didn’t come when logged in as ADMIN Sage user. I guess this has to do something with the security access issue.


        June 22, 2017 at 12:12 pm

      • Hi DakoChan,

        It has to do with the security access issue.

        The logged in user has not got the the “Unit Price Override” access. hence the error message.



        June 23, 2017 at 11:30 am

  104. Hi Steve,


    One of my clients is looking for a customization of Sage standard Order Entry Web UI. Is there an opportunity to customize the standard Order Entry Web UI using the SDK (Web) ?

    If yes, could you please guide me or provide a direction to sample code or documentation if any.

    Thanking you and looking forward to your reply



    July 19, 2017 at 3:42 am

  105. Thank you Steve for the direction.
    I shall post my query in JT’s blog.



    July 20, 2017 at 9:45 am

  106. Hi Steve,

    Would you know any PrintBoss Agent in South Africa? If yes, may I have the contact details. I am not getting response from the Wellspring Team.


    August 2, 2017 at 1:07 pm

    • Not off hand. Perhaps your business partner can help?


      August 2, 2017 at 9:42 pm

  107. Hi Steve,

    Hope this message finds you in good health and cheers !!

    I am customizing AR Invoice Entry getting the Order Number FEC control to populate a different value into it. I am getting the Order No. control using GetControl method as below and am getting the error message “Type Mismatch” error.

    Could you help me to find where i am going wrong?

    Looking forward to your help.


    private withevents fecARIBHordrnbr As AccpacFieldEditControl

    Set fecARIBHordrnbr = UIControls(“afeARIBHordrnbr”) ==> Type Mismatch Error here

    Private Function UIControls(ByVal sKey As String) As Object

    Debug.Print “Private Function UIControls(ByVal sKey As String) As Object”
    Set UIControls = mAR2100.object.UIAppControls(sKey).GetControl

    End Function

    Whereas, the same GetControl works in IC Contract Pricing, When I try to customize the FEC Customer Number with National Accounts no. works I mean I am able to get the FEC and customize…

    Private WithEvents afeCustNo As AccpacFieldEditControl

    Set afeCustNo = UIControls(“fecICCUPR_CustNo”) ===> It works here

    Private Function UIDSControls(ByVal sKey As String) As Object
    Debug.Print “UIDSControls”
    Set UIDSControls = mIC1650.object.UIDSControls(sKey).Fields(0).DataSource
    End Function


    September 25, 2017 at 3:55 am

  108. Hi Steve,

    Hope this message finds you in good health and cheers !!

    I am customizing AR Invoice Entry getting the Order Number FEC control to populate a different value into it. I am getting the Order No. control using GetControl method as below and am getting the error message “Type Mismatch” error.

    Could you help me to find where i am going wrong?

    Looking forward to your help.


    private withevents fecARIBHordrnbr As AccpacFieldEditControl

    Set fecARIBHordrnbr = UIControls(“afeARIBHordrnbr”) ==> Type Mismatch Error here

    Private Function UIControls(ByVal sKey As String) As Object

    Debug.Print “Private Function UIControls(ByVal sKey As String) As Object”
    Set UIControls = mAR2100.object.UIAppControls(sKey).GetControl

    End Function

    Whereas, the same GetControl works in IC Contract Pricing, When I try to customize the FEC Customer Number with National Accounts no. works I mean I am able to get the FEC and customize…

    Private WithEvents afeCustNo As AccpacFieldEditControl

    Set afeCustNo = UIControls(“fecICCUPR_CustNo”) ===> It works here

    Private Function UIControls(ByVal sKey As String) As Object
    Debug.Print “UIControls”
    Set UIControls = mIC1650.object.UIAppControls(sKey).GetControl
    End Function


    September 25, 2017 at 3:58 am

  109. Hi Steve,
    I am facing below issues while posting A/P Invoice, I have imported the data from external source into SAGE

    Business date missing during process of statistics for VSM/VGS/CCS.
    Cannot update Statistics. Transaction date not defined in the Fiscal Calendar Window in Common Services.
    Invoice Batch. Record already exists.
    Error occurred during posting. No error batch created.

    Could you help me to find where I am going wrong?


    December 2, 2017 at 9:49 am

    • How did you import the data? Using the built in import function from a UI? Or did you write a program to do it? I suspect if you used an API to do it then you didn’t follow the View Protocols properly to create the batch.


      December 2, 2017 at 4:31 pm

  110. HI Stephen
    Thank you for your website We are looking to link Sage 300 inventory to Woocommerce. Would you have any suggestions how to go about this project?


    December 19, 2017 at 1:04 pm

    • It depends a bit on what is easy for your application to interface to. If you can utilize a .Net interface then use Sage 300’s .Net API. Usually the best first approach is to do this to say access or adjust inventory levels in Sage 300. If you need notifications from Sage 300 or want to add custom Sage 300 screens then you might want to consider the SDK.


      December 19, 2017 at 5:25 pm

  111. Hi Stephen,
    We are using Sage 200 ver 5.6A and would like to upgrade to Sage 300.
    What would be the steps at a high level for us to upgrade? What are the next major versions that we need to upgrade to before Sage 300?
    Also what is the difference between Sage 300 and Sage 300c?

    Thanks and Regards


    January 19, 2018 at 7:29 pm

    • I think this is just a product renaming. It used to be Sage Accpac 100, 200 and 300 for the three editions, now its Sage 300 Standard, Advanced and Premium. So as long as you upgrade to hte matching Advanced edition you should be fine. One thing to note is that since 5.6A is quite old, it may not support upgrading in one shot. You will probably need to upgrade through an intermediate version, the readme for the new version should outline the procedure.


      January 19, 2018 at 10:36 pm

      • Thanks Stephen for your reply.


        January 19, 2018 at 11:42 pm

      • Currently, you can still upgrade directly from 5.6.


        January 23, 2018 at 12:34 am

  112. Hi, Can I write data into sage 300 erp database tables directly.

    Hamse Hassan

    February 24, 2019 at 8:51 am

  113. Hi.

    I am remiss in not having visited sooner to welcome you to annieasksyou. I am delighted to have you join me on my “technojourney” (I am less of a non techie than I was when I started, but I sure could have used some of your expertise.)

    I shall read slowly through your posts to try to further my education, and I’ll definitely check out your book. Congratulations on that achievement.

    I don’t know if you saw my recent post about a computer expert who is using AI to detect and ultimately treat breast cancer (“How One Woman’s Breast Cancer Experience May Transform Cancer Care.”) I would welcome your comments as someone knowledgeable about the topic.



    December 1, 2019 at 2:02 pm

  114. Hi Stephen,
    I’m a game developer who occasionally posts game-related educational info on my blog and social media. I’m currently investigating an issue with the Unity game engine resulting in a ARM 64 – Branch out of range linking error for mobile platforms. The issue is already pushing my technical understand and is extra complicated because Unity uses a technology that converts c# code to c++ code (side effect is fairly large code sizes). I went over the ARM64 spec doc and not quite sure how Veneers are not preventing this issue. I would love to chat / pick your brain sometime about this issue.

    Feel free to email me anytime.

    Matt Miller

    Matt Miller

    July 14, 2020 at 10:08 am

    • Sounds like a bug in the C++ compiler, perhaps see if you can use a newer version of if there are some bug fix patches.

      Since all ARM instructions are 32-bits in length, things like offsets in jump instructions are fairly short. The compiler should automatically switch to an indirect jump to a full 64-bit address in this case, but perhaps there is an off-by-1 error or something similar in the compiler. Also when it switches to an indirect jump, it probably puts the indirect address at the end of your routine, and perhaps your method or function is too long and this is failing.

      If you can’t upgrade the compiler, perhaps try refactoring your routine into smaller functions as this might fix either condition above. In some implementations, splitting the source code into more source files will help, but I don’t know how Unity converts to C++ code. I kinda like UnReal engine better, since you work directly in C++ code and don’t have to worry about the extra C# layer.

      It might even be that making the function larger will help, since the compiler will hopefully switch to using full addressing rather than offsets at some point, but his will lead to slower code.

      Hope this helps.


      July 14, 2020 at 10:35 am

  115. Hi Stephen,
    How can I integrate a Sage 300 screen to Sage CRM, for e.g. AR Receipt Entry screen to Sage CRM

    Advance Thanks,


    July 24, 2020 at 2:51 am

      • Hi Stephen,
        It is really good to know that you are still in Sage business market.


        July 24, 2020 at 9:35 am

      • Thank you Stephen,

        How can I test the Sample CRMOEOrderUI project you provided

        Actually, I want to add A/R Receipt entry Screen as a new Tab/Button ,so that the user can able to directly make a Receipt for a company as per Sage 300 standard

        Same like Order and Quote tabs in Opportunity entity in standard integration.

        Advance Thanks,


        July 24, 2020 at 10:44 am

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: