Konvertierung einer 64-Bit Ganzzhal in String funktioniert in v16 nicht mehr

Liebes 4D-Team,

mit der 4D v16r4 (und vermutlich auch mit einigen Vorgängerversionen davon) kann der “old” Wert eines 64 Bit Ganzzahl Feldes nicht mehr in einen String umgewandelt werden.

z.B. String(Old([Preislinie]AenderungsRevision))

Der Fehler 54 wird erzeugt. In v13 funktionierte das noch.

Bitte um einen Lösungsvorschlag.

Danke & Liebe Grüße!

Elisabeth Strassmair

Hallo Frau Strassmair,

da gehen für mich gleich mehrere Sachen schief.

Ganzzahl 64 bit ist ein Datentyp, ausschließlich für die Verwendung mittels SQL gedacht. Sobald Sie mit 4D Programmierung darauf zugreifen, haben Sie Genauigkeits- und somit Datenverlust. Die 4D Programmierung konvertiert Ganzzahl 64 automatisch in Real. Hat das bei Ihnen bislang nichts ausgemacht, haben Sie es nicht gemerkt oder haben keine Daten in diesem Wertebereich darin gespeichert. Dann aber hätten Sie diesen Typ eigentlich nicht gebraucht.

Im Handbuch ist es übrigens seit v11 schon näher spezifiziert, welche numerischen Werte die Funktion String in einen String konvertieren kann. Real, Integer und Long. Seit v15 sagt das Handbuch zudem, daß String von Ganzzahl 64 bit nicht mehr kompiliert geht. Es wird eben genau der Fehler 54 generiert. Grund sind Änderungen am Compiler. Der interpretierte Modus gleicht sich immer mehr an den kompilierten Modus an, so daß seit v16 R4 das auch interpretiert zum Fehler 54 führt.

Ich denke, Sie sollten hier einen anderen Datentyp wählen, der für den Zugriff durch 4D Programmierung geeignet ist. Wenn Sie den wirklich brauchen, dann Zugriff mit SQL und entsprechenden Type Cast.

Hallo Herr Peschke,

danke für die Infos, ich habe das jetzt mit einem Work-Around gelöst.

Allgemein verstehe ich aber nicht, warum es einen Int64 Datentyp in der Datenbank gibt, aber keinen Int64 Datentyp in der Programmierung. Ist es seitens 4D angedacht das zu vervollständigen?

Danke & Liebe Grüße!

Elisabeth Strassmair

: Elisabeth STRASSMAIR

Allgemein verstehe ich aber nicht, warum es einen Int64 Datentyp in
der Datenbank gibt, aber keinen Int64 Datentyp in der Programmierung.
Ist es seitens 4D angedacht das zu vervollständigen?

jaja, und für Ref-IDs in Hier. Listen

Hallo Frau Strassmair,

historisch gewachsen gab es das in 4D noch nie und wurde auch nicht mit irgendeiner Priorität nachgefragt. Für SQL Zugriff aber Standard, dahin für SQL eingeführt. Das 4D das selbst handlen kann, dafür sind sehr umfassende strukturelle Änderungen erforderlich. Aber wie auch immer, Angedacht ist Vieles, dieser Datentyp in 4D jedoch derzeit nicht wirklich ansehbar.