Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Parameterwert ignorieren.





Frage

Hallo Leute, hätte da mal eine Frage. Ich habe ein Formular, in diesem befindet sich ein Textfeld. Das Textfeld ist die Bedingung für eine Abfrage, die man auf knopfdruck aus dem Formular heraus ausführen kann. Ich habe dort die Bedingung in der Abfrage so festgelegt: [Forms]![Formularname]![Textfeld] Das funktioniert soweit einwandfrei und die Bedingung wird auch richtig erkannt. Jetzt habe ich folgendes Problem. Ich möchte dem Benutzer die Möglichkeit geben, nicht nur die Bedingungen einzeln Abzufragen also sondern alle Gleichzeitig. In einer Abfrage wenn ich mehrere Bedingungen kombinieren möchte mach ich das so. ="Bedingung1" OR "Bedingung2" usw. Jetzt habe ich mal versucht, was passiert wenn ich in das Textfeld ="Bedingung1" OR "Bedingung2" usw. reinschreibe und siehe da, es werden keine Werte mehr geliefert. Gebe ich diese Bedingungen genauso geschrieben in die Abfrage anstatt des Parameters ein und führe die Abfrage da aus klappt es. Gibt es einen Ausdruck oder so, dass ich dem Parameter sage ignoriere die Bedingung und zeige alles an? Hoffe Ihr konntet mein Problem verstehen. Schönes Wochenende euch allen. gruß morpheus

Antwort 1 von Marie

nö, sorry, nix verstanden.

Zitat:
Das Textfeld ist die Bedingung für eine Abfrage

versteh ich nicht, Mattscheibe hab.

Schreib mal ein konkretes Beispiel, vielleicht kapier ich dann was Du meinst.

gruß Marie

Antwort 2 von morpheus__85

Hallo Marie,

also pass auf....
Wenn du im Entwurf deiner Abfrage bist und deine Felder reingezogen hast aus deinen TAbellen kannst du ja z.B. beim Mitarbeiternamen ="Maier" eingeben dann wäre des Parameter fest.
Du kannst aber auch als Parameter [Welchen Mitarbeiter möchten Sie?] eingeben, dass wenn man die Abfrage ausführt das Parameterfenster erscheint eingeben.
Wenn man das PArameterfenster nicht will kann man ja als Bedingung ein Textfeld eines Formulares hinterlegen mit
[Forms]![Formularname]![Textfeld]
Das hab ich acuh so gemacht.
Wenn ich also in meinem Textfeld Maier drin stehen hab bekomme ich meine Datensätze zum Mitarbeiter Maier.
Jetzt hätte ich aber acuh gerne die Möglichkeit nicht nur Maier eingeben zu können sondern aucnh Maier und Schmidt.
Im Abfrageentwurf würde ich schreiben ="Maier" OR ="Schmidt" dann bekomme ich alls Datensätze zu den Mitarbeitern Maier und Schmidt.
Wenn ich allerdings in mein Textfeld schreibe ="Maier" OR ="Schmidt" wirft mir die Abfrage gar nichts mehr aus.

Was muss ich denn in welcher Form ins Textfeld schreiben wenn ich eine OR Verknüpfung verwenden möchte, dass mein PArameter der sich aufs Textfeld bezieht dies auch erkennt=?

Ich hoffe du versteht mein Problem jetzt.
dir schon mal vielen Dank

gruß
morpheus

Antwort 3 von lorf55

Hallo morpheus,
ich glaube, du meinst sowas wie die SQL-WHERE-Klausel:
SELECT Name, Gehalt 
FROM Gehaltsliste
WHERE Name='Maier' or Name='Schmidt' and Abt='3fs'
Und so sieht man denn, wo das Problem steckt.

Gruß
lorf

Antwort 4 von morpheus__85

Hallo lorf

