Problem Storing XML File in an External SQL Database

Fabio34
Fabio34 Member Posts: 4
Hello to everyone.
I have one problem with storing XML Files (that I have in one Navision Table as BLOB) in an External SQL Database in a field "Text 16".
I use Automation "Microsoft ActiveX Data Objects 2.8 Library" and I have to read/write in an external SQL Table.
I can read the Text 16 field storing the XML in my Navision Table as a BLOB with this code:
DBFldObject := DBFldCollection.Item(FieldID);
IF (DBFldObject.Value.ISTEXT) OR (DBFldObject.Value.ISCODE) THEN BEGIN
  CodaLavori.Allegato.CREATEOUTSTREAM(ValueOutStream);
  DBStream.Open;
  DBStream.WriteText(DBFldObject.Value);
  DBStream.Position:= 0;
  REPEAT
    TextValue := DBStream.ReadText(250);
    ValueOutStream.WRITETEXT(TextValue);
  UNTIL DBStream.EOS;
  DBStream.Close;
END;
But when I try to write in the same field with this code:
CodaLavori.Allegato.CREATEINSTREAM(InStreamValue);
DBStream.Open;
REPEAT
  InStreamValue.READTEXT(TextValue,250);
  DBStream.WriteText(TextValue);
UNTIL InStreamValue.EOS;
DBStream.Position := 0;
DBFldObject := DBFldCollection.Item(FieldId);
DBFldObject.Value := DBStream.ReadText;
DBStream.Close;
I encounter the error "the length of the text string exceeds the size of the string buffer" when the system executes the code
DBFldObject.Value := DBStream.ReadText;
Do you have any suggestion for me?
Thank you in advance

Fabio

Answers

  • Fabio34
    Fabio34 Member Posts: 4
    Anyone could help me? :cry: [-o<
  • Fabio34
    Fabio34 Member Posts: 4
    Replaced the write code with this:
    DBFldObject := DBFldCollection.Item(FieldId);
    REPEAT
      InStreamValue.READTEXT(TextValue,250);
      DBFldObject.AppendChunk(TextValue);
    UNTIL InStreamValue.EOS;
    

    Now everything works good :D