Welcome to the SRP Forum! Please refer to the SRP Forum FAQ post if you have any questions regarding how the forum works.
Btree.Extract Call works on all workstations but one
I have some strange behavior coming from one single workstation, and I can't pinpoint what the problem is. I recently changed some code in my application to tweak a Btree.Extract call. I added an additional field to the search criteria. The code worked as expected as I tested it.
Later, a user made me aware that the application was not working properly on a specific workstation. I tested the application on all other 7 workstations, and the code worked as expected, but this particular workstation will not return the results of the Btree.Extract. The returned Flag value of the Btree.Extract is -1, which is documented as follows "The search failed, for reasons other than no keys found. This occurs, for example, when a specified column does not have a Btree Index." All fields are indexed and furthermore are working on other workstations. When I try the Btree.Extract subroutine with out the additional field that I had added, it works fine on the problem workstation.
Here are the things I have tried to resolve the problem...
I re-built the indexes for the fields on the search criteria of the Btree.Extract subroutine.
The only things that I could think of that make a particular workstation interact differently with the application was the client files setup and any locally registered files, so I uninstalled and re-installed the client files on that workstation. I also unregistered and re-registered all SRP ocx files.
Any thoughts or suggestions on what other things I can look at that may be affecting one single workstation?
Later, a user made me aware that the application was not working properly on a specific workstation. I tested the application on all other 7 workstations, and the code worked as expected, but this particular workstation will not return the results of the Btree.Extract. The returned Flag value of the Btree.Extract is -1, which is documented as follows "The search failed, for reasons other than no keys found. This occurs, for example, when a specified column does not have a Btree Index." All fields are indexed and furthermore are working on other workstations. When I try the Btree.Extract subroutine with out the additional field that I had added, it works fine on the problem workstation.
Here are the things I have tried to resolve the problem...
I re-built the indexes for the fields on the search criteria of the Btree.Extract subroutine.
The only things that I could think of that make a particular workstation interact differently with the application was the client files setup and any locally registered files, so I uninstalled and re-installed the client files on that workstation. I also unregistered and re-registered all SRP ocx files.
Any thoughts or suggestions on what other things I can look at that may be affecting one single workstation?
Comments
I am pretty sure if you run the ClientSetup.exe against this machine it will resolve the problem. Newer versions of OI are automatically configured to use the new .NET library for index management. However, if you do not run the setup then the .NET library won't be available and thus your indexed based operations will fail.
Alternatively you can open up the CFG_IDX_SETS record from within the SYSENV table and modify it to use the original index library. Instructions are in the record on how to do this.
I noticed some other behavior that is wrong on that workstation only, so maybe there is a pattern that I am missing. I use the method OLE.ShowBalloonTooltip from the OLE.Subclass control to show a balloon tooltip when a record is not found. I noticed that the problem workstation will show the information placed in the "config" parameter properly only on the first time that it is called in a session with that window. On subsequent calls to the OLE.ShowBallonTooltip, it will continue to show the information that was first passed to it in the "config" parameter on the initial call, but not the new information being passed through the "config" parameter for the subsequent calls.
I thought maybe that the Btree.Extract failing to work might somehow be affecting the other controls, but I found that the problem with the OLE.ShowBalloonTooltip is indeed independent of the Btree.Extract subroutine.
So the question is, if I have updated .NET components on the workstation, and I have installed the latest clientsetup.exe files for the version of OI that I have (9.3.2), what other local settings can be causing these errors on this workstation?
I am not ready to give up on this being a client setup configuration issue. Sometimes the client setup doesn't work as thoroughly as we might expect without first uninstalling all existing OI client components.
Other than that, I wonder if this could be a TEMP folder issue. How is your system configured in the Database Manager -> Environmental Settings -> Sort Path? Does this folder exist for this problematic workstation?
The Sort Path in the Environment Settings is %TEMP% and the folder c:\Windows\TEMP is set as the local temp folder the the problematic workstation and indeed that folder exists.
I found a Knowledge Base Article on the Revelation.com website that has a link to a Powershell script that is supposed to uninstall the software as well as the MSI packages related to OI. I tried running it but ran into an error during the process. What is the best way to accomplish a complete uninstall of all the components on the client side, so I can get a fresh install of the clientsetup.exe?
I just use the Windows Programs and Features utility to uninstall programs. They all start with the name Revelation Software or OpenInsight. Just don't uninstall the one that only says OpenInsight, as that is likely going to uninstall your OpenInsight folder.