none
ListView zeigt ListItems nicht mehr an

    Frage

  • Hallo zusammen,

    in Access 2007 habe ich ein Formular mit einem ListView.

    Bis vor kurzem funktionierte alles gut, jetzt werden die Inhalte der ListItems nicht mehr angezeigt.
    Fehlermeldung kommt keine, ListItems.Count liefert Ergebnisse >0.

    Auf anderen Rechnern läuft die Datenbank ohne Probleme und zeigt auch die Inhalte an.

    Woran kann das liegen und wie mache ich die Inhalte wieder 'sichtbar'.

    Gruß

    Axel

    Donnerstag, 10. Mai 2012 13:48

Antworten

Alle Antworten

  • Hallo!

    Kommen möglicherweise unterschiedliche Versionen der dll mit dem ListView zum Einsatz?
    Irgend so etwas wird es vermutlich sein, wenn die identische Anwendung (inkl. identischen Daten) auf anderen PCs mit der gleichen Access-Version läuft.

    Welche Ansicht (ListViewCtrl-Properity"View") verwendest du im Listview?

    Anm.: On Error resume next oder ähnliche "böse Konstrukte", die eine Fehleranzeige verhindern, sind im Code zum Befüllen des Listview nicht enthalten, oder?

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch



    Montag, 14. Mai 2012 08:30
  • Hallo Josef,

    die Versionen der dll´s habe ich geprüft. Auf jeweils einem funktionierenden und einem 'bockigen' Rechner sind die gleichen Versionen drauf.
    mscomctl.ocx 6.1.98.33, comctl32.ocx 6.0.81.5

    Die Datenbank ist ein Front-End und alle greifen auf das gleiche Back-End zu.

    View ist 3: lvwReport

    On Error hatte ich für die Prozedur ausgeschaltet. Ich habe jetzt mal alle ausgeschaltet, um Vererbungen zu vermeiden.

    Hm,
    jetzt kommt ein Fehler 430: Klasse unterstützt keine Automatisierung oder unterstützt erwartete Schnittstelle nicht.

    Fehlerposition ist das erste If in folgender Property:

    Property Get objSendungsliste() As MSComctlLib.ListView
        If mSendungsliste Is Nothing Then
            Set mSendungsliste = Me!lvwSendungen.Object
        End If
        Set objSendungsliste = mSendungsliste
    End Property

    mSendungsliste ist modulweit vereinbart mit:
    Private mSendungsliste As New MSComctlLib.ListView

    Das New in der Vereinbarung hatte ich eingefügt, da zwischendurch eine andere Fehlermeldung unvermittelt auf getaucht war. (siehe Thread http://social.msdn.microsoft.com/Forums/de-DE/accessde/thread/d544ae8a-a6ae-4f98-9804-f6f31cf78ce8)

    Nun habe ich das New wieder entfernt. Danach läuft es jetzt bei mir auf dem Rechner wieder, auch mit Image-Referenz)

    Das finde ich jetzt sehr seltsam. Ich laboriere da jetzt auch schon ein paar Tage (14) immer wieder daran herum, aber Spontanheilung finde ich seltsam.
    Bisher hatte nichts geholfen.

    Sehr merkwürdig. Ich schaue mal ob es weiterhin funktioniert (auch auf einem anderen Rechner mit gleichem Problem) und melde mich nochmal.

    Mit einem Fehler/Verhalten, das ich nicht greifen kann, ist schwierig umzugehen, falls es wieder auftritt.

    Gruß

    Axel

    Montag, 14. Mai 2012 10:17
  • Hallo!

    Du bist bei deinem Code auf das Verhalten bei Deklaration mit New reingefallen.

    eine Prüfung auf Is Nothing liefert niemals False, wenn eine Variable mit New dekalriert wurde und die Klasse instanzierbar ist (also nicht nur ein Interface darstellt). Du hast also im Prinzip mit einer anderen ListView-Instanz gearbeitet, als sie im Formular vorhanden war.
    Eigenartig finde ich allerdings, dass dieser Code auf den anderen PCs funktionierte.

    Beispiel zum Ausprobieren:

    Dim lv As New ListView
    
    If Not (lv Is Nothing) Then
       Debug.Print "ListView wurde automatisch instanziert"
    End If
    
    Set lv = Nothing
    
    If Not (lv Is Nothing) Then
       Debug.Print "Und schon wieder gibt es eine neue Instanz"
    End If

    => Tipp: Deklariere nie mit New, wenn ein solches Verhalten nicht erwünscht ist - und das ist es bei mir nie. ;-)

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch


    Montag, 14. Mai 2012 10:36
  • Hallo AxelNRW,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 24. Mai 2012 11:50
    Besitzer
  • Hallo Robert,

    da bin ich genau jetzt wieder.

    Zu Beginn der Woche mußte ich einen Rechner neu mit Win7 und Office 2007 aufsetzen.
    Alle Updates gem. Microsoft Update wurden installiert.

    Nun habe ich wieder genau den Fall der auch zum Ursprungsposting geführt hat.
    Die Datenbanken funktionierten auf dem Rechner und seit heute morgen (es kamen keine weiteren Updates dazu) bekomme ich wieder die Fehlermeldung beim Debuggen und zur Laufzeit:

    Fehler beim Kompilieren: Funktionsmerkmal der Objektbibliothek nicht unterstützt

    In der Zeile 'Set mKostenliste = Me.lvwKosten.Object' an der Stelle mKostenliste

    Im Kopf des Klassenmoduls ist vereinbart: Private mKostenliste As MSComctlLib.ListView

    u.a. Verweis gesetzt:

    Microsoft Windows Common Controls 6.0 (SP6)

    Die gleiche Datenbank auf einem anderen Rechner funktioniert!

    Beim letzten Mal war es das gleiche. Plötzlich die Fehlermeldung, danach ewiges Laborieren inkl. der o.g. Versuche, danach wieder alle Änderungen raus genommen und dann ging es plötzlich wieder.

    Sehr seltsam.

    Aber vielleicht habt ihr ja noch eine Idee?

    Gruß
    Axel


    • Bearbeitet AxelNRW Donnerstag, 24. Mai 2012 12:09
    Donnerstag, 24. Mai 2012 12:07
  • Hallo!

    Sind möglicherweise unterschiedliche Versionen der Common Controls im Einsatz?

    Manchmal könnten Probleme mit COM-Bibliotheken beseitigt werden, wenn man ein /decompile durchführt.

    Mögliche Problemumgehung: Stell auf Latebinding um und verwende Early binding nur während der Entwicklung.
    Ich nutze dafür Compiler-Anweisungen.

    Beispiel:

    #If EarlyBindingMsCommonControls then
    Private mKostenliste As MSComctlLib.ListView
    #else
    Private mKostenliste As Object
    #end if

    In den Eigenschaften des VB-Projektes stellst du dann in "Argumente für bedingte Kompilierung" EarlyBindingMsCommonControls auf 1 bzw. 0 und ergänzt bzw. entfernst den Eintrag in den Verweisen.
    (Anfügen des Verweise würde ich über eine kleine VBA-Hilfsprozedur mit Application.References.AddFromGuid, damit du nicht jedes Mal danach suchen musst, denn der Verweisdialog ist alles andere als benutzerfreundlich gestaltet. ;-))

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Donnerstag, 24. Mai 2012 12:56
  • Hallo Josef,

    da ist ein Post verloren gegangen.

    Ich hatte vorhin dann mal ein bisschen herumlaboriert und dabei den Verweis auf die Common Controls entfernt, dann gespeichert und geschlossen.

    Nach erneutem Öffen waren die Common Controls nicht in der Auswahlliste der Verweise enthalten und mußten per Hand von C:\windows\system32\mscomctl.ocx hinzugefügt werden.

    Danach ging es wieder. Echt komisch.

    Die von Dir genannten Compileranweisungen gelten nur für VB oder? Die Datenbanken hier sind alle in VBA als Front-/Backend und werden jetzt Stück für Stück auf SQL umgestellt.

    Meinst Du, hier würde das LateBinding auch etwas bringen?

    Gruß
    Axel

    Donnerstag, 24. Mai 2012 13:31
  • Hallo!

    Compiler-Anweisung kannst du auch in VBA verwenden.

    Das Latebinding im Frontend hat nichts mit dem Backend zu tun. Im Access-Frontend kannst du durch Latebinding schon einige Probleme vermeiden.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Donnerstag, 24. Mai 2012 13:51
  • Hallo AxelNRW,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 29. Mai 2012 13:44
    Besitzer