Pittiplatsch Geschrieben 17. Mai 2005 Geschrieben 17. Mai 2005 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?????
Keo Geschrieben 17. Mai 2005 Geschrieben 17. Mai 2005 also ich wuerde es ueber ne sql abfrage machen und dann per schleife die kritierien abfragen und halt eintragen
Pittiplatsch Geschrieben 18. Mai 2005 Autor Geschrieben 18. Mai 2005 also ich wuerde es ueber ne sql abfrage machen und dann per schleife die kritierien abfragen und halt eintragen Hast du dafür irgend ein Beispiel? Die Idee mit der Schleife ist mir auch schon gekommen, aber mit der Umsetzung haperts etwas.
Keo Geschrieben 18. Mai 2005 Geschrieben 18. Mai 2005 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
Pittiplatsch Geschrieben 18. Mai 2005 Autor Geschrieben 18. Mai 2005 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.
Keo Geschrieben 18. Mai 2005 Geschrieben 18. Mai 2005 ich dachte du stehst auf kompliziert ? 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
Pittiplatsch Geschrieben 20. Mai 2005 Autor Geschrieben 20. Mai 2005 Naja, so kompliziert nun auch wieder nicht Über 'n bissel Code bezüglich der Schleife wär ich schon ziemlich froh. Nur, wie bekomm ich das Ergebnis (die Felder mit Ja) in das nächste DropDownfeld geladen? Einfach FeldKriterium.RowSource = FeldKriterium.RowSource & NeuerWert, oder wie
Keo Geschrieben 20. Mai 2005 Geschrieben 20. Mai 2005 2 arten um in die richtige zeile zu kommen mit dem bereich: einmal kompliziert 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. ?
Keo Geschrieben 20. Mai 2005 Geschrieben 20. Mai 2005 ich glaub du brauchst es eher so das mit dem code oben wuerde keinen sinn ergeben for i=2 to rs.fields.count-1 If rs.fields(i) = "wahr" then dropdown2.rowsource = dropdown2.rowsource & rs.fields(i).name & ";" next
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden