Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: derilzemer am Juli 01, 2017, 22:22:28

Titel: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 01, 2017, 22:22:28
Hallo,
in meiner Quartett-DB habe ich im Erfassungsformular integrierte UFO's, Listenfelder etc. Ein solches Listenfeld zeigt mir die Datensätze der DB an (siehe bild1). Wenn ich einen Datensatz aus diesem Listenfeld markiere, dann wechselt es zu diesem Datensatz (siehe bild2). Das ganze funktioniert so:
Private Sub lstSpielAuswahl_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Me.Recordset.FindFirst "[SpielID] = " & Nz(Me![lstSpielAuswahl], 0)
End Sub

Jetzt dachte ich, dass man es auch bei einem UFO anwenden kann (bild3). Ich habe den Code dazu wie folgt angepasst und an ein Doppelklickereignis binden wollen.
Private Sub cboIdentQuartettNr_DblClick(Cancel As Integer)
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Me.Recordset.FindFirst "[SpielID]= " & Nz(Me![cboIdentQuartettNr], 0)
End Sub
 
Führe ich den DK aus, dann kommt Laufzeitfehler 3070.
Das Microsoft Access-Datenbankmodul erkennt 'SpielID' nicht als gültigen Feldnamen oder Ausdruck.
Debugge ich das, dann springt er zu der gelb markierten Zeile:
Me.Recordset.FindFirst "[SpielID]= " & Nz(Me![cboIdentQuartettNr], 0)
Ich muss natürlich noch dazu sagen, dass die Abfrage des Ufo ein wenig speziell ist (bild4)
SQL seitig sieht die Abfrage wie folgt aus:
SELECT tblIdentQuartette.SpielID_F, tblIdentQuartette.IdentQuartettID_F, tblSpiele_1.SpielNr, tblVerlag_1.Verlag, tblSpiele_1.Ausgabejahr
FROM tblVerlag INNER JOIN (tblSpiele INNER JOIN (tblVerlag AS tblVerlag_1 INNER JOIN (tblIdentQuartette INNER JOIN tblSpiele AS tblSpiele_1 ON tblIdentQuartette.IdentQuartettID_F = tblSpiele_1.SpielID) ON tblVerlag_1.VerlagID = tblSpiele_1.VerlagID_F) ON tblSpiele.SpielID = tblIdentQuartette.SpielID_F) ON tblVerlag.VerlagID = tblSpiele.VerlagID_F;
.
Ich weiss nicht, was ich anpassen muss, damit das funktioniert. Kann mir da jemand helfen?
Gruß und Danke vorab
Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 01, 2017, 22:57:55
Wenn es im UFormular nur eine SpielID_F gibt, ist eine Fehlermeldung bei der Suche nach SpielID doch eine logische Konsequenz

