CC: XML in Blobfeld speichern

7. Oktober 2010 10:34

Hallöchen liebe Gemeinde...

Ich hab da ein Problem mit dem Speichern einer XML-Datei in ein Blobfeld... laut recherchen hier im Forum müsste dieser Weg funktionieren:

Code:
blobTbl.Artikelnr := 'asdtest';
blobTbl.Blobfeld.IMPORT('C:\test\c.xml');

IF blobTbl.INSERT() THEN MESSAGE('Insert funzt!');


Doch leider nachdem mir die Message ausgegeben wurde, finde ich kein Eintrag in meiner Tabelle mit der Artikelnr: 'asdtest' und kein Stern.
Was mach ich denn falsch?


Ich hatte es auch schon versucht mit einem In- & OutStream darzustellen doch leider kann Navision nicht:

Code:
 Instream := OutStream;


:)

Mal wieder wäre ich dankbar für jede Hilfestellung.

Danke.
Zuletzt geändert von Cr4cks am 8. Oktober 2010 08:54, insgesamt 1-mal geändert.

Re: XML in Blobfeld speichern

7. Oktober 2010 22:35

Hallo,

bei deiner Idee mit den Streams warst du schon auf dem richtigen Weg.
Du hast richtig erkannt, dass du die Streams nicht einfach zu weisen kannst. Aber ich glaube der COPYSTREAM-Befehl sollte dir weiter helfen.
Wenn es nicht auf Anhieb klappt solltest du mal einen Blick in die Entwickler-Onlinehilfe werfen. Das Beispiel dort sollte dir weiter helfen.

Re: CC: XML in Blobfeld speichern

8. Oktober 2010 08:57

Der COPYSTREAM-Befehl hat mir immerhin schonmal das Blobfeld angeblich gefüllt, zumindest steht jetzt ein Stern darin. =)

Danke dafür

Code:
//INSERT TO BLOB

FileFile.OPEN('C:\test\c.xml');
FileFile.CREATEINSTREAM(FileInStream);
blobTbl.Artikelnr := 'asdtest';
blobTbl.Blobfeld.CREATEOUTSTREAM(BlobOutStream);

COPYSTREAM(BlobOutStream, FileInStream);
blobTbl.INSERT();


So funktioniert das schonmal...

jetzt hab ich mich im umgekehrte Sinne versucht, also das Blob wieder auslesen und in eine Datei packen...

Code:
//INSERT TO XML
FileFile.CREATE('C:\Users\x.x\Desktop\test\ctest.xml');
FileFile.CREATEOUTSTREAM(FileOutStream);

IF blobTbl.FIND('-') THEN MESSAGE('FINDFIRST FUNZT!');
blobTbl.Blobfeld.CREATEINSTREAM(BlobInStream);

IF COPYSTREAM(FileOutStream, BlobInStream) THEN MESSAGE('Copy Stream funzt');
FileFile.CLOSE;


Nun bekomm ich aber leider eine Fehlermeldung dass das blobfeld leer wäre und das man es nicht streamen kann... hmm was nun? :roll:
Zuletzt geändert von Cr4cks am 6. Februar 2013 16:29, insgesamt 1-mal geändert.

Re: CC: XML in Blobfeld speichern

8. Oktober 2010 10:04

Hört sich nach einem fehlenden CALCFIELDS() an. Blobs und FlowFields müssen vor Benutzung berechnet werden.

Gruß,
Sebastian

Re: CC: XML in Blobfeld speichern

8. Oktober 2010 11:03

Ich dachte man muss das Calcfields() nur machen wenn man ein Bild(im blobfeld) verwenden/anzeigen lassen will, aber nicht wenn man nur die daten woanders hinschmeissen will... Irre ich mich diesbezüglich?

Re: CC: XML in Blobfeld speichern

8. Oktober 2010 13:38

Ich kann mich auch irren, so ist das nicht. Habe das selber noch nicht in der Form getan. Probier es doch einfach aus, macht ja nix kaputt :-)

Re: CC: XML in Blobfeld speichern

8. Oktober 2010 13:53

Nee, da hat Yoda (also Seb) schon recht :wink:

Re: CC: XML in Blobfeld speichern

8. Oktober 2010 21:40

Japp, das CALCFIELDS fehlt. Du musst immer ein Calcfields machen, wenn du aus einem BLOB lesen willst.