ich versuchs mal noch etwas genauer zu beschreiben.
Mal angenommen wir haben eine Tabelle mit Mitarbeiterdaten.
Diese Tabelle heißt tblMitarbeiter und hat z.B. die Spalten Personalnummer, Nachname, Vorname.
Wenn ich jetzt eine Abfrage in der Entwurfsansicht erstelle gehe ich rein und zieh mir die 3 Spalten rein.
Wenn ich jetzt die Abfrage ausführe werden mir alle Mitarbeiter angezeigt, die in der Tabelle vorhanden sind.
Jetzt möchte ich das ganze eingrenzen.
Also schreibe ich bei der Spalte Nachname als Kriterium rein
[Welchen Mitarbeiter möchten Sie?]
Wenn ich jetzt die Abfrage ausführe, ploppt das Parameterfenster auf und ich gebe z.B. Maier ein.
Dann wird mir nur noch der Mitarbeiter angezeigt, der Maier mit Nachname heißt.
Nun möchte ich aber viell. nicht nur den Mitarbeiter Maier haben sondern auch den Mitarbeiter Schmidt.
Wenn ich jetzt statt des Parameters
[Welchen Mitarbeiter möchten Sie?]
als Kriterium ="Maier" ODER "Schmidt" eingebe werden mir alle Mitarbeiter ausgegeben die Maier oder Schmidt heißen.
Wenn ich allerdings die Parameterabfrage
[Welchen Mitarbeiter möchten Sie?] als Kriterium drin lasse und dann in dem Parameterfenster eingebe
="Maier" ODER "Schmidt" wirft die Abfrage nichts mehr aus.
wieso?
Wieso funktioniert die Abfrage wenn ich die Werte direkt reinschreibe aber sie funktioniert nicht wenn ich sie im Parameterfeld reinschrebe... das verstehe ich irgendwie nicht.
Das hier ist nur ein simples Beispiel mit den Mitarbeitern.
Mich würde es nur interessieren wie ich eine ODER Verknüpfung schreiben muss, dass die Abfrage Werte liefert wenn ich die ODER Verknüpfung ins Parameterfenster schreibe das beim Ausführen der Abfrage aufploppt.

gruß
morpheus

Antwort 5 von morpheus__85

hallo leute,

um es viell noch etwas leichter zu machen.
Ist es möglich einen Parameter leer zu lassen?
Eigentlich muss mein Feld immer eingegrenzt werden, wo der Parameter wunderbar seinen Dienst erfüllt.
Jetzt kann es aber auch mal vorkommen das ich diesen Parameter nicht benötige und alles angezeigt haben möchte.
Ich möchte allerdings meine Abfragen nicht neu erstellen deswegen.
Gibt es also eine Mögichkeit das ich den Parameter umgehe der leer bleibt und mir alles angezeigt wird=

gruß
morpheus

Antwort 6 von lorf55

Zitat:
Nun möchte ich aber viell. nicht nur den Mitarbeiter Maier haben sondern auch den Mitarbeiter Schmidt.
Wenn ich jetzt statt des Parameters
[Welchen Mitarbeiter möchten Sie?]
als Kriterium ="Maier" ODER "Schmidt" eingebe werden mir alle Mitarbeiter ausgegeben die Maier oder Schmidt heißen.


Nein, bei mir wird nichts angezeigt.

Deine Parameter-Abfrage ergibt die SQL-Abfrage:
SELECT Personalnummer, Nachname, Vorname
FROM tblMitarbeiter
WHERE (((Nachname)=[Welchen Mitarbeiter möchten Sie?]));

Wenn ich in die eckigen Klammern
"Maier" ODER "Schmidt"
einsetze, ist das eine falsche WHERE Klausel:
WHERE (((Nachname)="Maier" ODER "Schmidt"));

Richtig müsste die so aussehen:
WHERE (((Nachname)="Maier" ODER (Nachname)="Schmidt"));


Zitat:
Ist es möglich einen Parameter leer zu lassen?

Das ergibt die Nachfrage, ob das Nachnamefeld leer ist:
SELECT Personalnummer, Nachname, Vorname
FROM tblMitarbeiter
WHERE (((Nachname)=""));


Ich glaube, du steckst etwas in der *Z*gasse. Aus der kommst du nur durch Vorbereiten der SQL-Anweisung mit VBA. Indem du z.B. zwei Kriterien-Eingabefelder in dein Formular einfügst und dazu ein Feld, mit dem man den Operator (AND, OR) dafür auswählen kann. Diese Eingaben fügst du denn in den SQL-String ein. So macht man das zumindest bei manchen Warenwirtschaftssystemen.


Gruß
lorf