Das Wissen aller Anwender nutzen

Im Allplan Connect Forum tauschen sich Anwender aus, geben wertvolle Tipps oder beraten sich bei ganz konkreten Aufgabenstellungen − auch international.
Und damit wirklich keine Frage unbeantwortet bleibt, unterstützen die Mitarbeiter des Technischen Supports ebenfalls aktiv das Forum.

Es erwarten Sie:

  • Foren-Vielfalt aus CAD Architektur, CAD Ingenieurbau uvm.
  • Tipps von User für User
  • international: Deutsch, Englisch, Italienisch, Französisch und Tschechisch

Melden Sie sich jetzt an und diskutieren Sie mit!

Zur Registrierung

[Frage] Formel für Intelligenten Planstempel - Syntaxfehler [Gelöst]

Schlagworte:
  • Syntaxfehler
  • Formel
  • Attribute
  • Verketten

Hallo an alle,

ich bin gerade dabei, einen Planstempel für unsere Firma zu erstellen. Dieser soll auf Attributen funktionieren, allerdings scheitere ich grade und bekomme durchgehend Fehlermeldungen.

Ziel: Wir wollen die Plannummer von Allplan abgreifen und den Index dahinter setzen. Ist unsere Plannummer allerdings kleiner als 10, soll er noch eine 0 vor die Zahl schreiben. Also z.B.: 04A und ab 10 dann 10A.

Ich benutze hier den Befehl verketten und meiner Meinung nach wäre das so richtig:
VERKETTEN(_IF_(@446@<10)"0"+@446@_ELSE_@446@;@389@)

@446@ ist das Attribut für die Plannummer, @389@ für den Planindex.

Ich habe es mit einem + hinter der "0" probiert und ohne das +. Beides jeweils mit einer Fehlermeldung.

Ich hoffe, jemand kann mir weiter helfen.

Gruss Sebastian

Lösung anzeigen Lösung verbergen

Hallo Nemo,

vielen Dank für die Antwort. Da wir aber von 1-999 Plannummern verwenden, ist nicht ganz optimal. Ich habe mittlerweile eine Lösung gefunden. Ich habe die IF Klausel nun ganz an den Anfang gestellt mit der Abfrage Plannummer<10?, und konnte so als Statement die Zahlen 1-9 unterbringen und unter ELSE alle anderen.

Hier ist meine finale Funktionierende Formel mit VERKETTEN und IF:
IF_(@446@<10)VERKETTEN(@936@;" - 0";@446@;@389@)_ELSE_VERKETTEN(@936@;" - ";@446@;@389@)

@936@ ist hier im Fall noch die Projektnummer.

VERKETTEN(a;b) erwartet einen String für a und b.

In Deiner Formel ist das Ergebnis im ELSE-Zweig ein Integer (die Plannummer)
Die müßte man erst mal in einen String umwandeln mit FORMAT("%i";@446@)

Dasselbe müßte man im IF-Zweig tun:
_IF_(@446@<10)"0"+FORMAT("%i";@446@)

VERKETTEN sollte man in diesem Fall weglassen! Damit kommt der Fromelinterpreter nicht klar!

Die Formel könnte also lauten:
_IF_(@446@<10)FORMAT("0%i";@446@)+@389@_ELSE_FORMAT("%i";@446@)+@389@

Die Frage stellt sich, was passiert, wenn die Nummer > 99 ist. Dann ist die Nummer plötzlich 3-stellig ?

Eine generelle Lösung die maxiaml 4-stellige Integer-Zahlen mit führenden Nullen auffüllt ist:
FORMAT("%04d";@446@)+@389@

1 -> 0001
10 -> 0010
100 -> 0100
9999 -> 9999

Für oben beschriebene mind. 2-stellige Zahl wäre das folgende einfache Formel:
FORMAT("%02d";@446@)+@389@

...ganz ohne IF_THEN und VERKETTEN!

Hallo Nemo,

vielen Dank für die Antwort. Da wir aber von 1-999 Plannummern verwenden, ist nicht ganz optimal. Ich habe mittlerweile eine Lösung gefunden. Ich habe die IF Klausel nun ganz an den Anfang gestellt mit der Abfrage Plannummer<10?, und konnte so als Statement die Zahlen 1-9 unterbringen und unter ELSE alle anderen.

Hier ist meine finale Funktionierende Formel mit VERKETTEN und IF:
IF_(@446@<10)VERKETTEN(@936@;" - 0";@446@;@389@)_ELSE_VERKETTEN(@936@;" - ";@446@;@389@)

@936@ ist hier im Fall noch die Projektnummer.

Die Formel

@936@+FORMAT("-%02d";@446@)+@389@

erledigt dasselbe sehr viel eleganter, und ist auch noch kürzer!