Announcement

Collapse
No announcement yet.

Probleme mit Aktualisierung des Unterformulars

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit Aktualisierung des Unterformulars

    Hallo,

    ich habe ein Problem mit der Aktualisierung eines Unterformulars und habe bisher leider auch bei der Suche im Netz wenig Glück gehabt. Nun hoffe ich, dass ich hier im Forum mehr Glück habe

    Ich habe ein Formular (form_1), welches als Datensatzquelle eine Tabelle (tab_a) besitzt. Auf diesem Formular befindet sich u.a. eine Listbox (lst1), die ich dynamisch (in Abhängigkeit der Auswahl eines Treeviews auf dem gleiche Formular).

    Weiterhin gibt es auf dem Formular ein Unterformular (form_2), welches als Datensatzquelle eine andere Tabelle (tab_b) besitzt. Im Klick-Ereignis der o.g. Listbox will ich nun das Unterformular aktualisieren. Dafür setze ich die RecordSource (des Unterformulars):
    form2.Form.RecordSource = "SELECT * FROM tab2 WHERE id = " & lst1.Column(0)

    Leider wird das Unterformular aber weiß und zeigt nichts an. Nur wenn ich in der ListBox den ersten Wert auswähle, wird etwas angezeigt.

    Ich bin etwas verzweifelt, habe schon vieles versucht (Refresh, Repaint, Recalc und Requery auf das Unterformular / eigene Methode im Unterformular, welche die RecordSource setzt und somit vom "Ober"-Formular (form_1) aufgerufen wird). Auch die Daten sind korrekt, also von Datenbankseite werden für den jeweiligen, auf eine ID eingeschränkten, SELECT Daten ermittelt.

    Hat jemand eine Idee, was ich noch probieren kann?

    Ich bin für jeden Hinweis dankbar.

    Schönes Wochenende,
    MIKE

  • #2
    Was soll denn das Unterformular anzeigen...?!!!

    Hallo,

    Also, wenn ich die Frage richtig interpretiere, ist das Verhalten wie gewünscht.

    Es ist keine Frage der Aktualisierung des Unterformulares,
    sondern vielmehr eine Frage der konstruierten SQL-Anweisung.

    Wenn ich in der Liste nichts auswähle, dann bedeutet Deine SQL-Anweisung
    (frei übersetzt) :
    "Zeige mir alles aus Tab2, wo der Wert der ID in Tab2 [nix gewählt] ist" ;-)

    Du könntest Dir überlegen, ob Du bspws. anfänglich die RecordSource auf :
    "SELECT * FROM tab2"
    setzt. Erst beim Auswählen eines Eintrages aus der Liste ist dann eine Where-Klausel sinnvoll.

    Allerdings bietet auch Access eine Möglichkeit Unterformular-Daten
    abhängig von anderen Steuerelementen anzuzeigen - hierfür verwendet
    man die Eigenschaften "Verknüpfen von" (Feld im unterformular) und
    "Verknüpfen nach" (Feld im Hauptformular) des Unterformular-Steuerelementes.
    (Allerdings zeigt auch dabei das Unterformular nur Daten an, wenn ein Listeneintrag gewählt ist)

    Es gibt noch mehr Möglichkeiten - letztendlich denke ich aber,
    daß bei Dir erstmal das Verständnis für die Where-Klausel noch etwas reifen muß ;-)

    Viele Grüße,
    tAgedObject
    darkness is a state of mind

    Comment


    • #3
      Hallo tAgedObject,

      danke für Deine Antwort. Leider hilft diese mir in keiner Weise ;o)

      Ich habe kein Problem mit der WHERE-Klausel, ich denke auch, dass ich sehr gut verstehe, was diese bewirkt. Ebenso kenne ich die Unterformular-Verknüpfung ("... von" und "... nach"). Allerdings ist mein Problem ein anderes.

      Zum einen kann ich die Verknüpfung nicht verwenden, da die Liste von form_1 nicht an der RecordSource des Formulars hängt. Die WHERE-Klausel des Unterformulars ist zu Beginn auch nicht das Problem, da diese tatsächlich auf "SELECT * FROM tab2" steht. Und beim Debugging sehe ich auch, dass die RecordSource beim Klick auf die Liste korrekt gesetzt wird, also beispielsweise "SELECT * FROM tab2 WHERE id = 7". Aber es findet eben keine Anzeige statt.

      Eine Aktualisierung des Unterformulars scheint durchgeführt zu werden, denn wenn der erste Listeneintrag gewählt wird, werden immer die richtigen Daten angezeigt. Sobald ich einen anderen Eintrag wähle, wird das Unterformular komplett weiß dargestellt.

      Vielleicht gibt es noch andere Ansatzpunkte?

      Viele Grüße,
      MIKE

      Comment


      • #4
        Gibt es denn immer Daten...?

        Hallo,

        Hast Du mal überprüft, ob es zu jedem der Einträge in der Liste auch tatsächlich Detaildaten gibt? Falls nicht, könnte man die Anzeige der Listeneinträge auf solche reduzieren, zu welchen es auch Detaildaten gibt.

        Daß das Formular ganz "weiß" wird, kann auch (ergänzend zu fehlenden Detaildaten) daran liegen, daß Du Eigenschaften der Datenmanipulationszulässigkeit (ein schönes Wort, gelle) im Unterformular verändert hast (also z.B. Dateingabe auf False)...

        Edit: Verknüpfungen mit "von" / "nach" müssen nicht zu Datenfeldern gehen, sondern können auch zu Steuerelementen gehen !!

        Viele Grüße,
        tAgedObject
        darkness is a state of mind

        Comment


        • #5
          Hallo tAgedObject,

          DANKE. Die Detaildaten und die Datenmanipulationsfähigkeit (wirklich ein nettes Wort) waren nicht das Problem, sondern vielmehr meine eigenen Zweifel. Ich hatte den "von/nach"-Verknüpfung schon einmal von der Liste zum Unterformular einbauen wollen. Da im Designer dies nicht ging (dort kann man nur die Datenfelder der RecordSource auswählen), hatte ich es direkt im Code versucht und als "LinkMasterFields" die Liste angegeben - aber nicht als String-Wert ;o) Da es nicht funktionierte, hatte ich diese Möglichkeit komplett verworfen ...

          Nachdem Du nun noch einmal darauf hingewiesen hast, dass dies auch funktioniert, habe ich mich noch einmal mit dieser Eigenschaft "angelegt" und die Liste als String übergeben. Schwupps, schon klappt es ;o)

          DANKE,
          MIKE ;o)

          Comment

          Working...
          X