Announcement

Collapse
No announcement yet.

INT64 mit TIBStoredProc

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

  • INT64 mit TIBStoredProc

    Hallo zusammen,<br>
    ich muss einen Int64 in IB6 speichern, dazu verwende ich einen Numeric(18,0)in der Tabelle. <p>
    Das Problem ist, ich habe kein TField Objekt da die Speicherung nur durch eine StoredProcedure erfolgt (ohne output). Die IBX Komponente TIBStoredProc Version 5.04 unterstützt keinen Int64 in TParams und bei einer Variant zuweisung kommt es zu einem internen Fehler.</p>
    Gruß Andreas

  • #2
    Hallo Andreas,

    funktioniert es eventuell mit der TIBSQL-Komponente?

    Tschau

    Torste

    Comment


    • #3
      Moin Torsten,<br>
      ich habe mit asCurrency erfolg gehabt, mit TIBSQL würden sich die gleichen Probleme ergeben.
      <p>EXECUTE PROCEDURE SP_TEST(:INT_46_VALUE)</p>
      Dabei ist :INT_46_VALUE wieder ein TParam Objekt. Mittlerweile stellte sich noch ein anderes Problem, nämlich das meine Tabellenkomponente von Developer Express kein TLargeintField sortieren kann.

      <p>Zur Erklärung: Ich speichere Dateiinformationen in der Datenbank, die Dateigröße ist INT64, in einem Importprozess werden die gesamelten Dateiinformationen in eine IB DB geschrieben, das sind oft 30.000 - 50.000 Datensätze. Mit einer SP schafft IB das in unter 3 Min. mit SQL INSERT würde dies erheblich länger dauern.</p>
      <p>Jetzt rechne ich die Dateigröße auf KB um und speichere in ein DOUBLE PRECISION Feld. (Notgetrungen B-] )</p>
      Gruß und Danke Andrea

      Comment


      • #4
        Hallo Andreas,

        ich schau mir das heute Abend noch mal zu Hause an.

        Gruß

        Torste

        Comment


        • #5
          Hallo Andreas,

          bei mir funktioniert es mit IBSQL wie folgt:

          <pre>
          begin
          ibsql1.ParamByName('INT_64_VALUE').AsInt64 := 1234567890123456;
          ibsql1.ExecQuery;
          ibtransaction1.Commit;
          end;
          </pre>

          Tschüß

          Torste

          Comment


          • #6
            Uups, soviel zwischen Theorie und Praxis :-)<br>

            <p>Aber das ändert leider auch nichts an dem Unvermögen der Tabellenkomponente TLargeintField nicht sortieren zu können.</p>

            <p>Ich habe da noch einen anderen Thread der mitr zur Zeit mehr Kopfzerbrechen bereitet vielleicht fällt die was dazu ein <p>
            <a href="http://www.entwickler-forum.de/webx?50@@.2cb7cfec"><a href="/webx?50@@.2cb7cfec">Andreas Horlaender "Zwei Pointer kopieren" 02.10.2003 10:19</a></a> </p>

            Gruß und Danke Andrea

            Comment


            • #7
              Hallo,

              ich habe jetzt ebenfalls ein Problem mit der TIBSQL-Komponente in D5 Ent. Update 1.

              TIBSQL enthält 2 Parameter, die als Int64-Werte gespeichert werden:
              <PRE>
              IBSQL.ParamByName('dKontonummer').AsInt64:= 4981874019;
              IBSQL.ParamByName('dGegenkonto').AsInt64:= 4981464015
              IBSQL.ExecQuery;
              </PRE>

              Das Ausführen der Update-Anweisung führt jedoch nicht zum gewünschten Erfolg. Im Feld Gegenkonto ist immer noch der alte Wert enthalten.

              Kann man prüfen, wie viele Änderungen die IBSQL-hervorgerufen hat ?

              Gibt es ähnlich zu einer Select-Anweisung die Möglichkeit, auf die RecordCount-Eigenschaft zuzugreifen ?

              Grüsse,
              Carste

              Comment


              • #8
                Hallo Carsten,

                verwende den IBSQL-Monitor. Da kannst Du sehen welche SQL-Statements an den IB-Server geschickt werden.

                Gruß

                Torste

                Comment


                • #9
                  Hallo Torsten,

                  Ok, ich habe noch einen Bug gehabt und das Gegenkonto als fixen Wert gesetzt.

                  Jetzt führt die Anweisung auch zum gewünschten Erfolg. Was ich trotzdem noch bräuchte, wäre eine Art Rückmeldung, die mir die Anzahl der geänderten Datensätze zurückliefert.

                  Angenommen das Konto existiert nicht, so schickt er nämlich die SQL ab, die auch ausgeführt wird. Sie führt aber zu keiner Fehlermeldung, da die Syntax der SQL korrekt ist.

                  Ich würde nämlich gerne dem Anwender mitteilen, wenn die SQL keine Änderung bewirkt hat.

                  Danke für den Tip mit dem SQL-Monitor.

                  Viele Grüsse,
                  Carste

                  Comment

                  Working...
                  X