Zum Inhalt springen

VBA Code für Suchfunktion


Zoyee

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...