[VB6] Server bereitet Steuerelementen Probleme

18/08/2010 - 19:49 von Reiner Wolff | Report spam
Moin moin,

früher war alles aus Holz, da war alles einfacher, doch dann entschied ich
mich zu programmieren ...


Da mir keine Kurzfassung meines Problems einfàllt, schreibe ich mal die
ganze Geschichte.
Vorweg sei vielleicht erwàhnt, dass ich keines der Probleme in meiner
Entwicklungsumgebung oder meiner Testumgebung (bislang) nachstellen konnte.

Es handelt sich um eine kleine Auftragsverwaltung, die ihre Daten auf einem
SQL Server 2005 Express ablegt.
Im Prinzip besteht das Programm nur aus zwei Formularen, eine Übersicht und
ein Formular für die Detaildaten des Auftrages. Gestern früh begann es,
dass "von jetzt auf gleich" das Detailformular nicht mehr richtig angezeigt
wurde. Es wurde immer eine Textbox (mit dem Inhalt einer Combobox des
Formulars) in der linken oberen Ecke des Bildschirms dargestellt und der
Rest des Formulars und dann auch des Haupformulars verhielt sich so, als ob
es einfach nicht mehr refreshed wird. Klickte man an die Stelle, wo sich
die Steuerelemente sein mussten, konnte man das Formular auch ausfüllen und
bedienen. Eine langwierige Fehlersuche ergab, dass die Darstellungsfehler
in zwei Konstellationen nicht auftritt:
- wenn ich alle Comboboxen (TDBCombo von ComponentOne) von dem
Detailformular entferne
Achso, als ich meinen kompletten Code hinter dem Formular entfernte,
blieb das Darstellungsproblem trotzdem erhalten.
- wenn im Hauptformular das Grid mit der Übersicht weniger als ca. 2.400
Datensàtze darstellte.

Mit diesen Erkenntnissen konnte ich das Darstellungsproblem beseitigen.

Beim Schließen des Detail-Formulars wird eine Public Sub des Hauptformulars
aufgerufen, um die Änderungen dort zur Anzeige zu bringen. Das
Detail-Formular ruft also eine Funktion des Hauptformulars auf.
In dieser Funktion wird auf eine ImageList zugegriffen, um in Abhàngigkeit
des Auftragsstatus ein Bild pro Datensatz darzustellen. Dort steht also
irgendwo die Zeile:
Me.GridÜbersicht.cells(z,s).Picture = Me.GridBilder(strBild).ExtractIcon
(oder so àhnlich, ich liefere den richtigen Quellcode gerne nach, wenn das
relevant werden sollte)

Beim Kunden führte nun diese Zeile zum Laufzeitfehler 91: Objektvariable
nicht festgelegt. Ich weiß zwar nicht mehr wie ich auf die Idee kam, aber
ich fügte auch auf das Detail-Formular ein ImageList-Objekt mit selbem
Namen hinzu, auf das im Code eigentlich nicht zugegriffen wird und somit
völlig unnötig ist. Das Ergebnis war allerdings, dass der LZF 91 beim
Kunden verschwunden war und das Programm (wie auch die 10 Monate zuvor)
endlich wieder funktionierte.

Leider hielt dieser Zustand lediglich zwei Stunden an.
Danach meldeten sich die Benutzer, weil Sie - nachdem zwei Stunden keine
Probleme aufgetreten waren - nun den folgenden Laufzeitfehler bekamen:
"Laufzeitfehler 372: Das Steuerelement 'ImageList' konnte nicht aus
MSCOMCTL.OCX geladen werden. Ihre Version von MSCOMCTL.OCX ist
möglicherweise veraltet. Stellen Sie sicher, daß Sie die Version des
Steuerelements verwenden, die mit Ihrer Anwendung geliefert wurde."

Die Überprüfung der Dateiversion ergab den gleichen Stand wie in meiner
Entwicklungsumgebung (wenn ich es richtig weiß vom 20.03.2009 12:52).
Es gab auf dem Rechner auch nur eine MSCOMCTL.OCX.
Entferne ich nun die ImageList aus dem DetailFormular wieder, bin ich
wieder beim LZF 91.

