Error 35601 when click new "Auto Display" button in Memo tool

I recently upgraded our Sage 500 installation from version 2014 to version 2016 May update (7.70.2).  Version 2016 added functionality to the Memo feature in Maintain Customers, providing the ability to set memos to automatically popup in certain tasks if desired.

We are seeing a problem with this new feature in that when some users click the "Auto Display" button in the "Memo" tool in Maintain Customers, it crashes.  I initially thought this might be due to security/permissions, but I have found that not to be the case.  I've been able to resolve it for some users by deleting and recreating their Sage 500 profile in Maintain Users, while for other users that does not resolve it.  And this is for users with the EXACT same settings in SQL Server and in the EXACT same Sage 500 security group.

The error message is:

---------------------------------------------

Sage 500 ERP
Module:  Company: XXX  AppName: Memos
Error 35601 occurred at frmMemoOptions in Procedure Form_Load
Element not found
This application will now close.
OK

---------------------------------------------

Using v.7.70.2. Win 2008 R2 SP1 RDS / SQL 2008 R2 SP3

Has anyone else encountered this problem when trying to open the (new for 2016) "Auto Display" feature?

Thanks.

Parents
  • 0
    Hi Ralph. Since you have corrected the issue for some users, have you also eliminated it as a client machine issue? To be specific, do the users who you fixed on one machine work on a machine where a user sees the error? If not, how was Sage 500 installed on that machine? Was 'Execute as Administrator' used to ensure all permissions to related objects were set properly for everyone to use? Also, is everyone using the same operating system on the client machines, or are there different OS versions being used?

    Hope that helps narrow it down a bit.
  • 0 in reply to LouDavis
    Thanks for the reply, Lou.
    We use Win 2008 R2 SP1 RDS. We have one for production and one for piloting. I see the same behavior on both servers. The Sage 500 client was installed while logged into the box as local admin and it was in "install mode."
    If you happen to have access to 2016, does clicking the button cause a crash for you? I assume it does not.
  • 0 in reply to Ralph.
    It seems that if I delete the user instance in the Sage 500 interface and then ALSO go into SSMS and delete the user under Security -> Logins, and THEN recreate their Sage 500 account in Maintain Users, it seems to resolve the problem consistently in our pilot/test environment. I will try this in our production environment in the next few days and hopefully it will work.
    Users aren't thrilled about having to re-establish their settings (report filters, window sizes, etc.) as a result of having new profiles, but I see no way around that if they want to use this new feature.
  • 0 in reply to Ralph.

    For anyone else who might experience similar problems with this new task, it turns out that recreating Sage 500 user profiles is not a reliable fix for this. Sometimes it fixes it, sometimes it doesn't. And I've just seen an instance where it fixed it initially but the fix didn't hold.

  • 0 in reply to Ralph.
    Ralph - What is Sage saying? You have started a support case right?
    John
  • 0 in reply to JohnHanrahan
    I have, John. Their suggestion so far is to delete/recreate Sage 500 user profiles, which based on initial testing in our test environment we thought was going to do the trick. Now it appears that solution is not sufficient.
  • 0 in reply to Ralph.
    Did you ever get an answer on this? I had some similar problems with customizer. I traced it and found the task IDs need to be changed then I was able to get customizer to work.
  • 0 in reply to JohnHanrahan

    Thanks for the reply, John. This issue is still outstanding.
    I would look into the task ID, but the very odd thing about this problem is that it happens for end users but not for me, even when I log-in to Sage 500 as them from within my Windows profile, even when I put them into the exact same Sage 500 security group that I am in, and even when we use the exact same menu.

  • 0 in reply to Ralph.
    Hi Ralph,

    So to clarify, are you saying that when you log into 500 using your Windows profile but as the problem 500 user you do not have issues? Is this on your machine or theirs? In any case, what type of Windows permissions do you have? Is it full administrative privileges? Have the users tried launching Sage 500 with the "Run as Administrator" option? I'm assuming the client is locally installed for this recommendation and not run from Terminal Services/Citrix. From your posts, it is sounding more like an environment/Windows permission issue than a security issue within Sage 500. I haven't ever looked into the code behind the Memo's so I'm not sure what it may be calling to outside of the 500 Framework. This may be a question to ask Sage as it may shed light on why you don't see the issue but your users do.
  • 0 in reply to LouDavis

    Hi Lou,

    We typically run the client on a Win2008 R2 SP1 RD server, but after seeing the odd behavior with this issue I installed the client on a Win7 SP1 32-bit virtual PC for testing.

    When I am logged into my Windows profile, which has full admin privs, either on Win2008R2 or on Win7, and I log-in to Sage 500 as myself I never see the crash. If I stay logged-in to my Windows profile and log-in to Sage as an end user (even if the user is in the same Sage 500 Security Group that I am in), the task crashes. That seems to indicate that the problem has nothing to do with either Windows permissions or Sage permissions, which obviously makes no sense. If it never crashes for me but does crash for end users, you’d think it is a result of some sort of permissions issue. But again, when logged-in to Windows as me and into Sage as an end user who’s in the same Sage 500 Security Group as me, it crashes. If I close Sage and remain logged into my Windows profile and then log-in to Sage as me, it does not crash.

    Also, if I log-in to Win7 virtual as the end user and then log-in to Sage as me, no crash. I then close Sage and remain logged-in to Win7 as the end user and then into Sage as the end user, the task crashes.

