Hallo,
ich habe 2 Formulare, frmSpieleDaten und frmSpielsuche. Wenn ich nun einen Datensatz unter 2000 Datensätzen im Suchformular suche, dann muss ich doch die Möglichkeit haben, dass ich mit einem Klick auf den gefundenen Datensatz springen kann zum editieren oder anschauen, what ever. Da ich keine VBA Kenntnisse :-\ habe aber ahne, dass ich dies wohl unter Ereignis --> Beim klicken damit einstellen muss, die Frage ob mir jemand dazu Hilfestellung geben kann?
mfG
Andreas
Hi,
ist das Formular 'frmSpieleDaten' zum Zeitpunkt der Suche geöffnet oder muss es zur Datenanzeige nach der Suche erst geöffnet werden?
Wie auch immer, erstelle auf deinem Suchformular einen Button mit dem du den 'Sprung' zum Datenformular auslösen möchtest und stelle sicher, dass das ID-Feld der Datenherkunft auf deinem Suchformular vorhanden ist!
Private Sub DeinButton_Click()
Dim lngID As Long
lngID = Me.DeinIDFeld
'Wenn das Formular noch nicht geöffnet ist, wird's hier erledigt
If Not SysCmd(acSysCmdGetObjectState, acForm, "frmSpieleDaten") > 0 Then
DoCmd.OpenForm "frmSpieleDaten"
End If
'Den gesuchten/gefundenenDatensatz anzeigen
Forms!frmEinkauf.Recordset.FindFirst "SpieleDatenId = " & lngID
End Sub
SpieleDatenID bezeichnet das Primärschlüsselfeld deines Formulars 'frmSpieleDaten'
Hallo,
und noch weitere Fragen:
- nach wie vielen Feldern wird denn gesucht, bzw. was wird gesucht ?
- hat die Tabelle für das Formular 'frmSpieleDaten' einen Primärschlüssel ?
- warum überhaupt 2 Formulare ?
Hi,
danke erst einmal für die schnelle Antwort.
Zitat von: database am Januar 02, 2015, 18:40:08
ist das Formular 'frmSpieleDaten' zum Zeitpunkt der Suche geöffnet oder muss es zur Datenanzeige nach der Suche erst geöffnet werden?
Nein ist es nicht.
Ich habe den Code von dir mit einer Änderung so hinterlegt.
Forms![b]frmEinkauf[/b].Recordset.FindFirst "SpieleDatenId = " & lngID in
Forms![b]frmSpielsuche[/b].Recordset.FindFirst "SpieleDatenId = " & lngID
Als "Button" habe ich im Suchfeld das vorhandene Feld ID_games benutzt, welches auch im Datenformulat existiert. Beim ausführen öffnet er auch das frmSpieleDaten, springt jedoch nicht zum Datensatz und öffnet dabei den Debugger mit gelb markierter Zeile
Forms!frmSpielsuche.Recordset.FindFirst "SpieleDatenId = " & lngID
Ich gehe davon aus, dass die von mir durchgefühjrte Änderung stimmt, weiss jedoch nicht, warum er meckert. Selbstverständlich habe ich das ganze auch über eine Schaltfläche versucht, dort kam es zum gleichen Ergebnis.
Was mache ich falsch?
Gruß Andreas
PS:Die Fragen des Kollegen benatworte ich separat.
..
Hi,
Zitat
- nach wie vielen Feldern wird denn gesucht, bzw. was wird gesucht ?
Das frmSpielsuche hat insgesamt 13 Felder. Suchen will bzw. mache ich darin dann über 5 Felder
Zitat
- hat die Tabelle für das Formular 'frmSpieleDaten' einen Primärschlüssel ?
Ja hat es, ID_games
Zitat
- warum überhaupt 2 Formulare ?
Ich bin ja niochtz so der Crack, aber der Übersicht wegen. Es handelt sich hier um eine Sammlerdatenbank (Quartette) mit vielen Datenfeldern. Es gibt dann wiederrum viele Datensätze, der Nummern identisch sind, z.B. 6 x die gleiche Herstellernummer. Der Übersicht halber dachte ich macht es dann Sinn, die zu suchenden Datensätze mit den relevanten Daten an zu zeigen, sprich mit 13 Feldern statt der vorhandenen 40. Von daher dachte ich eben an ein eigenständiges Formular.
Gruß Andreas
Zitat
naja, wenn das Form nicht geöffnet ist, kannst Du auch darin nicht suchen (auf dessen Recordset zugreifen) ..
Öffne das Form mit Übergabe eines Filterkriteriums:
Docmd.Openform "frmSpieleDaten",,, "SpieleDatenId = " & lngID
Oder versteh ich was falsch?
Hi Franz,
danke auch dir. Nein, du verstehst es nicht falsch, sondern hast eventuell überlesen :), dass genau deswegen das ganze im Code schon integriert ist
'Wenn das Formular noch nicht geöffnet ist, wird's hier erledigt
[b]If Not SysCmd(acSysCmdGetObjectState, acForm, "frmSpieleDaten") > 0 Then
DoCmd.OpenForm "frmSpieleDaten"[/b]
Er öffnet ja das Formular auch, aber springt dann nicht zum Datensatz. Von daher hat es noch etwas mit dem Code zu tun oder aber mit meiner Struktur :(
Gruß Andreas
Gruß Andreas
Hallo,
frmEinkauf stammt aus einem Beispiel, das ich für den Lösungsvorschlag herangezogen hatte - übersehen, das auf deinen Formularnamen zu ändern - sorry.
ZitatWas mache ich falsch?
Eigentlich nichts, wahrscheinlich liegt's daran, dass das ID-Feld, der Primärschlüssel der Herkunftstabelle (tblSpielDaten) nicht 'SpieleDatenID' heißt. Ersetze den Namen durch den von dir in der Tabelle verwendeten!
Hallo Database,
okay jetzt hast du mir zumindest einen Deut gegeben, woran es hängen könnte. Das frmSpieleDaten trägt ja bei neuen Datensätzen die Daten in die Tabelle tblSpiele ein. Es gibt also keine Tabelle tblSpieleDaten, habe nur das Formular so benannt. In tblSpiele ist auch das PK Feld ID_games, was ich im Code so auch angepasst habe. Das Feld ID-games ist dann sowohl im frmSpieleDaten wie auch in frmSpielsuche vorhanden. Nun habe ich auch die Zeile
Forms!frmSpielsuche.Recordset.FindFirst [b]"SpieleDatenId[/b] = " & lngID in
Forms!frmSpielsuche.Recordset.FindFirst [b]"SpieleId[/b] = " & lngID
angepasst. Der Fehler mit dem Debugger bleibt :(.
Kann es daran hängen, dass es den Bezug zur Tabelle tblSpiele nicht findet? Sorry wenn sich die Fargen vielleicht sehr nach Anfänger anhören, aber dem ist auch so :(.
Gruß Andreas
Hallo,
du kannst nur ein Feld ansprechen, das am Formular auch so benannt ist bzw./oder in einer Tabelle so benannt ist wie im Code!
Daher:
Forms!frmSpielsuche.Recordset.FindFirst "ID_games=" & lngID
Schau mal genau nach, in deiner Antwort gibt es dazu 2 unterschiedliche Schreibweisen.
In jedem Fall muss im Code der Name des ID-Feldes verwendet werden
Hi,
sorry hatte Besuch und konnte nicht antworten auf dein letztes Anliegen. Aber das wars, es funktioniert jetzt. Vielen Dank für die Hilfe und sorry wegen der missverständlichen Erklärung.
Gruß Andreas