Parameter-Abfrage nicht angezeigt

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Parameter-Abfrage nicht angezeigt

Beitrag 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
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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
Parameter.jpg (29.96 KiB) 3211 mal betrachtet
Gruß Barlee
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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.

???
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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.
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Parameter-Abfrage nicht angezeigt

Beitrag von seve »

Hast du eine Ahnung, wie die lauten könnte? Mit

Code: Alles auswählen

"Gruppe" = ?
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...
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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
seve
**
Beiträge: 38
Registriert: So, 13.01.2008 17:54

Re: Parameter-Abfrage nicht angezeigt

Beitrag 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
Antworten