Erst mal ein herzliches Hallo hier ins Forum.
Ich bin ein totaler Access noob und wollte mir gerne eine Musikdatenbank basteln.
Dazu habwe ich schon ein paar Tabellen angelegt.
Die Haupttabelle beinhalten Interpert, Titel, Erscheinungsjahr und die Anzahl der Plazierungen und ob der Titel vorhanden ist.
Das Formular welches ich dazu erstellt habe ist im anhang zu sehen.
Ich habe es durch Suche im Netz geschafft eine Suchfunktion zu basteln die mir das Listenfeld mit Titeln füllt wenn ich im Textfeld einen Interpreten eingebe und den Button drücke.
Der Code dazu sieht so aus
Private Sub Befehl45_Click()
Dim Rst As DAO.Recordset
Dim strFind As String
Dim strsql As String
Dim Kuenstler As String
Kuenstler = Me!istInterpret.Value
With Me.Form
Set Rst = CurrentDb.OpenRecordset(.RecordSource, dbOpenSnapshot)
strFind = "Interpret Like '*" & Me!istInterpret & "*'"
Rst.FindFirst strFind
If Rst.NoMatch Then 'nicht gefunden
MsgBox "Der gesuchte Interpret '" & Me!istInterpret & _
"' wurde nicht gefunden", , "Verschollen?"
Else 'gefunden
Me.Recordset.FindFirst "ID = " & Rst!ID
'.Recordset.FindFirst strFind
!Titel.SetFocus
End If
Rst.Close: Set Rst = Nothing
End With
strsql = "SELECT Titel FROM Charts WHERE Interpret ='" & Kuenstler & "'"
Me!istTitel.RowSource = strsql
Me!istTitel.Requery
End Sub
Nun zu meinem eigentlichen Problem.
Ich möchte dann nach Auswahl des Titels aus dem Listenfeld das die unteren Felder mit den entsprechenden Datensätzen zu eben diesm Interpreten und diesem Titel gefüllt werden.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und
hoffe es kann mir jemand helfen.
Schon mal vorab vielen Dank
Gruß
Frank
[Anhang gelöscht durch Administrator]
Hallo,
mhmm, mit dem Code filterst Du das Formular-Recordset (es werden alle Datensätze mit dem angebenen Künstler angezeigt) und DAS Listenfeld wird mit genau den gleichen Datensätzen gefüllt.
Vermutlich willst Du etwa dieses:
Private Sub Befehl45_Click() 'bessere Benamsung benutzen!
Dim strsql As String
Dim Kuenstler As String
Kuenstler = Me!lstInterpret.Value ' vermutlich "l" (el) statt "i" (iiiii)
strsql = "SELECT Titel FROM Charts WHERE Interpret ='" & Kuenstler & "'"
Me!lstTitel.RowSource = strsql ' vermutlich "l" (el) statt "i" (i)
Me!lstTitel.Requery ' vermutlich "l" (el) statt "i" (iiiii)
End Sub
und
Sub lstTitel_Click()
Me.Filter= "Titel = '" & Me!lstTitel.column(0) & "'"
Me.Filteron=true
End Sub
Hallo Franz,
vielen Dank erst mal für deine Antwort.
Ich möchte ja, dass das Listenfeld mit allen Titeln des einen Interpreten gefüllt wird.
Ich denke mal ich kan dan mit Me!lstTitel.SetFocus
auf den entsprechenden Datensatz verweisen und die unteren Felder werden mit den restlichen Infos gefüllt.
Der Tipp mit dem istTitel_Click() Ereignis fehlte mir ja zur Gänze.
Vielen Dank erst mal. Werde mich noch ein wenig durchwurschteln.
Gruß aus dem Rheinland
Frank
Hallo,
ZitatIch möchte ja, dass das Listenfeld mit allen Titeln des einen Interpreten gefüllt wird.
wird es doch mit der "Button"-Ereignisprozedur...
Zitat
Ich denke mal ich kann dann mit Code:
Me!lstTitel.SetFocus
auf den entsprechenden Datensatz verweisen und die unteren Felder werden mit den restlichen Infos gefüllt.
Setfocus setzt lediglich den
Fokus auf das Listenfeld.... sonst nichts. Dadurch wird auch auf nichts "verwiesen...
ZitatDer Tipp mit dem istTitel_Click() Ereignis fehlte mir ja zur Gänze.
Diese Prozedur sorgt dafür, dass das Formular den entspr. Titel, der im Listenfeld angeklickt wird, mit allen anderen Daten dieses Datensatzes, für den gebundene Textfelder vorhanden sind, anzeigt.
Hallo,
vielen Dank für die Erklärungen.
Bin jetzt schon ein ganzes Stück weiter.
Gruß
Frank
... jetzt bekomme ich noch einen Syntaxfehler in der SQL Anweisung, obwohl ich nichts geändert habe
Der Fehler taucht hier strsql = "SELECT AWN FROM Charts WHERE Interpret ='" & Kuenstler & "' AND Titel='" & istTitel & "'"
auf.
Kann mir vielleicht jemand sagen woran es liegt?
gruß
Frank
...ich habe das Problem identifizieren können.
Es liegt daran wenn die Variable im SQL-String ein Hochkomme beinhaltet.
Schade dann muss ich alle Titel in der Tabelle die ein Hochkomma beinhalten umbenennen.
Oder weiß jemand wie ich das Problem umschiffen kann?
Bin für jede Hilfe dankbar
Gruß
Frank
Moin Frank
tausche die ' gegen & chr(34):
strsql = "SELECT AWN FROM Charts WHERE Interpret =" & chr(34) & Kuenstler & chr(34) & " AND Titel=" & chr(34) & istTitel & chr(34)
Harald
Hallo Harald,
danke erst mal für deine Antwort.
Leider bekomme ich eine Fehlermeldung in der Sysntax der SQL-Anweisung.
Ich denke auch, dass Du mich da etwas falsch verstanden hast.
In der Variablen "istTitel" erscheinen Hochkommata. Und damit kommt die
openrecordset Anweisung nicht klar.
Denn wenn ich in meiner Ursprungstabelle die Hochkommata weglasse funktioniert es
Bin weiterhin für jeden Tip dankbar
Gruß
Frank
Hi
ich denke ich habe Dich nicht mißverstanden.
Im Beispiel gibt es einen Feldinhalt, der ein Hochkomma enthält.
Im Formular gibt es eine Befehlsschaltfläche, die eine Abfrage modifiziert, so dass nur der Inhalt mit dem Hochkomma angezeigt wird.
Harald
PS vielleicht kommt die Fehlermeldung dadurch zustande, dass je ein Leerzeichen vor und nach dem & fehlt.
[Anhang gelöscht durch Administrator]
Hallo Harald,
danke Dir.
War mein Fehler.
Die blöden Leerzeichen
Gruß
Frank