Reply
  • 0 in reply to LouDavis

    Hi Lou,

    We typically run the client on a Win2008 R2 SP1 RD server, but after seeing the odd behavior with this issue I installed the client on a Win7 SP1 32-bit virtual PC for testing.

    When I am logged into my Windows profile, which has full admin privs, either on Win2008R2 or on Win7, and I log-in to Sage 500 as myself I never see the crash. If I stay logged-in to my Windows profile and log-in to Sage as an end user (even if the user is in the same Sage 500 Security Group that I am in), the task crashes. That seems to indicate that the problem has nothing to do with either Windows permissions or Sage permissions, which obviously makes no sense. If it never crashes for me but does crash for end users, you’d think it is a result of some sort of permissions issue. But again, when logged-in to Windows as me and into Sage as an end user who’s in the same Sage 500 Security Group as me, it crashes. If I close Sage and remain logged into my Windows profile and then log-in to Sage as me, it does not crash.

    Also, if I log-in to Win7 virtual as the end user and then log-in to Sage as me, no crash. I then close Sage and remain logged-in to Win7 as the end user and then into Sage as the end user, the task crashes.

Children
  • 0 in reply to Ralph.

    I see nothing at all in the Event Viewer related to the crashes. When I turn on the Sage 500 Tracker I see this in the Tracker window when it crashes.

    08:43:29(17239 - 796693)-Application Error: 35601 Element not found : occurred At frmMemoOptions in Procedure: Form_Load Module: Co.: 005 App. Name: Memos
    08:43:29(18 - 796711)-UnloadSelf(Memo Maintenance (Drill Down): ltContext 64)
    08:43:29(1 - 796712)-CheckUIActiveStateIncludingChild::"Memo Maintenance (Drill Down)" - GetlUIActive()
    08:43:29(0 - 796712)-UnloadObject::"Memo Maintenance (Drill Down)" - QueryShutdown(ltContext: 64)
    08:43:29(0 - 796712)-"UnloadObject" - UnloadUI(ltContext: 67648048)
    08:43:29(1 - 796713)-UnloadObject::"Memo Maintenance (Drill Down)" - TerminateObject(ltContext: 64)
    08:43:29(0 - 796713)-ReleaseSystemObject: Object not found.
    08:43:29(2 - 796715)-Caught Exception: "ReleaseSystemObject" - OLE Dispatch Error: m_scError:-2147175422(0x8004b402), Desc:ReleaseSystemObject: Object not found., Help:0, Help File-:: System Definition:
     
     After clicking "OK" to the error message...

    08:44:05(575931 - 1372646)-Application Error: 35601 Application-defined or object-defined error : occurred At frmCustomerMaint in Procedure: CMMemoSelected Module: Co.: 005 App. Name: Maintain Customers
    08:44:05(11 - 1372657)-UnloadSelf(Customer Maintenance: ltContext 64)
    08:44:05(0 - 1372657)-CheckUIActiveStateIncludingChild::"Customer Maintenance" - GetlUIActive()
    08:44:05(1 - 1372658)-UnloadObject::"Customer Maintenance" - QueryShutdown(ltContext: 64)
    08:44:05(4 - 1372662)-"Customer Maintenance" - QueryShutdown Failed, return value: 0
    08:44:05(1 - 1372663)-Unload Self: Exception: "Customer Maintenance" - QueryShutdown Failed, return value: 0

  • 0 in reply to Ralph.
    Hi Ralph.
    I took some time and looked at the code for memo's in version 2016 based on your info above. CMMemoSelected is a module that has a control passed to it. In this case it is the textbox containing the customer ID. After the code does some preliminary checks to see if there is a customer ID to work with and if the data needs to be saved or not, the module launches the Memo app. using the following code:

    gLaunchMemo Me, moClass.moFramework, moSotaObjects, kEntTypeARCustomer, lCustkey, _
    txtCustomerID, txtCustName, moClass.moSysSession.BusinessDate

    The definition for this call is as follows:

    Sub gLaunchMemo(oParent As Object, oFramework As Object, oSotaObjects As Collection, iEntityType As Integer, lEntityKey As Long, sEntityID As String, sEntityName As String, sBusinessDate As String)

    gLaunchMemo is a Member of CIUtils.CGeneral

    Once the call to that routine is finished the module makes a final call to set the toolbar state of the memo button with the following code:

    gSetMemoToolBarState moClass.moAppDB, lCustkey, _
    kEntTypeARCustomer, msCompanyID, tbrMain

    The definition for that call is as follows:

    Sub gSetMemoToolBarState(oDB As Object, lEntityKey As Long, lEntityType As Long, sCompanyID As String, oToolBar As Object)

    gSetMemoToolBarState is Member of CIUtils.CGeneral

    As the original error is "Element not found" , I would have to suspect the collection being passed into gLaunchMemo. However, the only way to confirm this is to run the code in debug mode within Visual Studio 6 logged as a user that has the issue. Probably something that support cannot do for you. The other alternative is to work with support to make a special version of CIUtils and ARZMA001 (Customer Maintenance) that traces/logs the process as it is executed to include pertinent data to see exactly where the issue is occurring and why.

    I am not sure how the user profile factors into this as I haven't dug any deeper, but this should help you and support in attempting to track down the issue.
  • 0 in reply to LouDavis
    Hi Lou.
    Thanks a lot for taking the time to look at the code! Very much appreciated. I hope to continue working with Sage Support on this issue, and what you've provided here may help.
    Just to make sure I've been clear about the problem, the users can open the Memo task without any problems. They can even create/edit/save Memos just fine. The crash only occurs when they click the new "Auto Display" button.
  • 0 in reply to Ralph.

    Aah, another clue.  Ok. That helps a bit more to narrow the problem. So picking up on my last reply where Maintain Customer's makes a call to the CIUtils.DLL, the CI Utils dll makes a call to cizmqdl1.dll (Memo Maintenance) to open the memo maintenance screen.  Now based on your latest info, the issue only occurs when Auto Display is selected on the Memo screen, that is where support needs to concentrate their troubleshooting efforts.  

    When Auto display is selected, it displays another form that allows the user to select tasks that the memo will be automatically displayed in.    The memo maintenance form does the following when it opens this child form:

    1. Checks to see if the form is loaded in memory.  If not it, it loads it.
    2. Once loaded the position of the form is set relative to the memo form
    3. The grid on the child form is then refreshed.
    4. The memo task checks to see if any of the options for auto were changed.  If so and the memo form isn't dirty, then the memo form is placed in a dirty status, so the Sage 500 framework knows so it can prompt the user to save changes in case they forget.

      So if the users are getting the crash when they select Auto Display from the memo form, I believe the issue is either during the loading of the form itself or when the grid is refreshed. Looking at your display tracker I see it logged the following:

    08:43:29(17239 - 796693)-Application Error: 35601 Element not found : occurred At frmMemoOptions in Procedure: Form_Load Module: Co.: 005 App. Name: Memos

      That tells me it is during form load of the options screen (Tasks to display the memo) is where the error is occurring. 
      The only ways I see to troubleshoot the issue is to step through the code while it executes, which we know isn't possible in your environment, or Sage has to create a special debugging/tracing version of cizmqdl1.dll to record what is occurring when Auto display is selected and the child form is loaded. If possible add debugging code to log exactly where the error is occurring and what the exact error is.   At least the issue is narrowed down to one button on the Memo form and the loading of the child form, so the time to create such a debugging version of the DLL shouldn't take support too long to do if they can't find another way to identify the problem.

    Good luck..