PS: die Bildanhänge (mit Ausnahme vielleicht der Beziehungen) sind reiner Ballast - für den ver(sch)wendeten Speicherplatz könnte man 5 oder mehr Beispiel-Datenbanken im 2003er-Format hochladen. :(
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 02, 2017, 10:30:59
Hi,
Zitat von: Lachtaube am Juli 01, 2017, 22:57:55
Wenn es im UFormular nur eine SpielID_F gibt, ist eine Fehlermeldung bei der Suche nach SpielID doch eine logische Konsequenz
das mit der SpielID_F habe ich gesehen, auch dahingehend gestern geändert. Dann geht nichts, es kommt noch nicht mal eine Fehlermeldung.
ZitatPS: die Bildanhänge (mit Ausnahme vielleicht der Beziehungen) sind reiner Ballast - für den ver(sch)wendeten Speicherplatz könnte man 5 oder mehr Beispiel-Datenbanken im 2003er-Format hochladen. :(
Das habe ich bei den letzten malen gemacht, DB nach Rückfrage und Bitte hochgeladen. Ergebnis? Ich warte noch immer auf Antwort. Ergo, warum soll ich das noch einmal so machen?

Gruß Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 02, 2017, 11:30:50
Andreas, nach der Ausführung einer der Find-Methoden eines Recordsets, kann in der NoMatch (https://msdn.microsoft.com/de-de/library/office/ff193226.aspx)-Eigenschaft des Recordsets ausgelesen werden, ob die Suche erfolgreich war.
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 02, 2017, 12:07:31
Hallo,
danke für deinen Hinweis. Du meinst also, dass ich den VBA Teil erweitern müsste, damit ich auch ein "Feedback" von der Aktion bekomme, was genau nicht passt. Da ich VBA technisch nicht wirklich den Plan habe, wenn es dann ganz tief rein geht weiss ich nicht, wie ich das zu bewerkstelligen habe. Da bin ich eben auf Hilfe des Forum angewiesen :(.

Gruß Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 02, 2017, 12:48:59
Ich denke eher, dass es keine passenden Daten gibt, was sich durch NoMatch bestätigen lassen sollte.

PS: der Code wird doch auch im Modul des Unterformulars ausgeführt - oder?
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 02, 2017, 13:21:39
Hi,
ja, der Code
Private Sub cboIdentQuartettNr_DblClick(Cancel As Integer)
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Me.Recordset.FindFirst "[SpielID_F]= " & Nz(Me![cboIdentQuartettNr], 0)
End Sub

wird mit dem Ufo frmErfassungUfoIdentQuartette ausgeführt. Wie kann/muss ich den Debug ansetzen, damit ich das "Problem" gelöst bekomme?

Gruß Andreas

Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 02, 2017, 15:22:03
Andreas, Du kannst mit der Taste F9 einen Haltepunkt im Code setzen und dann im Lokalfenster (über das Menü Ansicht einblenden) herumblättern, im Direktbereich Anweisungen ausführen, die Maus über eine Anweisung stellen, wo zeitverzögert der Wert (falls darstellbar) in einem Tooltip angezeigt werden sollte.
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 02, 2017, 20:04:43
Hi,
da war Wartung, sodaß ich erst jetzt antworte, sorry.
okay hab das alles mal eingestellt und ausgeführt. Ich sehe dann im Lokalfenster so viele Fehler, dass ich gar nicht weiß, auf welchen ich mich da konzentrieren muss :(. Wo setz ich da nun wieder an? Kann ich den "log" exportieren, damit den auch jemand anders begutachten kann?
Gruß Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 02, 2017, 22:19:53
Nun, das Lokalfenster zeigt eine Momentaufnahme aller Objekte, Variablen und Eigenschaften an, die zur Zeit den Scope haben. Da es sich bei einem Formular um eine Klasse handelt, kannst Du Me aufklappen und das Recorset anwählen (ist ja alles alphabetisch sortiert). Dort könntest Du z. Bsp. unter RecordCount herausfinden, wieviel Datensätze das Recordset hat. Ein Export ist nicht vorgesehen.

Ich vermute übrigens, dass Dein Unterformular über die Verknüpfung zum Hauptformular so gefiltert ist, dass der Datensatz nicht im Recordset vorhanden ist.
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 02, 2017, 22:38:04
Hi,
okay, bei Recordcount steht eine , Typ Boolean. Ehrlich gesagt, ist das alles so tief, dass ich nicht weiss wo es da hin geht.
Auf Deutsch gesagt, komme ich damit für meine Verhältnisse wohl nciht weiter. Trotzdem Danke, dass du es versucht hast aus mir heraus zu "kitzeln".
Gruß Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Beaker s.a. am Juli 02, 2017, 23:03:15
Hallo Andreas,
Dann versuche doch mal mit Lachtaubes erstem Hinweis weiterzukommen.
Private Sub cboIdentQuartettNr_DblClick(Cancel As Integer)
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Me.Recordset.FindFirst "[SpielID_F]= " & Nz(Me![cboIdentQuartettNr], 0)
MsgBox Me.Recordset.NoMatch  ' <- wenn True, kein DS gefunden
End Sub

gruss ekkehard
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 03, 2017, 16:10:40
Hallo Ekkehard,
das hätte ich ja gemacht, wenn ich gewusst hätte wie ich das im VBA integiere. All das was bei mir im VBA bis heute funktioniert, geht nur weil ich Beispiele aus meiner DB dupliziert und angepasst habe und bis jetzt auch geklappt hat. Wenn dann so etwas kommt, wo man so in der DB nicht vorfindet, dann wird es eng für mich :(.
Ich habe das jetzt mal nach deiner Vorgabe gemacht und ich bekomme die Meldung "Wahr". Das sagt mir, er findet es, aber öffnet es nicht, warum auch immer. Weitergedacht würde ich dann sagen, der VBA Teil muss noch mitgeben, dass der Datensatz mit der Spiel-ID auch im Formular aufgerufen bzw. angezeigt wird. Falsch gedacht oder stimmt das im Ansatz? Wenn ja, was muss ich im VBA tun?
Gruß Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 03, 2017, 16:53:32
Wahr heißt, er findet nichts (Keine [No] Übereinstimmung [Match]) - die Nichtübereinstimmung ist wahr.

PS: An meiner Vermutung aus dem vorherigen Beitrag von mir hat sich nichts geändert.
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 03, 2017, 17:01:01
Hi,
danke fürs erklären was Wahr angeht :). Das frmErfassungUfoIdentQuartette ist verknüpft nach SpielID und verknüpft von SpielID_F. Unter --> Leeren Hauptentwurf filtern = JA. Ist das diese Option die du ansprichst im Beitrag #9? Muss ich da etwas umstellen?
Gruß Andreas
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: Lachtaube am Juli 03, 2017, 17:09:59
Somit können im Unterformular nur Datensätze existieren, die als SpielID_F den Wert der SpielID des Hauptformulars haben. Wenn Du jedoch im Hauptformular suchst, sollten im Unterformular die richtigen Datensätze erscheinen.

Me.Parent.Recordset.FindFirst "SpielID = " & Nz(Me.cboIdentQuartettNr, 0)
Titel: Re: Öffnen eines anderen Datensatzes aus UFO heraus endet in Fehler
Beitrag von: derilzemer am Juli 03, 2017, 17:27:19
Hallo,
Me.Parent....... das war die Lösung. Ja, ich gebe dir gleich Recht, das hätte ich auch selbst herausfinden müssen. Daran denken, das alleine genügt nicht, man muss dann auch mal umsetzen, mehr als ein Fehler kann dabei nicht herausspringen.
Vielen Dank noch einmal.

Gruß Andreas