Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA Code für Suchfunktion

Empfohlene Antworten

Veröffentlicht

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

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

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

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

Häeehaah??!!

Das Teil gibts garnet im Objektkatalog!!!!!

Versteh ich jetzt net!!!!

Hilfe???!!!...

PS: Access 2000...hatt's vielleicht damit was zu tun???

Was für'ne Liste benützt Du?

Was meinst du????

Keine Ahnung welche Liste du meinst.

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?

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.