Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: eve083 am Dezember 09, 2011, 13:25:15

Titel: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 09, 2011, 13:25:15
hab wieder mal ein Problem.
Möchte gerne bei Auswahl eines Teilnehmers aus einem Listenfeld (lstTeilnehmer) eingefügt im HF (frmSchimeisterschaften) einen Datensatz im ufoTeilnehmer (tblSkiTeil). Wenn er gefunden wird, soll er angezeigt werden, wenn es den datensatz noch nicht gibt soll er einen leeren Datensatz anzeigen (zum neu anlegen)

das ufo (daten aus tblSkiTeil) ist mit ski_nr_f zum HF über ski_nr verbunden und zum Listenfeld mit teil_id und teil_id_f "kombinierbar".

mein derzeitiger Code sieht so aus:


Private Sub lstTeilnehmer_Click()

Dim rs As Object

cmdRueber.Enabled = True
cmdZurueck.Enabled = False

Set rs = CurrentDb.OpenRecordset("tblSkiTeil", dbOpenDynaset)
rs.FindFirst "ski_nr_f=" & Str(Me!ski_nr) & " AND teil_id_f=" & Str(Me!lstTeilnehmer)

If rs.NoMatch Then DoCmd.GoToRecord , , acNewRec

If rs.NoMatch = False Then
DoCmd.GoToRecord acDataForm, "ufoTeilnehmer", acGoTo


End If
Exit sub
End sub



Fehlermeldung: Das Objekt ufoTeilnehmer ist nicht geöffnet!

Bitte um Hilfe! Danke
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 09, 2011, 13:51:08
Hallo,


ein UFO kann nicht auf diese Art angesprochen werden..    setz erst den Fokus auf das UFO-Steuerlement und evtl. dann auch noch auf das Unterform selber, dann springe mit GotoRecord an den gewünschten Datensatz:



Me!tblSkiTeil.Setfocus
Me!tblSkiTeil.Form.Setfocus

If rs.NoMatch Then
DoCmd.GoToRecord , , acNewRec
Else
DoCmd.GoToRecord , , acGoTo wohin auch immer
End If

Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 09, 2011, 14:11:48
Fehler: "Kann das angesprochene FELD tblSkiTeil nicht finden" Wieso FELD?? is ja eine Tabelle. das anzeigende ufo heißt ufoTeilnehmer.

und "wohin auch immer"? ich will dass er den gefundenen Datensatz anzeigt. Wie mache ich das?
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: database am Dezember 09, 2011, 15:04:20
Hallo,

sieh mal hier rein - um den Bezug zum UFo ordnungsgemäß herzustellen ...  auch den Link in diesem FAQ-Beitrag!

http://www.donkarl.com?FAQ4.2 (http://www.donkarl.com?FAQ4.2)

Du benötigst weiter einen Bezugswert im UFo also ein Feld, das sich mit der Auswahl im Listenfeld vergleichen läßt.
Am Besten wäre da natürlich ein Schlüsselfeld dazu geeignet.
Wenn du auf die Liste klickst und einen Teilnehmer auswählst - was ist denn da die Gebundene Spalte, welchen Wert enthält denn die?
Dieser Wert MUSS dann auch im UFo zu finden sein.

Navigieren kannst du dann auf den gesuchten Datensatz mit...

Me.DeinUnterformular.Recordset.FindFirst ("DeinSuchfeld=" & DeineAuswahlInDerListe)
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 09, 2011, 20:03:49
hey SUPER danke. Seiten sind als Favoriten schon gespeichert! :-)

allerdings komm ich da nicht weiter. er kennt den recordset nicht. ich bin ein bissi verwirrt was ich von meinem code lassen und was ersetzen soll....

also nochmals zur Übersicht:
Liste = lstTeilnehmer (geb Spalte: teil_id)
hfo = frmSchimeisterschaften (Schlüssel: ski_nr)
ufo = frmSchimeisterschaften (Fremdschlüssel: ski_nr_f und teil_id_f)

hab jetzt das und das funkt nicht:

Private Sub lstTeilnehmer_Click()
If errorhandling Then On Error GoTo fehlerbehandlung

Dim rs As Object

cmdRueber.Enabled = True
cmdZurueck.Enabled = False

Set rs = CurrentDb.OpenRecordset("tblSkiTeil", dbOpenDynaset)
'rs.FindFirst "ski_nr_f=" & Str(Me!ski_nr) & " AND teil_id_f=" & Str(Me!lstTeilnehmer)

Me![frmSchimeisterschaften_ufoTeilnehmer].SetFocus
DoCmd.GoToRecord , , acNext

Me.frmSchimeisterschaften_ufoTeilnehmer.rs.FindFirst ("teil_id_f=" & Str(Me!lstTeilnehmer)) And ("ski_nr_f=" & Str(Me!ski_nr))

If rs.NoMatch Then
DoCmd.GoToRecord , , acNewRec
Else
DoCmd.GoToRecord , , acGoTo '??'

End If
Exit sub
End sub
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: database am Dezember 09, 2011, 21:07:24
Hallo,

hab' nur mal schnell drügergelesen ...

Dim rs As Object  ... ist zwar grundsätzlich möglich aber ...
Dim rs As DAO.Recordset  ....  passt einfach besser  ;)

Set rs = CurrentDb.OpenRecordset("tblSkiTeil", dbOpenDynaset) ... wozu eigentlich?
Du sprichst dieses Recordset nirgendwo an!

