[Gelöst] Bigtext und modifyall

16. Dezember 2008 10:46

Ich habe hier eine Bigtextvariable, die in ein Blob gespeichert werden soll.

Mit Modify klappt das speichern ohne Probleme, aber dann muss ich ja erst alle anderen Felder aus der Tabelle auslesen und ebenfalls mit speichern. Ich will aber nur dieses eine Feld aktualisieren.

Der Compiler meckert bei Record.MODIFYALL(blobfeld, Bigtextvariable), dass das nicht passt (logischerweise). Das muss aber doch gehen.

Volker


EDIT:
Habe das wie unten gelöst
Zuletzt geändert von vsnase am 15. Februar 2009 14:56, insgesamt 1-mal geändert.

Re: Bigtext und modifyall

12. Februar 2009 20:57

Hallo Volker,
geh mal in Programmierhilfe,
Gib als schlüsselwort "BigText" und guck dann mal bei Write.
Dort sind Codebeispiele, welche die Abhandlung von Streams Blob und Bigtext abhandelt.
Gruß Micha

Re: Bigtext und modifyall

15. Februar 2009 01:32

vsnase hat geschrieben:Ich habe hier eine Bigtextvariable, die in ein Blob gespeichert werden soll.
Mit Modify klappt das speichern ohne Probleme, aber dann muss ich ja erst alle anderen Felder aus der Tabelle auslesen und ebenfalls mit speichern. Volker

Kannst du bitte deine Problemstellung vervollständigen und auch verraten (Quellcode), wie du Bigtextvariable in ein Blob Fels durch MODIFY speicherst.

Gruß, Michael

Re: Bigtext und modifyall

15. Februar 2009 14:10

vsnase hat geschrieben:aber dann muss ich ja erst alle anderen Felder aus der Tabelle auslesen und ebenfalls mit speichern. :?:
Ich will aber nur dieses eine Feld aktualisieren.
Der Compiler meckert bei Record.MODIFYALL(blobfeld, Bigtextvariable), dass das nicht passt (logischerweise). Das muss aber doch gehen.


MODIFYALL in diesem Fall funktioniert nicht, lässt sich aber leicht nachbilden.

Es wird eine zusätzliche Variable gebraucht:
Code:
OutStreamVariable vom DataType OutStream      

Tabelle.RESET;
IF Tabelle.FIND('-') THEN BEGIN
  REPEAT
    Tabelle."BLOB Field".CREATEOUTSTREAM(OutStreamVariable);
    BigTextVariable.WRITE(OutStreamVariable);
    Tabelle.MODIFY;
  UNTIL Tabelle.NEXT = 0;
END;


Das war's.
Gruß, Michael.