Announcement

Collapse
No announcement yet.

Daten ändern

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

  • Daten ändern

    Hallo,
    ich hab den flschen Job ....

    Seit Freitag ärgert mich eine DB2 Tabelle.

    Mit folgendem Commandtext in einem ADOCommand-Object wird die Tabell angelegt.

    CREATE TABLE VD.ANTR04 (
    "LFDNR" INTEGER NOT NULL
    GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
    "VDPANR" INTEGER,
    "SPARTE" VARCHAR (5),
    "VERSNR" VARCHAR (15),
    "WOCHE" VARCHAR (4) ,
    "VERSAND" DATE ,
    "AKTION" VARCHAR (5) ,
    "ART" VARCHAR (2) ,
    "ZWEIG" VARCHAR (3) ,
    "ZW" SMALLINT ,
    "AMTLKENNZ" VARCHAR (15),
    "BEITRAG" DOUBLE ,
    "VERM1" VARCHAR (10) ,
    "VERM2" VARCHAR (10) ,
    "VERM3" VARCHAR (10) ,
    "VERM4" VARCHAR (10) ,
    "VERSSU" DOUBLE,
    "UMFANG" VARCHAR (20) ,
    "SBAR" VARCHAR (10) ,
    "BEGINNDAT" DATE ,
    "ANTRDAT" DATE ,
    "STDATUM" DATE ,
    "ABRDAT" DATE ,
    "STATUS" SMALLINT,
    "ERFASST" DATE,
    "BEMERKUNG" VARCHAR (512) )

    Es folgt keine Fehlermeldung und die Tabelle ist da. Ich kann auch Daten eingeben. Alles i.O. Nur wenn ich Daten ändern will, kommt die Fehlermeldung:

    Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte.

    Entferne ich die Tabelle und entferne irgendeine Spalte aus der Create-Anweisung, tritt der Fehler nicht mehr auf.

    Kann mir da irgendwer helfen????

    Kalli

  • #2
    Hallo Kalli,

    Du stolperst da glaub ich über einen Bug, der nicht am DB2 liegt. Falls der Fehler beim Update einer Spalte auftritt, in der bei den vorher stattfindenden Zugriffen kürzere Werte standen, optimiert die Zugriffskomponente den Zugriffsbereich selbstständig auf einen kürzeren Bereich, als die Datenbank eigentlich erlaubt.
    Probier mal im Forum zu ADO ob da jemand genaueres, auch zum Umgehen des Fehlers, weiss.
    Ansonsten fällt mir bloß ein, alle Variablen vor dem Binden zur maximalen Größe zu verlängern. Bin aber nicht sicher, ob das dann hilft.

    Gruß
    Usch

    Comment


    • #3
      Wie greifst Du über ADO auf DB2 zu? Über ODBC? Dann such mal einen ADO-Treiber für DB2 bzw. such dir lieber native Komponenten (Da ist noch die Frage welche Programmiersprache du verwendest)

      Comment


      • #4
        Hallo,
        vielen Dank.

        Meine Umgebung ist die IBM DB2 UDB 7.2 Es handelt sich dabei um die Datenbankumgebung der VKB München. Unsere Anwendungen laufen darauf und ich soll meine Anwendungen ebenfalls auf DB2 umstellen. Zum Entwickeln benutze ich Delphi 2005, hab aber auch noch D7 und D5 aus der Vergangenheit. Der Zugriff auf die Datenbank erfolgt mit den ADO-Standart-Komponente aus Delphi 2005 über den "IBM OLE Provider for DB2
        Servers".

        Ist das gut oder schlecht.....

        Gruß
        Kall

        Comment


        • #5
          > Ist das gut oder schlecht.....

          Ich kenn den DB2-Provider nicht.
          Könntest Du es mal mit <a href="http://www.sql-direct.com/">SQL-Direct</a> probieren

          Comment


          • #6
            Hallo,
            die ersten Versuche machen einen guten Eindruck.

            Kall

            Comment


            • #7
              > die ersten Versuche machen einen guten Eindruck.

              Native Komponenten sind eigentlich immer besser als generische Schnittstellen wie ADO (nicht ADO.NET da hier das Konzept besser ist) oder ODBC. Es sind einfach zu viele Treiber-Schichten im einsatz.
              Und weniger Schichten bedeutet i.d.R. weniger Fehler/Probleme

              ODBC:

              Anwendung -> BDE -> ODBC -> DB2-ODBC-Treiber -> evtl. Native-Schnittstelle -> DBMS

              ADO:

              Anwendung -> ADOExpress -> ADO -> OLE DB-Provider -> Evtl. Native-Schnittstelle -> DBMS

              Native Anbindung:

              Anwendung -> Native-TDataset-Nachfolger -> Native-Schnittstelle -> DBMS

              oder 100% native Anbindung (z.B. bei MySQl üblich):

              Anwendung -> Native-TDataset-Nachfolger -> DBM

              Comment


              • #8
                Vielen Dank für diese Meldung!

                Ich habe tatsächlich versuchen den String "M:Medikamente" in eine ADO vom Type TEXT[1] einzutragen und dachte es wird automatisch abgeschnitten.

                Originally posted by Uschi Blanz View Post
                Du stolperst da glaub ich über einen Bug, der nicht am DB2 liegt. Falls der Fehler beim Update einer Spalte auftritt, in der bei den vorher stattfindenden Zugriffen kürzere Werte standen, optimiert die Zugriffskomponente den Zugriffsbereich selbstständig auf einen kürzeren Bereich, als die Datenbank eigentlich erlaubt.
                Gruß
                Alfonso

                Comment

                Working...
                X