DoCmd.GoToRecord , , acNext  ... warum wechselst du nach dem Focussetzen den Datensatz?

Me.frmSchimeisterschaften_ufoTeilnehmer.rs.FindFirst ("teil_id_f=" & Str(Me!lstTeilnehmer)) And ("ski_nr_f=" & Str(Me!ski_nr))

...kann nicht stimmen, du benötigst das Recordset des Unterformulars, welches du wie unten ansprechen kannst!

Me.frmSchimeisterschaften_ufoTeilnehmer.Recordset.FindFirst

("teil_id_f=" &  Me!lstTeilnehmer & " And ski_nr_f=" &  Me!ski_nr)  ... wenn die ID Felder LongInteger sind, die gebundene Spalte des Listenfeldes ein LongInteger ist und in ski_nr eine Zahl steht
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 09, 2011, 21:14:06
Hallo,




Private Sub lstTeilnehmer_Click()
On Error GoTo fehlerbehandlung

Dim rs As Dao.Recordset
Me!cmdRueber.Enabled = True
Me!cmdZurueck.Enabled = False

Set rs = Me!frmSchimeisterschaften_ufoTeilnehmer.Form.Recordset

rs.FindFirst "teil_id_f=" & Me!lstTeilnehmer.Column(0)
If rs.NoMatch Then
Me!frmSchimeisterschaften_ufoTeilnehmer.Setfocus
Me!frmSchimeisterschaften_ufoTeilnehmer.Form.Setfocus
Docmd.Gotorecord ,, acNewRec
End If

Set rs = Nothing

Exit Sub
fehlerbehandlung:
.
.
.
Resume next

End sub
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: database am Dezember 09, 2011, 21:18:34
Hallo,

ich würde zusätzlich noch das da auch gleich ändern :

If errorhandling Then On Error GoTo fehlerbehandlung

LG
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 09, 2011, 21:21:17
ja...  ;D
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: database am Dezember 09, 2011, 21:23:49
eh...  ;D

somit ist dann vom Ursprung nimmer viel über geblieben ...
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 09, 2011, 21:25:29
Um den ist es ja auch nicht schade..    ;D ;D
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 11, 2011, 10:22:45
ne is mir auch nicht schade drum. war ja nur mehr zusammengebastelt!

danke fürs schnell drüberschauen. und danke für die erklärungen!! die id´s sind alle Longinteger. funktioniert super, so lange der datensatz vorhanden ist. wenn der teilnehmer noch nicht angelegt ist, gibts aber eine fehlermeldung:

"Fehler 2449: In einem Ausdruck ist eine dort nicht zulässige Methode angegeben!"

UND

"Fehler 2105: sie können nicht zu dem angegebenen Datensatz springen!"

???
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 11, 2011, 11:02:52
Hallo,

ok, dann mußt Du diesen Zustand eben abfangen...

z. B.


If rs.BOF and rs.EOF Then











Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 11, 2011, 11:28:57
hab das in der hilfe recherchiert und dann nach MEINEM logischen verständnis statt dem "noMatch" eingesetzt. Dann zeigt er mir den erste Datensatz an, statt einem leeren!  :-[

also bitte verrate mir wo das wirklich hin gehört!!
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 11, 2011, 16:21:01
Hallo,



nein,das gehört direkt nach   "set rs= .... "


Was soll denn passieren,  wenn es keine (zugehörenden)   DS im Unterformular gibt. Normalerweise steht dort immer ein neuer,leerer DS, sofern "Anfügen zulassen"auf Ja steht.

Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 11, 2011, 20:23:19
hey,

hab das so eingesetzt, jetzt macht er aber gar nichts mehr beim anklicken.
"anfügen zulassen" ist auf JA und ja es sollte ein leerer DS angezeigt werden.

aber ja stimmt, es wird kein leerer DS angezeigt wenn ich per Navigationsschaltflächen bis zum Ende hüpfe. der Pfeil mit dem Sternchen (>*) ist auch ausgegraut. woran liegt das denn??
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 12, 2011, 08:10:48
Hallo,

dann ist die Datenherkunft des Unterformulares nicht aktualisierbar.  Vermutlich steht dort eine Abfrage, die Berechnungen ausführt oder aber die über mehrere Tabellen verknüpft (wenn nicht irgendeine andere Form-Eigenschaft da dazwischenfunkt, z. B. "Recordsettyp")


Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 12, 2011, 10:50:17
ok es liegt am Feld MaxBeitrag, den ich aus der Abfrage hole.
das war diese Geschichte:
http://www.access-o-mania.de/forum/index.php?topic=15111.0 (http://www.access-o-mania.de/forum/index.php?topic=15111.0)

muss ich also auf eine dieser beiden funktionen verzichten???  :-[
das wäre gar nicht gut!!
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 12, 2011, 10:53:14
habe es jetzt ohne MaxBeitrag versucht, er zeigt mir zwar einen leeren Datensatz an, aber Fehler 2449 wird immer noch angezeigt!!  :-[
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: DF6GL am Dezember 12, 2011, 16:16:50
Welche Codezeile ist dann markiert?
Titel: Re: Datzensatz im ufo suchen und anzeigen
Beitrag von: eve083 am Dezember 13, 2011, 12:16:38
KEINE!!

Aber ich habe jetzt den Teil mit dem "zeige mir ein leeres Feld an" weggelassen. So gehts!

DANKE