Textfelder in BASE-Abfragen verketten, wie?

Hallo, ich bin Umsteiger von Access 2007. Dort besteht die Möglichkeit, in einer Abfrage zwei Textfelder in einem neuen, berechneten Feld zu verknüpfen. Beispiel:

  1. Feld “Name” enthält “Müller”
  2. Feld “Vorname” enthält “Max”
    In einer Abfrage soll angezeigt werden “Müller, Max” (Access-Code: Name&", "&Vorname).

Im BASE-Handbuch finde ich keine Lösung, wie die korrekte Eingabe erfolgen muss. Bitte um folgende Antworten:

  1. Wo im tabellarischen Bereich muss die Eingabe erfolgen?
  2. Wie lautet der korrekte Code?

Danke!

Aus dem Base-Handbuch, aktuell (7.2) S. 294:

SELECT
"Nachname"||', '||"Vorname",
"ID"
FROM "Tabelle1"
ORDER BY "Nachname"||', '||"Vorname";

Gehört zum Kapitel “Abfragen für die Erstellung von Listenfeldern”. Im Handbuch steht weiter unten dann auch, wie es trotz z.B. eines fehlenden Vornamens immer noch zu einer Anzeige kommen kann.

Der Code ist natürlich abhängig von der verwendeten Datenbank. Der obige Code funktioniert mit den beiden internen Datenbanken, nicht aber z.B. mit MySQL.

Beim Listenfeld musst Du unter “Daten” → SQL wählen und den Code in “Listeninhalt” einfügen (S. 187).

Gruß

Robert

1 Like

Danke @RobertG für die schnelle Antwort. Bin trotzdem noch nicht weiter. Ich wollte - wie ich es früher von Access gewohnt war - einen Code im Anbfrageentwurf in einer neuen Spalte eingeben und nicht in SQL. Bei Zahlen funktioniert dies bei mir. Bei Text dagegen erhalte ich nur Fehlermeldungen. Frage: Muss ich bei der Verkettung von Text zwingend auf SQL-Ebene arbeiten oder kann ich auch einen Code im Abfrageentwurf eingeben, um zwei Textfelder in der Anzeige zu einem zusammenzufassen?
Danke!

Wie bei SQL von @RobertG , in einem leeren Feld Deiner Abfrage:

"Nachname"||', '||"Vorname"

1 Like

Da ich einige Datenbanken habe, wo der Vorname nicht angegeben ist nutze ich

SELECT
"Nachname"||
IFNULL( ', '||"Vorname", '') AS Name
  • unterdrückt das Komma, wenn der Vorname leer ist
  • vermeidet NULL als Resultat, wenn verketten mit NULL ebenfalls NULL ergibt.
  • statt IFNULL evtl besser COALESCE fur Portabilität
1 Like

Danke Wanderer. Du warst für mich schon bei Schritt 2. Schritt 1 ist gelöst und Deine Info hilft mir weiter, um tiefer in die Sache einzusteigen. Guter Tip!.