onz Geschrieben 11. Oktober 2010 Geschrieben 11. Oktober 2010 Hallo zusammen, ich habe in C#ein Programm geschrieben, in dem es möglich ist Personenprofile anzulegen und in einer Accessdatenbank abzuspeichern. Jetzt habe ich versucht eine Suchseite für die Datenbank zu bauen. Das klappt auch mit einen Übergabeparameter ohne Probleme. Dann habe ich eine "Erweiterte Suche" programmiert. Hier soll es möglich sein aus 4 Feldern eine Suche zu generieren. Es soll aber nicht zwingend Notwendig sein in alle 4 Felder etwas einzugeben und hier ist mein Problem. Falls alle 4 Felder ausgefüllt sind ist die Select Anweisung noch einfach. Dann verknüpfe ich alle Parameter in der Select Anweisung mit AND. Aber wie kann ich die anderen Fälle am elegantesten lösen. Meine Idee ist bisher folgende, aber das kommt mir zu uneffizient vor: z.B.: Feld1 und Feld 2 sind ausgefüllt. Zuerst prüfe ich alle Parameter ab ob diese ausgefüllt sind. Daraus erkenne ich das nur 2 Parameter Werte enthalten. Somit rufe ich eine Methode auf die diese 2 Parameter an eine Selectanweisung übergibt. Das gleiche mache ich für 1,2,3 und 4 Parameter. Ich will eben vermeiden das leere Felder mit übergeben werden. Dadurch das es aber 4 Felder sind, habe ich 4!=24 Möglichkeiten. Muss ich diese Möglichkeiten alle durch entsprechende if bzw. switch Abfragen abfangen oder geht das auch besser? Vielleicht gibt es auch eine bessere Möglichkeit solche Suchanfragen zu gestalten. Ich wäre für jede Hilfe dankbar. Gruß Onz Zitieren
ronaldus Geschrieben 11. Oktober 2010 Geschrieben 11. Oktober 2010 Hi, ich würde das Select dynamisch zusammenbauen... Du rufst eine Methode auf, deren Signatur alle 4 Parameter enthält. Leere Werte übergibst Du mit NULL. Dann Kannst du das SELECT zusammenbauen... string s = "SELECT * FROM IRGENDWAS WHERE ID NOT NULL AND " if(param1 != null){ s = s+ "irgendwas =" + param1 + "AND" } und so weiter... Gruß Ron Zitieren
onz Geschrieben 11. Oktober 2010 Autor Geschrieben 11. Oktober 2010 Hallo Ron, danke für die schnelle Antwort. Hat wunderbar funktioniert. Ich bin einfach nicht auf "ID IS NOT NULL" gekommen. Manchmal sieht man eben den Wald vor lauter Bäumen nicht Gruß Onz Zitieren
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.