Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular Abfrage

Begonnen von einfachf, Januar 19, 2012, 09:57:31

⏪ vorheriges - nächstes ⏩

einfachf

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]

DF6GL

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

einfachf

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

DF6GL

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.

Frank Glaus

Hallo,

vielen Dank für die Erklärungen.
Bin jetzt schon ein ganzes Stück weiter.

Gruß
Frank

einfachf

... 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

einfachf

...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

bahasu

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
Servus

einfachf

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

bahasu

#9
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]
Servus

einfachf

Hallo Harald,

danke Dir.
War mein Fehler.
Die blöden Leerzeichen

Gruß
Frank