Zoyee Geschrieben 18. September 2002 Teilen Geschrieben 18. September 2002 Hey Leute, hab mich ja lange net gemeldet, aber jetzt bin ich da... Ich hab ein Prob: Ich soll in VBA eine Suchfunktion hinkriegen, die nach mehreren Kriterien sucht, z. B. Name, Alter, aus einer Tabelle oder einer Abfrage in Access 2000 und das Ergebnis soll unbedingt eine Liste sein mit sortierten Namen oder so. Also das wichtige ist: - mehrere Kriterien - Ergebnis als Liste am Monitor - das ganze soll dann als Formular mit Buttons für den User zu bedienen sein! Achso...vielleicht noch was wichtiges!!!??? ICH HAB KEIN PLAN VON VBA!!! Die Standardsuchfunktion von Access ist ****. Das hört sich meiner Meinung nach net so schwer an, aber ich brauch eben Hilfe als N00b in VBA! Kann mir da jemand paar Tipps oder nen Link oder sowas geben??!! THX Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zoyee Geschrieben 23. September 2002 Autor Teilen Geschrieben 23. September 2002 Leute.... helft mir doch bitte!!! Hab folgendes gefunden: Sub SQL1() Dim DB As Database Dim RS As Recordset Dim QD As QueryDef Dim SQL As String 'Bezug auf aktuelle Datenbank Set DB = CurrentDb 'Neue Abfrage erstellen Set QD = DB.CreateQueryDef("a_Suche") 'SQL-Anweisung SQL = "Select * FROM Stamm WHERE Name LIKE '+???+';" Set RS = DB.OpenRecordset(SQL, dbOpenDynaset, dbOpenForwardOnly) If RS.RecordCount > 1 Then 'mehrere Treffer -> Auswahlliste erstellen While Not RS.EOF Liste.AddItem RS(0).... Was muss hier noch folgen??? RS.MoveNext Wend ElseIf RS.RecordCount = 1 Then 'exakt ein Treffer MsgBox "Hier kommt noch was rein" Else 'kein Treffer -> Hinweis anzeigen MsgBox "Keinen entsprechenden Datensatz gefunden!" End If RS.Close Set DB = Nothing End Sub Ergebnis: Laufzeitfehler ??? - Typen unverträglich und der Zeiger steht bei SET RS = ... Was mach ich denn falsch???? Und was muss LISTE.ADDITEM folgen???? Bitte helft mir... Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fireworker Geschrieben 23. September 2002 Teilen Geschrieben 23. September 2002 Hallöchen, ersetze doch mal: set rs = db.OpenRecordset(SQL, dbOpenDynaset, dbOpenForwardOnly) mit set rs = new Recordset und in der nächsten Zeile rs = db.OpenRecordset(SQL, dbOpenDynaset, dbOpenForwardOnly) Hier mußt Du die Tabellen einlesen: Liste.AddItem RS(0).... Was muss hier noch folgen??? z.B: liste.additem rs(name) & vbtab & rs(alter) Das hier muß andersrum lauten: RS.Close Set DB = Nothing set rs = nothing db.close Ich hoffe ich konnte Dir damit helfen. Viel Spaß beim Probieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zoyee Geschrieben 23. September 2002 Autor Teilen Geschrieben 23. September 2002 Danke erstmal an fireworker!!!! Ich komme bis liste.additem. Er kennt additem net. Wohin soll ich denn verweisen, damit er das kennt???? Welchen Verweis muss ich anklicken??? thx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zoyee Geschrieben 23. September 2002 Autor Teilen Geschrieben 23. September 2002 Häeehaah??!! Das Teil gibts garnet im Objektkatalog!!!!! Versteh ich jetzt net!!!! Hilfe???!!!... PS: Access 2000...hatt's vielleicht damit was zu tun??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fireworker Geschrieben 23. September 2002 Teilen Geschrieben 23. September 2002 Was für'ne Liste benützt Du? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zoyee Geschrieben 23. September 2002 Autor Teilen Geschrieben 23. September 2002 Was meinst du???? Keine Ahnung welche Liste du meinst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fireworker Geschrieben 23. September 2002 Teilen Geschrieben 23. September 2002 Original geschrieben von Kizo Was meinst du???? Keine Ahnung welche Liste du meinst. Du mußt doch wissen, in welches Steuerelement Du Deine Daten schreiben möchtest, oder etwa nicht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tauron Geschrieben 24. September 2002 Teilen Geschrieben 24. September 2002 Moin ! Du kannst Dir das ganze einfacher machen, jedes Listenfeld hat eine Eigenschaft namens RowSource. In dieser steht die Tabelle/Abfrage oder Werteliste mit der er das Listenfeld füllen soll, hier kannst Du jetzt einfach Deinen SQL-String zuweisen: Liste.Rowsource = "SELECT * FROM Stamm WHERE Name LIKE '" & Suchkriterium & "'" Er führt dann das SELECT Statement aus und füllt die Liste mit dem Ergebnis. Voraussetzung ist, das in den Eigenschaften (Reiter "Daten") des Listenfeldes als Herkunftstyp "Tabelle/Abfrage" angegeben ist. gruß Christian Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Zoyee Geschrieben 24. September 2002 Autor Teilen Geschrieben 24. September 2002 Hey, hab's soweit, dass ich es mit einem Kriterium mache. Mein Chef meint, das langt erstmal. Aber das von tauron is auch ganz interessant. THX... Meld mich wieder...bestimmt!!! cu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
David G. Geschrieben 26. September 2002 Teilen Geschrieben 26. September 2002 Original geschrieben von fireworker Hallöchen, Das hier muß andersrum lauten: RS.Close Set DB = Nothing set rs = nothing db.close Ich hoffe ich konnte Dir damit helfen. Viel Spaß beim Probieren Wollte hier nur kurz anmerken, dass das erste richtig ist, also: rs.close set db = nothing Stimmt schon so. Und wie schon angemerkt, du brauchst das Listenfeld ja nicht Manuell zu füllen, indem du per Code die Tabelle durch gehst. Wie schon gesagt wurde, setzte einfach die Listenfeldeigenschaft Rowsource auf den gewünschten Sql - String. So long David Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.