Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

owenstone
**
Beiträge: 48
Registriert: Fr, 15.06.2012 12:31

Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von owenstone »

Hallo liebe Community,

komme einfach nicht weiter.

Habe bei einer Abfrage durch den Befehl: "Bestand"."ObjektStr" + SPACE( 1 ) + "ObjektHNR" AS "Straße", verknüpft, um dann in einem
Formluar, dies als eine Aussage zu bekommen.
Dies funzzt auch.
Aber nur so lange die Datenfeld auch einen Inhalt haben.
Fehlt bei der Straße ein Eintrag im Datenset, so verschwinden in der Abfrage in dem betreffenden Datensatz, wo der Namen der Straßen fehlt, auch sogleich die Hausnummer.
Dies könnte ich lösen, in dem ich einen Platzhalter in dem Datenfeld einfüge.
Aber gibt es keine elegantere Lösung?
Mit freundlichen Grüßen

owenstone
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von RobertG »

Hallo Owenstone,

dass

Code: Alles auswählen

 "Bestand"."ObjektStr" + SPACE( 1 ) + "ObjektHNR" AS "Straße"
mit dem Eintrag SPACE(1) funktioniert, war mir neu.
Folgendes dürfte Dir aber weiter helfen, sofern es sich um die interne HSQLDB handelt:

Code: Alles auswählen

 "Bestand"."ObjektStr" + IFNULL(' ' + "ObjektHNR",'') AS "Straße"
Wobei es sich bei den eingefügten Zeichen immer um Hochkommata handelt.
Mit IFNULL(Ausdruck1, Ausdruck2) wird Ausdruck2 dann gewählt, wenn Ausdruck1 leer ist. Das kann auch bei Rechnungen recht sinnvoll sein. Angenommen, Du willst den Bestand einer Kasse ermitteln. Das machst Du in einer Abfrage mit

Code: Alles auswählen

"Einnahmen"-"Ausgaben" AS "Bestand"
Nur merkwürdig - trotz lauter Einnahmen bleibt der Bestand immer leer, solange keine Ausgaben getätigt wurden. Mit einem leeren Feld kann Base nicht rechnen. Deshalb ist die folgende Anweisung schon einmal besser:

Code: Alles auswählen

"Einnahmen"-IFNULL("Ausgaben",0) AS "Bestand"
Jetzt wird gerechnet, auch wenn keine Ausgaben da sind. Fehlen aber Einnahmen, so kann weiter munter ausgegeben werden, der Bestand bleibt immer noch leer. Voll auf der sicheren Seite ist man mit der folgenden Variante:

Code: Alles auswählen

IFNULL("Einnahmen",0)-IFNULL("Ausgaben",0) AS "Bestand"
Gruß

Robert
owenstone
**
Beiträge: 48
Registriert: Fr, 15.06.2012 12:31

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von owenstone »

Mensch Robert :lol: ,

das ist Wahnsinn!

So schnell schon eine Antwort parat :lol: !

Ich habe Deine Lösungen zwar noch nicht probiert, mangels Zeit, aber ich bin mir sicher, dass Du die Lösung meines Problems geliefert hat.
Wenn es wider Erwarten - was ich aber nicht glaube - doch nicht klappen sollte, werde ich mich hier noch einmal melden.

Ansonsten.
:D Bitte mach weiter so :D !
Mit freundlichen Grüßen

owenstone
owenstone
**
Beiträge: 48
Registriert: Fr, 15.06.2012 12:31

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von owenstone »

Hi Robert,

hab's heut getestet - und Du ahnst es schon :( .

Bekomme die Fehlermeldung: Syntax Error Expression SQL.

Du hast im Vorfeld erwähnt, dass es sich um eine interne HSQLDB handeln muss.

Geht es vielleicht deswegen nicht?
Wie kann ich heraus finden, ob ich eine habe?
Mit freundlichen Grüßen

owenstone
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von F3K Total »

Hallo,
guckst Du unten:
embeddedHSQLDB.png
embeddedHSQLDB.png (1.64 KiB) 1949 mal betrachtet
Gruß R
owenstone
**
Beiträge: 48
Registriert: Fr, 15.06.2012 12:31

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von owenstone »

Hallo cw7,

hab' ich gekuckt :D .

Un' gefunne'!

Manchmal ist das Leben viel einfacher als man denkt.

Hab' ich also eine interne HSQLDB.

Der Befehl funzzt leider nicht.
Mit freundlichen Grüßen

owenstone
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von F3K Total »

Hallo,
die Fehlermeldung hört sich nach einem fehlenden Hochkomma o.ä. an,
kopiere doch deinen Code mal hierher.

Gruß R

PS: was heißt cw7?
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von DPunch »

Servus

Mögliche Ursache sind auch die Pluszeichen, die zur String-Verkettung benutzt werden.
Entweder alle "+" durch "||" ersetzen, oder aber "SQL-Kommando direkt ausführen" aktivieren.
owenstone
**
Beiträge: 48
Registriert: Fr, 15.06.2012 12:31

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von owenstone »

Also der Tipp von DPunch war nicht schlecht.

Wenn ich also den Befehl von Robert eintrage und dann auf speichern gehe, bekomme ich die o.g. Fehlmeldung. Drücke ich aber zuvor auf SQL Befehl direkt ausführen und dann speichern. Geht dies vonstatten. Die Abfrage danach zeigt mir auch das Ergebnis.

Dies ist der abgewandelte Befehl von Robert.
"Bestand"."InhabVornam" + IFNULL ( ' ' + "Bestand"."InhabName",' ') AS "Inhaber Name",

aber das Ergebnis ist das gleiche wie ich schon bei der Eröffnung dieses Themas erwähnt habe. Ist in dem Datenfeld Vornamen kein Eintrag vorhanden, führt dieser Befehl auch dazu, dass das Datenfeld Namen dann auch keine Anzeige macht.

:?: :?: :?: :?:
Mit freundlichen Grüßen

owenstone
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von F3K Total »

Hi,
versuch es mal so:

Code: Alles auswählen

IFNULL ("Bestand"."InhabVornam",'Vorname fehlt') || IFNULL ( ' '||"Bestand"."InhabName",' Nachname fehlt') AS "Inhaber Name",
Gruß R
owenstone
**
Beiträge: 48
Registriert: Fr, 15.06.2012 12:31

Re: Fehler bei Verbind. von 2 Datenfelder zu 1 in Abfrage

Beitrag von owenstone »

Hi F3K Total,

das ging ja wirklich flott :lol: .

Und Deine Lösung war jetzt zum Schluß auch die Richtige :!:

:D An all die Anderen an dieser Stelle auch noch mal vielen herzlichen Dank :lol: :lol:.
Mit freundlichen Grüßen

owenstone
Antworten