OmApiCsvParams

<< Hilfenavigation einblenden

Home > Handbuch > Entwicklerhilfe > Makro-Referenz OmAPI > OmApiCsvParams

OmApiCsvParams

Makro-Prozedur OmApiCsvParams

Lösung für das Komma-Problem

Syntax

{OmApiCsvParams:Actice}

Parameter

Active: 0 oder 1: 0 deaktiviert (Vorgabe), 1 aktiviert den Modus für CSV-Paratemer.

Rückgabewert

Keiner, die Anweisung wird nach Ausführung durch einen Leerstring ersetzt.

Beschreibung

Das Komma-Problem

"OmAPI" diente anfangs nur als Platzhalter für Datenbankfelder mit der Syntax {Tabelle:Feldname}. Es kamen dann Formatparameter hinzu {Tabelle:Feldname,Format} und später entstand nach und nach eine umfangreiche Makrosprache.

Variablen, wie {Tabelle:Feldname,Format} funktionieren problemlos, weil der Feldname selbst kein Komma beinhalten kann. Nehmen wir aber beispielsweise {DBSetField:Tabelle,Feldname1=Wert1,Feldmame2=Wert2}, dann haben wir ein Problem, sobald Wert1 ein Komma enthält, wie bei "Mustermann, Max". Der Interpreter trennt dann die Parameter in {DBSetField:Tabelle,Feldname1=Mustermann, Max,Feldmame2=Wert2} bei jedem Komma und wird den Fehler melden, dass ein Datenfeld mit Namen " Max" nicht vorhanden ist.

Lösung

Wenn zu erwarten ist, dass Parameter Kommata beinhalten, sollte der CSV-Modus (Comma-separated values) aktiviert und die Textparameter mit Komma in Anführungszeichen eingeschlossen werden. Beispiel:

{OmApiCsvParams:1}{DBSetField:Tabelle,"Feldname1=Mustermann, Max",Feldmame2=Wert2}{OmApiCsvParams:0}

Nicht nur "Mustermann, Max" steht hier in doppelten Anführungszeichen, sondern der gesamte Parameter "Feldname1=Mustermann, Max". Es schadet nicht, wenn alle Textparameter in Anführungszeichen stehen, auch wenn sie kein Komma beinhalten, wie "Feldname2=Wert2".

Aus Kompatibilitätsgründen muss der Modus anschließend mit {OmApiCsvParams:0} deaktiviert werden. Die Einstellung gilt nicht nur für das jeweilige Makro, sondern für die gesamte Programmlaufzeit.

Beispiel

Im Layout des Eigenschaftendialogs wird ein Mausschalter platziert, mit dem der Anwender einen Kontakt aus einer umfangreichen Liste filtern und wählen kann. Die Kontaktnamen sind in einer Textdatei enthalten, teils als "Max Mustermann" und teils als "Mustermann, Max". Dem Mausschalter ist folgendes Makro (in einer Zeile) hinterlegt:

{RaiseError:In archivierten Dokumenten gesperrt,{Self:DocTable}=docarch}

{OmApiCsvParams:1}

{DBSetField:document,"contact={ExecStringDlg:C:\Kontakte.txt,0,0,0,Kontakt wählen}"}

{OmApiCsvParams:0}

Siehe auch

Makro-Referenz