Announcement

Collapse
No announcement yet.

Problem mit Firebird und Ändern eines Datensatzes

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

  • Problem mit Firebird und Ändern eines Datensatzes

    Hallo habe mit den Zeos Komponenten folgendes Problem

    In einer Tabelle wird geprüft ob ein bestimmter Datensatz schon vorhanden ist ist dies der Fall, soll dieser nur aktualisiert werden.
    Dazu sezte ich bei ZTable einen Filter und gehe an den ersten Datensatz mit ZTable1.First;
    dann setze ich mit ZTable1.Edit; den Editiermodus.
    mit ZTable1.FieldbyName('Name').asString := edit1.text;
    .....
    sezte ich die neuen Werte und schließe das ganze mit
    ZTable1.Post;
    ab.
    Danach wird die Tabelle mit

    ZTable1.active:=False;

    und
    ZTable1.Filtered:=False;
    ZTable1.Filter:='';
    wieder in den normalen Status gesetzt.

    Die Aktualisierung klappt auch nur wenn ich das Formular schließen will bekomme ich folgende Fehlermeldung:

    SQL Error: invalid statement handle. Error Code: -901. Unsuccessful execution aused by system error that does not preclude successful execution of subsequent statements.

    Die ZConnection steht auf AutoCommit:= True;

    Wenn mit Append ein Datensatz hinzugefügt wird gibts auch keine Probleme.

    Weiß jemand woran das liegen kann ?

    Gruss

    Stefan

  • #2
    So Problem behoben, falls es jemanden interessiert...
    Ich hatte vergessen Ztable1.CachedUpdates auf True zu setzen.
    JA,Ja keiner Patzer grosse Wirkung.

    Gruss

    Stefa

    Comment


    • #3
      Hallo Stefan,<p>
      benutze eine Query, dann hast du diesen ganzen Ärger nicht.
      <p>
      Heik

      Comment


      • #4
        Tja bei der Query ist das Problem das der String nur 255 Zeichen haben kann, allerdings hat ein Feld schon eine grösse von 500 Zeichen.

        Gruss

        Stefa

        Comment


        • #5
          Wo steht das mit der Größe ?
          Kommt das zeos ?
          Zeig mal ein bissel Code.
          bei .AsString kann man auch größere Strings übergeben (sollte es zumindestens)<br>
          Viell. hzeos aber auch nen AsLargeString oder AsMemo oder sowas.
          Das wäre aber eine böse Einschränkung
          <p>
          Heik

          Comment


          • #6
            Nein der String bei
            ZQuery1.sql.add('Insert blabla '); ist begrenzt, bkam jedesmal ne meldung das dieser zu lang ist

            Comment


            • #7
              hm,

              dann teil ihn in mehrere .Add

              sql.add(insert into table');
              sql.add('(id, name')

              usw.

              oder hast du so grosse tabellen,
              dass das insert so gross ist?

              Dann kannst du immer noch ne SP nehmen

              Heik

              Comment

              Working...
              X