Strange Errors & Behavior in VB6
Automation error, The object invoked has disconnected from its clients.
Runs in IDE (Interpreted), Yet (Compiled) .exe Crashes
This error is not generated when the project is ran within the IDE. It is generated when the compiled exe is executed.
Searching Google lead me down the wrong road thinking it was ADO related, as did the Microsoft Knowledge Base. It turns out the error was being generated by setting text in a ComboBox control. The error is, therefore related to the ComboBox Control in VB6.
When ran in the Visual Basic IDE, the error is NOT generated. The error is only generated in the compiled exe version of the project. Debugging within the IDE alone is not helpful. The error was tracked down using a series of MsgBox messages.
Setting the default value to the cboBox like this is probably not "by the book".
Possibe Key terms:
- circular references
The Fix:
The following simplified code sample is what renders the error from the compiled exe.
cboSkGroup.AddItem ("<All Skill Groups Available>") cboSkGroup.Text = "<All Skill Groups Available>"
The following code has been substituted and thus resolved the error.
cboSkGroup.AddItem ("<All Skill Groups Available>") cboSkGroup.ListIndex = 0
I think that the issue has to do with the way VB matches the text from the listed item with the text entered using the .text property. Typically characters are matched and what is entered with .text works fine. In this case it is perhaps something to do with the characters within the listed item. Most of the time the first method would not cause a problem. Sometimes it is just better to find a different way to do the same thing and move forward.
Check Boxes Sometimes vbChecked/vbUnchecked (1/0) and Sometimes True/False
Ever experience inconsistant CheckBox values? Your checkbox is checked yet code treats it as unchecked. Another stupid Microsoft glitch, or more likely, an oversight by their 3rd rate engineers.
Illustrated best with this sample program:
Option Explicit Private Sub cForms2_Click() tStandard.Text = cStandard.Value tForms2.Text = cForms2.Value End Sub Private Sub cStandard_Click() tStandard.Text = cStandard.Value tForms2.Text = cForms2.Value End Sub Private Sub Form_Load() tStandard.Text = cStandard.Value tForms2.Text = cForms2.Value End Sub
The Fix: Stick with the standard checkbox only or Forms 2.0 checkbox only throughout the software you are developing.