Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Flexible Abfrage???





Frage

Hallo, ich versuche mich gerade in Access 2000 an einer Datenbank für Freelancer. Diese besteht aus 3 Tabellen: 1. Persönliche Daten Nachname, Vorname, PLZ, Wohnort, Land, Geburtsdatum, email, Studienabschluss, persönlich bekannt 2. Projekterfahrung Branche, Projekt 3. Skills Hier sind 30 Programmiersprachen/Skills aufgelistet. Eingegeben wird hier für jeden Freelancer der entsprechende Skill in der gelisteten Skills von 1(sehr gut)-5 (keine Ahnung). Nun möchte ich für ein bestimmtes Projekt z.B. jemanden mit folgenden skills: C++ 1, Java 3, SQL 4, SmallTalk 1 und für ein anderes Projekt jemanden mit PHP 1, C++ 2, Delphi 4. Im Extremfall soll die Möglickeit bestehen für alle 30 vorgegebenen Skills eine Bewertung einzugeben und dann den entsprechenden falls vorhandenen Datensatz zu finden. Da ich nur über Access Grundkenntnisse verfüge habe ich es einfach mal mit einer Parameterabfrage versucht. Dies hat nach einiger Zeit auch einwandfrei geklappt. Was mich daran aber stört ist, das man anfangs 30 Eingaben in eizelnen Fenstern machen muss bevor die Abfrage startet. Und dies leider auch wenn man nur 3 Skills gesucht sind. Desweiteren ergibt die Abfrage kein Ergebniss wenn man mal keine Eingabe macht. Meine Frage ist nun ob das ganze etwas übersichtlicher und komfortabler geht. Schön wäre eine Art Formular in welchem alle 30 Skills aufgelistet sind mit einem Eingabefeld daneben in welchem man den gewünschten Kenntnissgrad eintragen kann. Dadurch hätte man einen Überblick über seine Eingaben, und könnte diese dann auch nochmal ändern wenn man was falsch eingegeben hat. Wenn alles eingegeben ist (ob nun 1,2 oder 30 parameter) sollte die Abfrage per Knopfdruck gestartet und die Ergebnisse ausgegeben werden. Ich hoffe ich habe mich einigermassen verständlich ausgedrückt und mein Problem ist nachvollziehbar. Wär schön wenn mir da jemand weiterhelfen könnte. In welcher form auch immer :). Schöne Grüsse, Andy

Antwort 1 von oliverV

Hallo Andy,

das die 30 Parametereingaben vor dem Ausführen einer Abfrage ein Problem ist kann man wirklich nachvollziehen.

Gehe folgendermaßen vor:
Erstelle ein ungebundenes Auswahlformular mit ungebundenen Feldern für alle deine Skills (nenne das Formular z.B. „Skillauswahl“).
Erstelle nun eine Abfrage analog zu deiner bisherigen Parameterabfrage, verwende allerdings anstatt deiner Parameter das Kriterium:
[Formulare]![Skillauswahl]![Feldname1]
in der Form würde beim Öffnen der Abfrage der Parameter aus den geöffneten Formular ausgelesen.

Bei dir ist es ja so, das du meistens nicht alle Parameter vorgeben willst, also nur 2 oder 3 relevante vorgeben willst; deshalb verwende:
Wie Wenn(IstNull([Formulare]![Skillauswahl]![Feldname1]);"*";[Formulare]![Skillauswahl]![Feldname1])
Dadurch wird ein Parameter ausgelesen, wenn im Formular einer ausgewählt wurde, wenn allerdings der Parameter nicht ausgewählt wurde gibt es keine Einschränkung bei diesem Kriterium.

Das Kriterium musst du natürlich analog für alle 30 Felder eintragen (nur halt mit [Feldname2], [Feldname3] usw. – oder den entsprechenden „aussagekräftigeren“ Feldnamen).

Erstelle in deinem Formular nun eine Schaltfläche zum Öffnen der Abfrage bzw. eines Auswertungsformulars mit der Abfrage als Datenherkunft (kannst du einfach mit dem Assistenten erstellen).

Bei dir ist es aber eine Überlegung wert, ob man nicht mit „Toleranzen“ bei den Kriterien arbeitet, denn z.Zt. suchst du jemand mit Java-Kenntnissen „3“, dadurch werden dir aber die 1er und 2er nicht angezeigt. Ich würde also mit <= arbeiten, sodass die „3“ als „Mindestanforderung“ zu verstehen ist.
Eine andere Überlegung wäre es wohl auch, ob man eine Toleranz von einem Punkt nach oben zulässt, d.h. eine 3er wird gesucht, es werden aber auch 4er angezeigt; wenn ich mir z.B. 10 Anforderungskriterien vorstelle, ist mit Sicherheit auch jemand interessant der 8 Anforderungen genauso oder besser erfüllt und bei 2 Anforderungen etwas schlechter ist.
Sinn oder Unsinn der Überlegungen kannst nur du aus der Praxis heraus entscheiden.

Gruß

Oliver


Antwort 2 von Karvea

Hallo Oliver,

vielen dank für die schnelle Hilfe. Habs gleich mal ausprobiert und funktioniert besten. Genau so hab ichs mir vorgestellt ;)

Mit der Toleranz hast du natürlich recht. Die Werte hatte ich in meiner Abfrage auch als Mindestanforderung angesehen <=[C++], habs nur irgendwie verpasst reinzuschreiben.

Leider hab ich gerade etwas Probleme das <= in deine Lösung einzubauen. Hab mir die Access Hilfe nochmals angeschaut, aber bin irgendwie zu keiner funktionierenden Lösung gekommen. Wäre nett wenn du (oder wer anderes) mir da nochmals weiterhelfen könntest.

Danke schonmal,
Gruss
Andy

Antwort 3 von oliverV

Hallo Andy,

sofern deine Bewertungsfelder Zahlenfelder sind, versuchs mal mit:

Wie Wenn(IstNull([Formulare]![Skillauswahl]![Feldname1]);"*";<=[Formulare]![Skillauswahl]![Feldname1])

Ungetestet, müsste aber funktionieren.

Gruß

Oliver


Antwort 4 von Karvea

Hi Oliver,

habs hinbekommen, nochmals vielen Dank.

Ich hoff mal das wars jetzt und was ich mir sonst so vorgenommen habe krieg ich alleine hin ;)

Gruss,
Andy

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: