Announcement

Collapse
No announcement yet.

Übernahme von Daten aus einer ORACLE-Datenbank

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

  • Übernahme von Daten aus einer ORACLE-Datenbank

    Hallo,

    nachdem ich vergeblich über das Forum versucht habe ein Problem <BR>
    zu lösen, wende ich mich jetzt nochmals an alle Entwickler.<BR>

    Mein Problem ist folgendes:<BR>
    In einer ORACLE-Datenbank sind Felder vom Typ VARCHAR(2000). <BR>
    Der Inhalt diese Felder läßt sich in keine Delphi-Variable laden.<BR>

    TRY<BR>
    Memo2.Lines.Assign(TBlobField(Query4.FieldByName(' TEXT1')));<BR>
    EXCEPT END; <BR>
    oder<BR>
    v_2000 := trim(Query4.FieldByName('TEXT1').asstring);<BR>

    Bei beide Befehle wird nichts übernommen.

    Benötige dringend hilfe!!

    mfg<BR>
    ernst

  • #2
    Versuche es mal so:<BR>
    procedure TForm1.Button1Click(Sender: TObject);<BR>
    var<BR>
    Stream : TBlobStream;<BR>
    begin<BR>
    Stream := Nil;<BR>
    Table1.Open;<BR>
    try<BR>
    Stream := TBlobStream.Create(Table1.FieldByName('TEXT') as TBlobField, bmRead);<BR>
    Memo1.Lines.LoadFromStream(Stream);<BR>
    finally<BR>
    Stream.Free;<BR>
    end;<BR>
    end;<BR>

    Gruß<BR>
    Matthia

    Comment


    • #3
      hallo matthias,

      Stream := TBlobStream.Create(Query4.FieldByName('TEXT') as TBlobField, bmRead);<BR>
      führt zu einem Fehler : Ungültiges BLOB-Handle im<BR>
      Datensatzpuffer !!

      mfg>BR>
      ers

      Comment


      • #4
        Hallo,

        &gt;Ungültiges BLOB-Handle im Datensatzpuffer

        die BDE kann nicht zaubern (oder technischer gesagt: die von der Größe her unbekannten BLOb-Daten können nicht für <b>alle</b> Datensätze einer umfangreichen Ergebnismenge gleichzeitig im Arbeitsspeicher verwaltet werden).

        In der <b>BDE-Verwaltung</b> gibt es auf der Registerseite <i>Konfiguration</i> im Zweig <i> Treiber | Native | ORACLE</i> den Konfigurationswert <b>BLOBS TO CACHE</b>, der als Vorgabewert auf 64 eingestellt ist (zulässiger Bereich: > 64 und < 65536).

        Wenn die Ergebnismenge der SELECT-Abfrage sehr viele Datensätze enthält, wird nichts anderes übrigbleiben, als die BLOb-Spalte wegzulassen und die BLOb-Daten später über einzelne SELECTs (mit dem Primärschlüsselwert als WHERE-Kriterium) nachzuladen. In diesem Fall ist immer nur ein einziger BLOb-Puffer im Spiel

        Comment


        • #5
          hallo,

          vielen dank für eure tipp's <BR>

          habe das problem ( VARCHAR(2000) ) über eine VIEW gelöst. <BR>

          im VIEW habe ich das feld in 8 einzelne felder a 250 byte <BR>
          aufgeteilt und anschliessend im memo.lines.text wieder zusammen-<BR>
          gefügt. - klappt wunderbar -

          mfg<BR>
          erns

          Comment

          Working...
          X