Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Listenfeld soll anderes Formular öffnen Fehler

Begonnen von silentwolf, September 04, 2018, 18:58:48

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo an alle!

Ich hab folgenden Code der mir ein neues DetailFormular öffnet wenn ich auf das Listenfeld doppelt clicke..

Private Sub Anzeigen()
    If Not IsNull(Me!lstKontakte) Then
        DoCmd.OpenForm "frmKontakteDetailAnsicht", _
            WhereCondition:="kon_id = " & Me!lstKontakte, _
            WindowMode:=acDialog
    End If
End Sub

Nun leider werden an manchen Datensätzen nach dem doppelclick das frmKontakteDetailAnsicht mit einem leeren Datensatz geöffnet.
Meine Frage was ist am obrigen Code zu verbessern damit dieser reibungslos funktioniert?

Vielen Dank für Eure Hilfe!

Gruß Albert

MzKlMu

Hallo,
von Doppelklick ist da nichts zu sehen.
Das IsNull kannst du Dir auch sparen. Wenn das Feld den Fokus hat (was sein muss) ist es nicht Null.
Wenn ein leerer Datensatz angezeigt wird, gibt es keine Daten.
Gruß Klaus

ebs17

Zitatmit einem leeren Datensatz geöffnet
Nun, Du filterst ja. Da sollte man es immer für möglich halten, dass die Datenherkunft den gewünschten Datensatz nicht enthält.

Zitatreibungslos funktioniert?
Ein leeres Recordset ist auch ein Ergebnis. Welche Probleme erwartest Du davon?

Wenn Du die Datenherkünfte derart anlegst, dass die im Listenfeld auszuwählenden ID's garantiert im Formularrecordset vorkommen, würdest Du immer einen "Treffer" landen.
Mit freundlichem Glück Auf!

Eberhard

silentwolf

Hallo Danke für Eure Anworten!

Private Sub lstKontakte_DblClick(Cancel As Integer)
    Anzeigen
End Sub


Diesen Code habe ich zuerst nicht mit eingefügt tut mir leid!

Es werden bein nicht allen Datensätzen die Detailansicht angezeigt.
Bei den meisten schon aber eben nicht bei allen..

Das Listenfeld wird mit einer Abfrage gefüllt und alle Datensätze haben eine ID ist ja der Autowert...
Das mit dem IsNull kann ich weg machen Danke für die Info!
Aber warum kann es denn sein das bei manchen DS das frmKontakteDetailsAnsicht keine DS zurück gibt? .(
Ist der Code oben nicht richtig? Oder muss der geändert werden?




MzKlMu

Hallo,
welchen Sinn soll es machen, den Code noch mal in eine extra Sub auszulagern? Das dürfte ziemlich überflüssig sein und macht es nur komplizierter. Und sparen tust Du auch nix, im Gegenteil.
Private Sub lstKontakte_DblClick(Cancel As Integer)
        DoCmd.OpenForm "frmKontakteDetailAnsicht", _
            WhereCondition:="kon_id = " & Me!lstKontakte, _
            WindowMode:=acDialog
End Sub

ZitatAber warum kann es denn sein das bei manchen DS das frmKontakteDetailsAnsicht keine DS zurück gibt?
Weil es keine Datensätze dazu gibt.
Das kannst Du doch völlig unabhängig vom Listenfeld mal prüfen, indem Du in der Abfrage die ID (aus dem Listenfeld) manuell eingibst.
Da wird garantiert nichts angezeigt. Der Fehler dürfte in der Datenherkunft des Listenfeldes liegen. Da werden Daten angezeigt zu denen es kein Detail gibt.
Gruß Klaus

silentwolf

Hallo Klaus,
na ja ich hab es ausgelagert gehabt.. werde es ändern daran soll es nicht scheitern. )

Na es sind im Listenfeld nur Teile des DS angezeigt und das Formular frmKontaktDetails zeigt die dazugehörigen Felder also alle Felder des DS an.
Also gibt es für jeden DS im Listfeld einen kompletten DS auch im frmKontakteDetailAnsicht .. zumindest sollte es einen geben.
Tut mir leid ist leider so.


MzKlMu

Hallo,
Zitatzumindest sollte es einen geben.
dieser Satz lässt Zweifel aufkommen. Hast Du es wie vorgeschlagen geprüft ?

PS:
Das mit der überflüssigen Prozedur war ja nur ein dezenter Hinweis zur Vereinfachung. In einem halben Jahr weißt Du nichtmehr was der Doppelklick genau machst und muss dann extra in der weiteren Prozedur nachsehen.
Gruß Klaus

silentwolf

Im frmKontakteDetailAnsicht ist eine Registerkarte.. und im ersten Register sind die Kontakte aus der tblKontakte mit allen Feldern eingetragen.

die Registerkarte hab ich pgeMainKontakt genannt.

Vielleicht liegt hier das Problem?

Danke

silentwolf

Hi Klaus,
ich hab es mit keiner Weise schlimm aufgefasst das Du mich darauf hingewiesen hast! Finde ich ja gut!!
Es sind DS vorhanden ja.. es handelt sich ja um den selben DS nur in abgespeckter Version im Listenfeld.

Im Listenfeld habe ich eine Abfrage die auf der tblKontake beruht.
Und im Registersteuerelement habe ich dann die Stammdaten komplet hinterlegt.
Das listenfeld ist nur als Startbildschirm gedacht wo ich Daten auswählen kann und diese dann im Registersteuerelment ansehe oder ändern kann.
Hoffe das es nun besser erklärt ist.

MzKlMu

Hallo,
Register spielen keine Rolle.
Hast Du es wie bereits mehrfach vorgeschlagen mal manuell überprüft ?

ID aus dem Listenfeld ermitteln das keinen DS anzeigt. Mit diese ID als Kriterium in die Abfrage (für das Formular frmKontaktDetails) manuell als Kriterium eintragen.
Gibt es dann DS ?
Gruß Klaus

silentwolf


silentwolf

Hallo Klaus,
hab den Fehler gefunden!
Im Registersteuerelement war der Fehler dort war noch eine SELECT anweisung hinterlegt mit einen falschen verknüpften Tabelle..
Warum keine Ahnung aber nun läuft es wie es soll!

Danke auf alle Fälle hab wieder was dazugelernt Dank Deiner Hilfe!