Filemaker mit MySQL-Datenbank: Doppelter Zeilenumbruch

Wer auf eine MySQL-Datenbank mit unterschiedlichen Anwendungen (Filemaker, phpMyAdmin, Access, Navicat lite, OOoBase) zugreift, muss feststellen, dass Filemaker [Mac] im Zusammenspiel mit den anderen ein eigenes Köpfchen beweist. Als Zeilenumbruch (siehe Zeilenumbruch-Matrix) gibt Filemaker nämlich nur ein Linefeed (LF) aus, wo andere Anwendungen zusätzlich ein Carriage Return (CR) setzen sowie erwarten. Als Ergebnis finden sich in der MySQL-Table Datensätze unterschiedlicher Zeilenumbruch-Codierung. Ein unschöner Umstand, den man bei jedem Report beachten muss. Da wäre es schön, wenn in der Datenbank alle Datensätze einheitlich mit der gewünschten Zeilenumbruch-Codierung eingefügt – und in Filemaker keine überflüssigen Umbrüche ausgegeben würden. Das gelingt – und zwar mit Hilfe von zwei Triggern in der MySQL-Datenbank (1) und einer entsprechenden Funktion in der Filemaker-Anwendung (2).

1. Zwei MySQL-Trigger setzen den Zeilenumbruch immer als CR + LF

Die folgenden Trigger setzen in der MySQL-Datenbank – egal mit welcher Anwendung die Eingabe erfolgt – den Zeilenumbruch automatisch immer als Carriage Return (CR) & Linefeed (LF):

Datenbank: MySQL
Tabelle: t_kontakte
Felder: Anschrift_Post
Anschrift_RG
Trigger: trigger_kontakte_created
trigger_kontakte_modified

Erläuterung:
Da der Zeilenumbruch sowohl beim Anlegen eines neuen Datensatzes als auch beim Ändern eines bestehenden Datensatzes als CR+LF ausgegeben werden soll, sind 2 Trigger erforderlich: INSERT und UPDATE

Trigger 1:

CREATE TRIGGER `trigger_kontakte_created` BEFORE INSERT INTO `t_kontakte`
FOR EACH ROW
BEGIN
	IF NEW.Anschrift_Post NOT LIKE "%rn%" THEN
		SET NEW.Anschrift_Post = REPLACE(NEW.Anschrift_Post,"r","rn");
	END IF;
	IF NEW.Anschrift_RG NOT LIKE "%rn%" THEN
		SET NEW.Anschrift_RG = REPLACE(NEW.Anschrift_RG,"r","rn");
	END IF;
END

Trigger 2:

CREATE TRIGGER `trigger_kontakte_modified` BEFORE UPDATE ON `t_kontakte`
FOR EACH ROW
BEGIN
	IF NEW.Anschrift_Post NOT LIKE "%rn%" THEN
		SET NEW.Anschrift_Post = REPLACE(NEW.Anschrift_Post,"r","rn");
	END IF;
	IF NEW.Anschrift_RG NOT LIKE "%rn%" THEN
		SET NEW.Anschrift_RG = REPLACE(NEW.Anschrift_RG,"r","rn");
	END IF;
END

2. Den doppelten Zeilenumbruch in Filemaker ersetzen

Filemaker verwendet für den Zeilenumbruch den Linefeed, wo andere Programme Carriage Return + Linefeed setzen (siehe Zeilenumbruch-Matrix). So kommt es, dass Filemaker CR + LF als doppelten Zeilenumbruch interpretiert und ausgibt.
Mit den folgenden Funktionen kann man in Filemaker die doppelten Umbrüche ersetzen:

Austauschen ( Anschrift_Post ;[¶ ;" "]; [" ";" "] )

besser:

Austauschen ( Anschrift_Post ;[CHAR ( 13 ); CHAR ( 10); CHAR (13)])

1 Kommentar

  1. Pingback: ki-office Blog» Blog Archive » Doppelten Zeilenumbruch in Filemaker ersetzen

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.


*