Damit der Kunde arbeiten kann, habe ich erstmal die Bilder aus der Anzeige
entfernt und damit im Moment keine Schwierigkeiten, außer das die Optik nun
mehr so gefàllig ist.

Das war die Geschichte, nun zu dem Teil, weswegen ich hier poste, denn da
wird's für mich kurios und ich hoffe, dass Ihr ein paar Ideen habt, die mir
das Verhalten erklàren können.
Da bei mir auch in der Testumgebung alles ohne Fehler funktionierte, habe
ich mir ein Laptop geschnappt, das Programm installiert und in der
Testumgebung getestet -> keine Fehler.
Also ab mit dem Laptop zum Kunden. Kurz mal der Domàne beigetreten, einen
anderen Server für die Connection in der INI-Datei eingestellt und das
Programm erneut getestet -> LZF 372 bei der Anzeige des Detail-Formulars.
Mit dem Laptop wieder in der heimischen Domàne treten die Probleme nicht
mehr auf.

Wie kann das Netzwerk oder der Server (SQL-technisch selber Versionsstand
wie in der Entwicklungsumgebung) Einfluss auf die lokale Bearbeitung der
Steuerelemente haben?
Erst stört sich eine Combobox daran und verhindert ein vernünftiges Refresh
des Formulars, dann làsst sich ein Formular nicht mehr öffnen, weil eine
ImageList auf ihm plaziert wurde?
Und das ganze nur in der einen Domàne. Demnach hat der Server oder das
Netzwerk Einfluss auf die lokale Darstellung? Muss so sein, da die Probleme
heute auf allen Clients nach der Mittagspause auftraten.

Vielen Dank an alle, die bis hierhin durchgehalten haben.
Könnt Ihr mir mit Ideen für die weitere Vorgehensweise aushelfen?

Gruß aus Kiel
Reiner
Ein Spezialist ist jemand, der von immer weniger immer
mehr weiß, bis er von nichts alles weiß.
 

Lesen sie die antworten

#1 Ulrich Korndoerfer
18/08/2010 - 20:04 | Warnen spam
Hallo Reiner,

Reiner Wolff schrieb:

...
Die Überprüfung der Dateiversion ergab den gleichen Stand wie in meiner
Entwicklungsumgebung (wenn ich es richtig weiß vom 20.03.2009 12:52).
Es gab auf dem Rechner auch nur eine MSCOMCTL.OCX.
Entferne ich nun die ImageList aus dem DetailFormular wieder, bin ich
wieder beim LZF 91.



Bei dem Datum 20.3.2009 tickerts bei mir. Könnte es sein, daß das Datum
der 24.3.2009 ist, Version 6.1.98.16, Grösse 1.069.376 Bytes? Dann ist
die MSCOMCTL.OCX aller Wahrscheinlichkeit nach mit dem "KB957924 2009-05
Cumulative Update Rollup" auf den Rechner gekommen. Und dafür gibt es
einen Hotfix "KB974899 2009-10 Hotfix", der Probleme beseitigen soll,
die im Zusammenhang mit der Verwendung einer ImageList auftreten können,
wenn das "KB957924 2009-05 Cumulative Update Rollup" installiert wurde.
MS hàlt sich bezüglich des Hotfixes sehr bedeckt und empfiehlt, diesen
nur anzuwenden, wenn man Probleme mit einer ImageList oder dem
Winsock-Control hat.

Links zu KB957924:

<http://support.microsoft.com/kb/957924>

Links zu KB974899:

<http://support.microsoft.com/kb/974899>

Für den Download:

<http://support.microsoft.com/hotfix...aspx?kbnum—4899>

Ulrich Korndoerfer

VB tips, helpers, solutions -> http://www.prosource.de/Downloads/
MS Newsgruppen Alternativen -> http://www.prosource.de/ms-ng-umzug.html

Ähnliche fragen