Zum Inhalt springen

[ACCESS] Suche etwas komplizierter


Pittiplatsch

Empfohlene Beiträge

Tja, ich mag es kompliziert.

Hier mein Problem:

Ich möchte eine Suche entwickeln, die auf der Basis einer Tabelle ihre Suchkriterien definiert.

Ich hab mehrere Bereiche und verschiedene Kriterien.

In der Tabelle ist es so aufgebaut, das in der ersten Spalte die Bereiche stehen. Die nächsten Spalten tragen die Namen der verschiedenen Suchkriterien, welche als Ja/Nein definiert sind.

Bereich....Kriterium1....Kriterium2....Kriterium3

Bereich1.......X................X...............X

Bereich2.......X................X

Bereich3.......X

Als nächstes habe ich ein Suchformular mit 3 Feldern.

1. Feld: Textfeld für Suchbegriff

2. Feld: DropDownFeld für Suchbereich

3. Feld: DropDownFeld für Kriterium

Mein Problem liegt jetzt darin, das 3. Feld zu füllen.

Wenn ich im 2. Feld einen Bereich ausgewählt habe, soll das Programm prüfen, welche Spalten zu dem gewählten Bereich mit "Wahr" gefüllt sind, und deren Spaltenüberschrift in das 3. Feld eintragen.

Gibt es irgendeine Lösung dafür, oder muß ich die Kriterien vielleicht doch in eine 2. abelle ausgliedern und über ein Autowertfeld mit der Tabelle für die Suchbereiche verknüpfen?????

Link zu diesem Kommentar
Auf anderen Seiten teilen

klar :)

ein bissel code:

Const adOpenStatic = 3

Const adLockOptimistic = 3

Const strDBPfad = "pfad zur mdb" <--- mdb pfad einfuegen

Dim connSSDB, rs, strSQL

Set connSSDB = CreateObject("ADODB.connection")

Set rs = CreateObject("ADODB.Recordset")

connSSDB.Provider = "Microsoft.Jet.OLEDB.4.0"

connSSDB.ConnectionString = strDBPfad

connSSDB.Open

strSQL = "SELECT * " + _

"FROM tabelle;" <---- richtige tabelle einfuegen

Set rs = connSSDB.Execute(strSQL)

rs.MoveFirst

joa das waer der code zum verbinden zur datenbank

der naechste schritt waer das auslesen, kommt eben drauf an ob die kriterien zeilen- oder spaltenweise stehen, wenn du mir das verraten wuerdest könnte ich dir da weiterhelfen :cool:

bin zur zeit an der arbeit, kann also etwas dauern mit der antwort

um den code zu testen kannst du ja einfach mal nen "msgbox rs("spaltenname")" machen, beim spaltenname musst du natuerlich den namen einer spalte schreibn, die die tabelle enthaelt :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, die Verbindung zur Datenbank hab ich mit VBA einfacher gelöst


dim db as DAO.Database
Dim rs As DAO.Recordset

set db = CurrentDB()
Set rs = db.OpenRecordset("SELECT * FROM Suche", dbOpenForwardOnly)
....
[/PHP]

Also ohne die ganzen const - Variablen.

der naechste schritt waer das auslesen, kommt eben drauf an ob die kriterien zeilen- oder spaltenweise stehen, wenn du mir das verraten wuerdest könnte ich dir da weiterhelfen

In der Tabelle Suche steht alles zeilenweise drin

[u]Nr.....Bereich......Kriterium1......Kriterium2[/u]

1..........a...............ja.................nein

2..........b...............nein..............ja

3..........c...............ja.................ja

usw.

Dabei ist zu beachten, daß die einzelnen Kriterium-Spalten als Ja/Nein-Feld definiert sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich dachte du stehst auf kompliziert ? :D

nunja, den bereich waehlst du ja beim 1. dropdown-feld aus,also muesstest du dessen wert in die suche uebergeben oder du liest solange die zeilen ein, bis rs("Bereich") dem text aus dem dropdown-feld 1 entspricht und dann gehst du ueber ne schleife alle kriterien durch, kann dir dazu gern schoen komplizierten code schreibn wenn du ihn brauchst :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

2 arten um in die richtige zeile zu kommen mit dem bereich:

einmal kompliziert :D

rs.movefirst

do

rs.movenext

loop until (rs.eof) or (rs("Bereichsname") = dropdown1.value)

und einmal einfach über select

Set rs = db.OpenRecordset("SELECT * FROM Suche WHERE (Suche.Bereich)="+dropdown1.value+", dbOpenForwardOnly)

so dann waeren wir in der richtigen zeile

anschließend noch ne kleine for-schleife

for i=1 to Maximale Anzahl der Kriterien

if rs("Kriterium"+i)="Wahr" then dropdown.rowsource = dropdown.rowsource & ...

next

aber irgendwie ergibt das keinen sinn, weil du hättest dann entweder die kriterium nummer oder einfach nur wahr etc. in dem dropdown2

oder hast du die ueberschriften (wo du im beispiel kriterium1 ... hast) schon nach einem richtigem kriterium benannt,also zb männlein / alt usw. ?

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