Announcement

Collapse
No announcement yet.

Größere Texte in Interbase speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Größere Texte in Interbase speichern

    Hallo,
    ich habe das Problem, das Größere Texte nicht abgespeichert werden können, die Fehlermeldung "arithmetic exception, numeric overflow, string truncation". Das passiert bei Texten > 400 Zeichen. In der Interbase-Tabelle sind aber mit varchar 2000 Zeichen angelegt.

  • #2
    Hallo,

    größere Texte sollten in Blob Felder gespeichert werden!<br>
    z.B. alter table test<br>
    add textfeld BLOB SUB_TYPE TEXT SEGMENT SIZE 4096 CHARACTER SET ISO8859_1;

    Die Fehlermeldung Fehlermeldung "arithmetic exception, numeric overflow, string truncation" tritt auf wenn mehr Zeichen eingegeben werden als im Feld gespeichert werden können, d.h. wahrscheinlich kann Interbase keine Varcharfelder mit mehr als 400 Zeichen und begrenzt Sie automatisch. Ich verwende Varchar nur bis zu einer Länge von 255 Zeichen, danach grundsätzlich Blobfelder.

    mf

    Comment


    • #3
      Hallo Jan,

      mit welcher Delphi-Komponente erfolgen denn die Texteingaben?
      Wenn Du TDBMemo benutzt, wird der Text u.U. in RTF umgewandelt, welches durch die enthaltenen Formatierungen sehr viel Platz braucht. In diesem Fall bekommst Du die genannte Fehlermeldung. Im Delphi Datenbankexplorer kannst Du beim Ansehen des Feldinhaltes gut sehen, ob Delphi in RTF abgespeichert hat.

      Da Du nie vorhersehen kannst, um wieviel Dein Text durch die Formatierung größer wird, solltest Du o.g. Rat folgen und BLOBs verwenden.
      (Oder weiß jemand, mit welchen Maßnahmen man das RTF-Abspeichern unterdrücken kann?)

      Gruß Ka

      Comment


      • #4
        Hallo Carsten, Hallo Kai,

        vielen Dank für Eure Antworten. Bei der Anlage der Blob-Felder gibst Du die Segmentgröße ein, welche Vor- oder Nachteile habe ich dadurch ?

        Gruß Ja

        Comment


        • #5
          Hallo Jan,

          die Segmentgröße hängt davon ab, wieviele Daten Du für Deine Blobs erwartest.
          Hast du z.B. 1k Segmentgröße, verwendet IB für jeden Text erstmal 1 KB, wenn er größer wird,
          fängt IB das nächste 1 KB Segment an.

          Macht man die Segmente zu klein, bekommst Du (zu) viele davon (Performance), machst Du sie zu groß, brauchen sie viel Speicher

          Gruß Ka

          Comment

          Working...
          X