Announcement

Collapse
No announcement yet.

Einfügen von Strings mit Umlauten

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

  • Einfügen von Strings mit Umlauten

    Hallo Leute, <br>
    <br>
    ich versuche beim Anlegen einer Datenbank auch einige Defaultwerte für eine Tabelle gleich mit anzulegen. Wenn jedoch im String ein Umlaut vorkommt, bricht das Script an der Stelle mit einer Fehlermeldung ab. Die Datenbank wird so angelegt:
    <P>
    CREATE DATABASE 'D:\Borland\Delphi5\Projects\DB\Test.gdb'<br>
    PAGE_SIZE 2048<br>
    USER 'Bla' PASSWORD 'BlaBla'<br>
    DEFAULT CHARACTER SET ISO8859_1;<br>
    </P>
    Die Domains so:
    <P>
    CREATE DOMAIN TSTR03 AS VARCHAR(3) COLLATE DE_DE;<br>
    CREATE DOMAIN TSTR20 AS VARCHAR(20) COLLATE DE_DE;<br>
    CREATE DOMAIN TSINR AS SMALLINT; <br>
    CREATE DOMAIN TIDPK AS INTEGER NOT NULL; <br>
    </P>
    Die Tabelle so:
    <P>
    CREATE TABLE TabEinheiten ( <br>
    EinhID TIDPK, <br>
    EinhName TSTR03,<br>
    EinhBeschr TSTR20,<br>
    EinhBasis TSINR,<br>
    <br>
    CONSTRAINT PK_TabEinheiten PRIMARY KEY (EinhID)); <br>
    </P>

    Und das Einfügen der Werte so:
    <P>
    Insert Into TabEinheiten Values (Gen_ID(GEN_TabEinheiten, 1), 'stk','Stück', 1);
    </P>
    Was fehlt denn noch ausser dem 'DEFAULT CHARACTER SET ISO8859_1' bei der Anlage der DB?

    Florian

  • #2
    Hallo Florian,

    <pre>
    set term ^ ;

    CREATE DATABASE 'D:\temp\Test.gdb'
    PAGE_SIZE 2048
    USER 'sysdba' PASSWORD 'masterkey'
    DEFAULT CHARACTER SET ISO8859_1^

    CREATE DOMAIN TSTR03 AS VARCHAR(3) COLLATE DE_DE^
    CREATE DOMAIN TSTR20 AS VARCHAR(20) COLLATE DE_DE^
    CREATE DOMAIN TSINR AS SMALLINT^
    CREATE DOMAIN TIDPK AS INTEGER NOT NULL^

    create generator gen_tabeinheiten^

    CREATE TABLE TabEinheiten (
    EinhID TIDPK,
    EinhName TSTR03,
    EinhBeschr TSTR20,
    EinhBasis TSINR)^

    commit work^

    Insert Into TabEinheiten Values (Gen_ID(GEN_TabEinheiten, 1), 'stk','Stck', 1)^

    commit work
    ^

    set term ;
    ^
    </pre>

    Tschau

    Torste

    Comment


    • #3
      Hallo Torsten,<br>
      <br>
      der Code funktioniert (besser funktioniert nicht..) genauso so wie der von mir. Sobald in der Zeile mit dem Insert ein Umlaut vorkommt,<br> zum Beispiel 'Stück' anstelle von 'Stck', kommt die Fehlermeldung die da heisst:
      <Pre>
      Arithmetischer Fehler, numerischer Überlauf......
      Fehler beim Übersetzen der Zeichen in einen anderen Zeichensatz on Line 12:
      Insert Into TabEinheiten Values(Gen_ID(GEN_TabEinheiten, 1), 'stk','Stück', 1)
      </PRE>
      Was mich wundert: Wenn ich die Umlaute aus dem Script rauslasse, die DB also ohne Fehler erstellt wird, <br>
      kann ich in der Console das gleiche Insert Statement mit Umlauten ohne Probleme absetzen bis mir der Finger erlahmt.<br>
      <br>
      Floria

      Comment


      • #4
        Hallo Florian,

        ich verwnede nicht die Console. Soweit ich mich erinnern kann, kann man in der Console der Zeichensatz einstellen mit dem defaultmässig gearbeitet wird.

        Zusätzlich mußte glaube ich nach dem Datenbank-Create ein Commit erfolgen und danach ein erneuter connect auf die DB mit passendem Zeichensatz.

        Tschau

        Torste

        Comment


        • #5
          Hallo Florian,<br>
          <br>
          1. probier mal ein anderes Tool zu Ausführen des Scripts<br>
          2. schreib den char set auch beim Anlegen der Tabelle dahinter
          <br>
          Heik

          Comment


          • #6
            Hallo,<br><br>
            ich kann mich ganz dunkel an ein Problem mit der IBConsole in diesem Zusammenhang erinnern. Die Lösung war irgendwie nach dem Erstellen der DB sich nochmals zu dieser DB mit dem entsprechenden Zeichensatz zu verbinden und danach die Statements ausführen. Es gibt bereits einige sehr gute (kostenlose) IBConsole Alternativen, die bei weitem mehr können, d.h. ich würde in jedem Fall ie IBConsole in die Ecke stellen und etwas vernünftiges verwenden.<br><br>
            Gruss,<br>
            Thoma
            Thomas Steinmaurer

            Firebird Foundation Committee Member
            Upscene Productions - Database Tools for Developers
            Mein Blog

            Comment


            • #7
              Hallo Thomas,<br>
              <br>
              hast du einen konkreten Tipp für einen Ersatz?<br>
              <br>
              Floria

              Comment


              • #8
                Hallo Florian,

                ich verwende privat IBExpert. Dvon gibt es eine kostenlose Personal-Edition ( http://www.ibexpert.com ).

                Tschau

                Torste

                Comment


                • #9
                  Hallo Florian,<br><br>
                  es gibt eine Menge ;-). Siehe http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_contrib_download#ADM <br><br>
                  Ich verwende das kommerzielle Tool InterBase Workbench ( http://www.upscene.com ) und bin damit sehr zufrieden. Viele verwenden IBExpert ( http://www.ibexpert.com ). Von IBExpert gibt es auch eine kostenlose, funktionell eingeschränkte Personal Edition http://www.hksoftware.net/download/<br><br>
                  Gruss,<br>
                  Thoma
                  Thomas Steinmaurer

                  Firebird Foundation Committee Member
                  Upscene Productions - Database Tools for Developers
                  Mein Blog

                  Comment


                  • #10
                    Hallo Florian,

                    nach dem Anlegen einer DB muss darauf geachtet werden, dass der Client (in dem Fall die IBConsole) mit dem identischen Zeichensatz verbunden wird. Wenn Du die Datenbank in der IBConsole registriert hast, kannst Du mit "Connect as" (RMT auf die Datenbank) den Zeichensatz entsprechend einsetzen.

                    Grüße
                    Wolfgan

                    Comment


                    • #11
                      Ich hab jetzt mal IBExpert ausprobiert, damit läuft das Script von Anfang bis Ende durch und stört sich auch nicht an den Umlauten.<br>
                      Ist also wohl ein Bug der Console.<br>
                      <br>
                      Danke an alle für die hilfreichen Antworten<br>
                      <br>
                      Florian<br&gt

                      Comment

                      Working...
                      X