Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

Häeehaah??!!

Das Teil gibts garnet im Objektkatalog!!!!!

Versteh ich jetzt net!!!!

Hilfe???!!!...

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

Geschrieben
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?

Geschrieben

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

Geschrieben

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

Geschrieben
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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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