Pittiplatsch Geschrieben 17. Mai 2005 Teilen 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????? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Keo Geschrieben 17. Mai 2005 Teilen Geschrieben 17. Mai 2005 also ich wuerde es ueber ne sql abfrage machen und dann per schleife die kritierien abfragen und halt eintragen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 18. Mai 2005 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Keo Geschrieben 18. Mai 2005 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 18. Mai 2005 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Keo Geschrieben 18. Mai 2005 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pittiplatsch Geschrieben 20. Mai 2005 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Keo Geschrieben 20. Mai 2005 Teilen 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. ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Keo Geschrieben 20. Mai 2005 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.