Seite 1 von 1
Parameter-Abfrage nicht angezeigt
Verfasst: Mo, 28.01.2008 13:22
von seve
Hallo,
Ich hab ein kleines Problem. Ich hab eine Abfrage, die etwa so aussieht:
Code: Alles auswählen
SELECT * FROM "Tabelle" WHERE "Kriterium" = :Kriterium_hier_eingeben
Das funktionniert, solang ich die Option "SQL-Kommando direkt ausführen" nicht aktiviert habe.
Meine Abfrage benötigt aber diese Option (weil u.a. noch ein CONCAT vorkommt). Wenn diese Option dann aktiviert ist, fragt Base nicht mehr nach dem Kriterium, sondern liefert nur eine leere Abfrage.
Hat jemand eine Idee?
Gruss Seve
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Mo, 28.01.2008 21:48
von Barlee
Hallo seve,
CONCAT benötigt nicht zwangsläufig diese Option.
Folgendes Bild zeigt eine kleine Abfrage. Bei Ausführung wird der Parameter erfragt. SQL direkt ausführen ist
nicht aktiviert.

- Parameter.jpg (29.96 KiB) 3272 mal betrachtet
Gruß Barlee
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Di, 29.01.2008 13:43
von seve
Hallo,
Ich hatte es also falsch im Kopf; was nicht geht, wenn "SQL direkt ausführen" nicht aktiv ist, ist CASE WHEN.
Ich habe das Problem in meiner Adress-Datenbank (siehe
viewtopic.php?f=8&t=15633 ). Dort habe ich eine Abfrage mit Parameterabfrage, die mir Adressen aus einer bestimmten Gruppe liefert. Wenn aber bei der Parametereingabe nichts eingegeben wird, sollen alle Einträge angezeigt werden.
Ich habe folgenden Code:
Code: Alles auswählen
SELECT
:GruppenNummer_eingeben AS "GruppeEingabe",
"Gruppe", "Nachname", "Vorname", "Strasse", "Nr", "PLZ", "Ort"
FROM "Kontakte"
WHERE
"Gruppe" =
(CASE
WHEN "GruppeEingabe" = ''
THEN "Gruppe"
ELSE "GruppeEingabe"
END)
Wenn ich also die o.g. Option aktiv habe, fragt er mich nicht nach dem Parameter. Wenn ich sie deaktiviere, kriegt er das mit dem CASE WHEN nicht hin.
???
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Mi, 30.01.2008 12:06
von seve
Ich bin das CASE WHEN jetzt also umgangen, habe die Option "SQL direkt ausführen" deaktiviert. Mein Code sieht nun folgendermassen aus:
Code: Alles auswählen
SELECT
:GruppenNummer_eingeben AS "GruppeEingabe", "Nachname", "Vorname", "Strasse", "Nr", "PLZ", "Ort" FROM "Kontakte"
WHERE ( "Gruppe" = "GruppeEingabe" OR "Gruppe" + "GruppeEingabe" = "Gruppe" )
Nun möchte ich das Resultat weiter verwenden; ich speichere die Abfrage als Ansicht.
Das Problem stellt sich weiterhin. Wenn ich die Ansicht öffnen will, fragt er nicht nach dem Parameter... Das gleiche Ergebnis, wie wenn ich "SQL direkt ausführen" aktiviert habe.
Nun habe ich (glaub ich) wirklich keine Idee mehr...
Gruss
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Fr, 01.02.2008 21:28
von Barlee
Hallo seve,
Wenn ich also die o.g. Option aktiv habe, fragt er mich nicht nach dem Parameter.
Ich vermute, dass die Syntax für Parameterabfragen in diesem Modus eine andere ist.
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Fr, 01.02.2008 21:33
von seve
Hast du eine Ahnung, wie die lauten könnte? Mit
oder so gehts auch nicht...
Mein Problem ist ja vor allem, dass die Parameter nicht funktionnieren, wenn ich die Abfrage als Ansicht speichere. Aber ich denke, das ist zusammenhängend mit dem oben...
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Fr, 01.02.2008 23:04
von Barlee
Hallo seve,
leider habe ich bzgl. des korrekten Syntax auch keine Idee. An das Fragezeichen hatte ich auch schon gedacht....
---
Eine Parameterabfrage als View zu speichern wird meiner Ansicht nach ohnehin nicht funktionieren.
Aus Deiner Abfrage
Code: Alles auswählen
SELECT
:GruppenNummer_eingeben AS "GruppeEingabe", "Nachname", "Vorname", "Strasse", "Nr", "PLZ", "Ort" FROM "Kontakte"
WHERE ( "Gruppe" = "GruppeEingabe" OR "Gruppe" + "GruppeEingabe" = "Gruppe" )
musst Du doch in diesem Fall keinen View erstellen, nur weil Du das Resultat weiterverwenden möchtest. Kommst Du hier nicht mit einem äußeren SELECT weiter?
Gruß Barlee
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Sa, 02.02.2008 07:52
von seve
Hi Barlee!
Mein Problem ist ja, dass meine Adressen-Abfrage mehrstufig ist. Ich brauche also die Parameterabfrage in der Hierarchie zuunterst, und dann mache anschliessend darauf andere Abfragen.
Ich hatte noch folgendes versucht:
Code: Alles auswählen
SELECT "Nachname", "Vorname", "Strasse", "Nr", "PLZ", "Ort" FROM "Kontakte" WHERE "Kategorie" = '1' AND "Gruppe" = :GruppenNummer AND "aktiv" = 'true'
als Temp.
Code: Alles auswählen
SELECT "Kontakte".* FROM "Kontakte", "temp" WHERE "Kontakte"."Nachname" = "temp"."Nachname"
Jetzt fragt er mich zwar nach dem Parameter, gibt dann aber folgenden Fehler: "The data content could not be loaded. No data is available"
Und im direkten SQL Modus kann man ohnehin keine SELECTs von Abfragen machen...
Mit folgendem klappts überhaupt nicht...
Code: Alles auswählen
SELECT "Kontakte"."Nachname" FROM "Kontakte"
INNER JOIN
SELECT "temp"."Nachname" FROM "temp"
ON "Kontakte"."Nachname" = "temp"."Nachname"
Gibt es nicht irgendeinen Weg, mit dem man mit einem View auf eine Abfrage zugreifen kann?
Gruss und danke
Re: Parameter-Abfrage nicht angezeigt
Verfasst: Mo, 04.02.2008 20:29
von seve
Ich habs jetzt so gelöst, dass ich statt einer Parameter-Abfrage eine neue Tabelle erstellt habe, in der der Parameter eingegeben werden kann. Die Abfrage greift dann auf diese Tabelle zu.
Wenn man eine Parameter-Abfrage hat, kann man damit sowieso keinen Serienbrief machen. (Zumindest soviel ich gemerkt habe.) Daher kann ich die Parameter-Abfrage sowieso unbrauchbar...
Danke trotzdem für die Hilfe.
Gruss seve