Announcement

Collapse
No announcement yet.

Erweiterung einer SP um einen neuen Output-Parameter führt zu falschen Ergebniswerten

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

  • Erweiterung einer SP um einen neuen Output-Parameter führt zu falschen Ergebniswerten

    Hallo,

    Bei uns ist folgendes Phänomen aufgetreten. Eine bereits bestehende "FB 1.5"-Stored Procedure wurde um einen neuen Output-Parameter erweitert.

    Ein bereits bestehendes Programm, das die Output-Werte der Stored Procedure mittels einer "TIBStoredProc"-Komponente anzeigt, zeigt nun für manche Output-Parameter falsche Werte an, obwohl sie mittels "ParamByName" ausgelesen werden. Ist dieses Problem bekannt ?

    Erst, wenn das Delphi-Programm neu compiliert wird und die Parameter der "TIBStoredProc"-Komponente neu eingelesen werden in der IDE, enthalten die Output-Parameter die richtigen Werte.

    Läßt sich das Problem beheben ?

    Grüsse,
    Carsten

    P.S.: Wie lassen sich Leerzeilen hier im Text eingeben ? Irgendwie bekomme ich es nicht so richtig hin und es wirkt nicht gerade sehr leserlich.

  • #2
    Hallo,

    Hat das Problem wirklich keiner beheben können oder arbeitet Ihr in Delphi ohne die Interbase-Komponenten ?

    Kann ja auch gut sein, daß der Fehler in den Komponenten steckt, oder ? Ich würde mich freuen, wenn mir jemand eine Antwort geben könnte

    Comment


    • #3
      Hallo Carsten,<BR><BR>
      das Problem ist, dass beim Zuweisen der Eigenschaft StoredProcName bereits die Parameter erzeugt werden. Beim Blick in die DFM Datei wirst du diese finden. Noch problematischer wird es, wenn du einen Parameter umbenennst oder entfernst. Delphi streamt die DFM und du wirst eine Exception erhalten.<BR>
      Deshalb ist es - aus meiner Sicht - immer eine gute Idee, die Zuweisung des StoredProcName zur Laufzeit zu machen.<BR>
      Damit sollten auch immer die Parameter aktuell sein.<BR>
      Ich arbeite zwar mit IBO, aber ich denke, dass es bei den IBX nicht anders ist.<BR><BR>
      Fran

      Comment


      • #4
        du kannst ja mal folgendes probieren:
        <CODE>
        if sp.Prepared then
        sp.UnPrepare;
        sp.Params.Clear;
        // ParamCount ist 0
        sp.Prepare;
        // jetzt sind alle Parameter exakt gesetzt
        sp.Execute // oder was auch immer...
        </CODE><BR>Fran

        Comment


        • #5
          Hallo Frank,

          Vielen Danke für Deine Erklärungen. Das werde ich mal im Hinterkopf behalten beim nächsten Versionsupdate und Änderung in der Datenbank.

          Grüsse,
          Carste

          Comment

          Working...
          X