Seite 1 von 2
SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Do 10. Nov 2011, 02:13
von SignalSpirit
Hallo zusammen,
mich treibt gerade eine Abfrage in den Wahnsinn.
Ich brauche folgendes: Eine Abfrage vereinigt 2 Felder aus einer Tabelle, wobei dazwischen ein String eingefügt werden soll.
Also Feld1 + Zeichenkette + Feld2
Tabelle: Etikettendruck
Feld1: Test1
Feld2: Test2
Neues Feld in der Abfrage: Test3
Zeichenkette: " + "
Normalerweise sollte das doch mit Folgender SQL-Abfrage funktionieren
Code: Alles auswählen
SELECT "Test1" + ' + ' + "Test2" AS "Test3" FROM "Etikettendruck"
Die nimmt aber LibreOffice nicht an (Fehler in SQL-Syntax)
Code: Alles auswählen
SELECT "Test1" + "Test2" AS "Test3" FROM "Etikettendruck"
Wird angenommen, da fehlt aber dann natürlich die Zeichenkette

.
Kann mir jemand sagen, was ich falsch mache?
Gruß SignalSpirit
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Do 10. Nov 2011, 02:56
von gogo
Du kannst mit concat verschachteln (HSQL erlaubt pro concat nur 2 Bergiffe, daher die 2 concats):
Code: Alles auswählen
SELECT concat(concat("Test1",'+'), "Test2") AS "Test3" FROM "Etikettendruck"
g
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Do 10. Nov 2011, 11:35
von SignalSpirit
Super! Danke für die schnelle Antwort! Das funktioniert.
Hast du eine Idee, warum HSQL meinen ursprünglichen Befehl nicht mag?
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Do 10. Nov 2011, 23:11
von F3K Total
... oder so ...
Code: Alles auswählen
SELECT "Test1" || ' + ' || "Test2" AS "Test3" FROM "Etikettendruck"
Gruß R
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Mo 31. Mär 2014, 16:56
von Freischreiber
Hallo,
auf dieses Thema bin ich gestoßen, weil ich eine Abfrage erstellen will, die einen vollständigen Adressblock liefert.
Dazu benötige ich auch Absätze, um Straße und PLZ Ort in eine neue Zeile zu bekommen.
Gibt es dafür einen HSQL-Befehl? Ich habe mit \r\n, mit char(13), mit crlf experimentiert, aber das schmeckt ihr alles nicht...
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Mo 31. Mär 2014, 18:09
von gogo
das kommt immer auf die interprtierende Oberfläche an. Die Datenbank liefert immer nur ein Zeichen - ob dieses dann als Umbruch dargestellt wird, entscheidet nicht die Datenbank.
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Mo 31. Mär 2014, 18:15
von Freischreiber
Hallo gogo,
die interpretierende Oberfläche ist LibreOffice Base: Table Data View, also das Fenster, das aufgeht, wenn ich die Abfrage starte.
Welches Zeichen könnte man denn nehmen, damit eine neue Zeile anfängt?
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Mo 31. Mär 2014, 18:58
von RobertG
Hallo Freischreiber,
ich zitiere hier einmal das aktuelle Handbuch, S. 277:
Zeilenumbruch durch eine Abfrage erreichen
Manchmal ist es sinnvoll, durch eine Abfrage verschiedene Felder zusammenzufassen und mit
einem Zeilenumbruch zu trennen. So ist es z.B. einfacher eine Adresse in einen Bericht komplett
einzulesen.
Der Zeilenumbruch innerhalb einer Abfrage erfolgt durch 'Char(13)'. Beispiel:
SELECT "Vorname"||' '||"Nachname"||Char(13)||"Straße"||Char(13)||"Ort"
FROM "Tabelle"
Dies erzeugt nachher:
Vorname Nachname
Straße
Ort
Mit so einer Abfrage, zusammen mit einer Nummerierung jeweils bis zur Nummer 3, lassen sich
auch dreispaltige Etikettendrucke von Adressetiketten über Berichte realisieren. Eine Nummerie-
rung ist in diesem Zusammenhang nötig, damit drei Adressen nebeneinander in einem Datensatz
erscheinen. Nur so sind sie auch nebeneinander im Bericht einlesbar.
Die Darstellung mit Zeilenumbruch erfolgt nicht in der Abfrageansicht, sehr wohl aber im Bericht oder auch in mehrzeiligen Formularfeldern.
Im Handbuch sind dann auch noch die Eingaben für einen Tabulator sowie einen sicheren Zeilenumbruch in Linux/Mac enthalten. Siehe dazu S. 358. Char(9) - Tabulator, Char(10) - Zeilenvorschub
Manchmal ist es sicherer, Char(13)||Char(10) zu kombinieren. Das ist sozusagen die universelle Variante für alle Systeme, um einen sicheren Umbruch zu erhalten.
Gruß
Robert
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Di 1. Apr 2014, 12:14
von Freischreiber
Hallo,
vielen Dank, es scheint so wirklich zu gehen. Leider kann man dem Handbuch nicht ansehen, daß man Absätze nicht direkt in der Abfrage sieht.
Was ich eigentlich will, ist irgendeine Methode, eine Adresse aus dem gerade angezeigten Datensatz in definierter Form in ein Textdokument zu bekommen, also als
Vorname Name
Straße Hausnr.
PLZ Ort
Am liebsten direkt in die Windows-Zwischenablage, oder kopierbar in einem Textfeld. Ob das per Abfrage, Makro, mehrzeiligem Textfeld oder sonst wie geht, ist mir eigentlich gleichgültig.
Aber ich scheitere auf sämtlichen Stufen:
Ich kriege aus der Abfrage kein Textfeld hin mit dem Formularnavigator. Ich kann zwar eines einfügen, aber der Inhalt bleibt immer gleich (Adresse aus Datensatz 1), und wechselt nicht mit, wenn ich die Datensätze durchblättere.
Und der - nicht aktualisierte - Datensatz ist auch noch nicht in der Zwischenablage, sondern ich muß ihn von Hand kopieren.
Eine Lösung mit Libreoffice-Writer-Feldern und Einfügen aus Datenquelle bringt mir nichts, ich brauche ihn in der Zwischenablage, weil ich noch viele alte Word-Dokumentvorlagen habe, wo die Adresse rein soll...
Re: SQL Abfrage: Feld1 + Text + Feld2
Verfasst: Di 1. Apr 2014, 14:14
von Freischreiber
Juhu, es geht... meine Abfrage hatte nur eine Spalte für die SQL-Abfrage für das kombinierte Textfeld Vorname,Name,etc. enthalten, und keine ID. Mit einer zusätzlichen ID-Spalte gibt es was, um das Textfeld-Formular ordentlich mit dem Hauptformular zu verknüpfen... Erfolge bei Base sind wirklich hartes Brot
Eine Idee, wie man dieses Adreßfeld in die Zwischenablage bekommt, ist aber immer noch sehr willkommen.