412 Aufrufe
Gefragt in Datenbanken von ull Einsteiger_in (14 Punkte)
Alls völliges Greenhorn bei Access und VB habe ich folgendes Problem:
Ich habe ein Formular in dem ich die Keys "Wanderjahr" und  "Tour_Nr" mit einigen weiteren Feldern erfasse.
Es gibt schon mehrer Touren zu einem Wanderjahr. Wenn ich nun im Feld Tour_Nr eine Änderung mache und diese Tour existiert bereits, so möchte ich den Datensatz angezeigt bekommen, andernfalls sollen die weiteren Felder leer bleiben. Folgenden 1. Ansatz habe ich gemacht:
Private Sub Tour_Nr_Change()
    Dim rs As DAO.Recordset
    Set rs = Me.RecordsetClone
    rs.FindFirst "TOUREN.TOUR_NR = " & Me.TOUR_NR
End Sub
ich erhalte den Fehler 3070: TOUREN.TOUR_NR wird nicht als gültiger Feldnamen oder Ausdruck erkannt.
Was ist da falsch - Danke für die Hilfe
Ull

4 Antworten

0 Punkte
Beantwortet von
Moin,

bei logischer Aufteilung gehört Wanderjahr und Tour in je eine Tabelle, ggf brauchst du eine weitere Tabelle falls eine Tour in verschiedenen Jahren gegangen wird. Die Relation erfolgt dann Wanderjahr 1 : n Tour, bzw m:n. Die Zwischentabelle WJahrTour nimmt dann nur die Fremdschlüssel auf.

Über ein Unterformular kannst du dann die Wanderungen anzeigen, ändern, ergänzen ganz ohne eine einzige Zeile Code. Zudem siehst du sofort die bereits vohandenen.
0 Punkte
Beantwortet von
Hi el_gomero,
danke für die schnelle Antwort. Ich werde das mit der Aufteilung in 2 Tabellen wohl umsetzten. Aber Tour hat so viele Attribute, dass eine tabellarische Auflistung auch nicht komfortabel ist, weil man da nach rechts scrollen müsste. Bei den anderen Darstellungsformen erhalte ich aber nur einen Satz angezeigt und dann habe ich wieder das gleiche Problem, dass ich die Tour_Nr in dem angezeigten Datensatz ändere, und dann diese Tour mit den zugehörigen Attributen angezeigt haben möchte, wenn sie existiert.
Daher interessiert mich schon, warum TOUREN.TOUR_NR nicht als Feld erkannt wird und was ich da  in meinem VB-Script korrigieren muss.

Vielen Dank und Gruss Ull
0 Punkte
Beantwortet von

Hallo Ull,

hast du für Tour_NR evtl als Text als Datentyp angelegt? Dann lautet der Code

rs.FindFirst "TOUREN.TOUR_NR = '" & Me.TOUR_NR & "'"

Davon abgesehen wird eine Bearbeitung der Daten in Formularen vorgenommen. In einem  Endlosformular könnte zB bei Doppelklick auf einen Datensatz ein Einzelform mit eben diesem DS geöffnet werden um alle Details anzuzeigen. 

Grüße

Jürgen

0 Punkte
Beantwortet von ull Einsteiger_in (14 Punkte)
Hi Jürgen,
sorry, dass ich mich so lange nicht gemeldet habe. Als Freizeit-Accessor bleibt halt fast nur das Wochenende.
Das mit dem Doppelklick auf einen Datensatz im Einzelformular ist eine gute Idee. Da kann man dann beliebig viele Attribute bearbeiten - ich werde das ausprobieren.

TOUREN.TOUR_NR ist Feldgröße Integer und Format Allgemeine Zahl, Im Formular ist das Feld Allgemeine Zahl und trotzdem wird TOUREN.TOUR_NR nicht erkannt.

Danke und Gruss Ull
...