[Gelöst] BLOB im RDLC Report (Sales Quote) leer

18. September 2016 19:50

Hallo allerseits,

irgendwie stehe ich auf dem Schlauch:

Ich habe ein BLOB-Feld in Table 37 ein BLOB Feld angelegt, das Laden und Füllen funktioniert auch einwandfrei.

Allerdings möchte ich das Feld nun auch im Report Mini Sales Qoute (1304) in den Zeilen ausgeben. Ich habe nun im C/AL-Code im Trigger OnAfterGetRecord das Feld nach einem HASVALUE mit CALCFIELDS geladen und mit einem StreamReader in eine Textvariable geladen, die dann im DataSet eingetragen ist.
Im Report scheint mein BLOB-Feld allerdings immer leer zu sein, aber warum?
Am Transfer ins RDLC liegts nicht, wenn ich z.B. einen Text anhänge wird der auch angezeigt.
HASVALUE ist allerdings True, das konnte ich testen.

Was mache ich falsch

Hier vielleicht mal kurz mein Code:
Code:
IF Line."Concept Detail Text".HASVALUE THEN BEGIN
  Line.CALCFIELDS("Concept Detail Text"); 

  Line."Concept Detail Text".CREATEINSTREAM(InS);
  StreamReader := StreamReader.StreamReader(InS,TRUE);
  ConceptDetailText := StreamReader.ReadToEnd();
  StreamReader.Close();
END ELSE BEGIN
  ConceptDetailText := '';
END;


ConceptDetailText ist dabei meine Variable, die an der DataSource hängt.

Hat jemand eine Idee?

Grüße

Björn
Zuletzt geändert von bscheffer am 20. September 2016 19:11, insgesamt 1-mal geändert.

Re: BLOB im RDLC Report (Sales Qoute) leer

19. September 2016 08:21

Hallo,

wenn Du das Dataset als XML-Datei speicherst. Welchen Inhalt hat Deine Textvariable?

hier findest Du Beispiele wie das mit einem Stream funktioniert:

https://blogs.msdn.microsoft.com/nav/20 ... using-cal/

Gruß

Michael

Re: BLOB im RDLC Report (Sales Qoute) leer

19. September 2016 09:11

Hallo,

versuch mal folgendes Beispiel:
Code:
Name   DataType   Subtype   Length
vBigText   BigText      
TempBlob   Record   TempBlob   
vText   Text      
OutStr   OutStream      
Instr   InStream      

Code:
vBigtext.addtext('Hello World');
TempBlob.BLOB.createOutstream(OutStr);
vbigtext.write(OutStr);
clear(vBigTExt);
if TempBlob.Blob.HASValue then begin
// TempBlob.calcfields(Blob);  <- Nicht durchführen, wenn der Datensatz nicht wirklich im Blob per INSERT oder MODIFY gespeichert wurde
   TempBlob.blob.Createinstream(instr);
   vBigTExt.read(instr);;
   vBigText.GETSUBTEXT(vTExt,1);
end;
message(vtext);


Gruß Fiddi

Re: BLOB im RDLC Report (Sales Qoute) leer

19. September 2016 17:54

Hallo Fiddi,

danke für die Rückmeldung. Dein Code funktioniert, also am Blob liegts nicht.
Mein Feld scheint aber wirklich leer zu sein, obwohl HASVALUE True ergibt.
Das Dataset kann ich nicht einsehen, ich komme in der Preview leider nicht in das Menü. Da scheine ich anabhängig von diesem Problem noch eines zu haben.
Ist da was bekannt? Vielleicht sollte ich das aktuelle CU einspielen...

@Michael
Stream Lesen und schreiben funktioniert, nur eben nicht im Report 1304... :-(


Kann das sein, dass die Daten aus meinem Feld im Report einfach nicht zur Verfügung stehen? In einer Page auf der Tabelle sind die Daten da, in Reports nicht. Ich habs auch nochmal mit Rep 204 getestet: Gleicher Effekt.


Grüße

Björn

Re: BLOB im RDLC Report (Sales Qoute) leer

19. September 2016 18:22

bscheffer hat geschrieben:Hallo Fiddi,
Das Dataset kann ich nicht einsehen, ich komme in der Preview leider nicht in das Menü. Da scheine ich anabhängig von diesem Problem noch eines zu haben.



STRG+ALT+F1 geht nicht?
PS: vor dem Druck in das Menü die Eigenschaften

Re: BLOB im RDLC Report (Sales Qoute) leer

19. September 2016 20:30

Mein Feld scheint aber wirklich leer zu sein, obwohl HASVALUE True ergibt.


Das kann zwei Gründe haben.

1. Der Blob wurde zugewiesen, aber nicht im Record gespeichert. Dann gibt HASVALUE True, aber ein CALCFIELDS würde den BLOB neu aus der dem Record lesen, also ihn leeren.
2. der Blob ist kein Text. Wenn der Blob mit einem NULL-Zeichen, dann hat der Text die Länge 0.

Um 1. zu Prüfen, einfach den CALCFIELDS weglassen.
Für 2. einfach den BLOB mal direkt in eine Datei schreiben, und schauen, wie groß die Datei ist.

Gruß Fiddi

Re: BLOB im RDLC Report (Sales Qoute) leer

20. September 2016 19:10

Hallo zusammen,

zunächst danke einmal für die Hilfe!

Ich konnte mein Problem lösen, der Hinweis, den Blob auf die Platte zu schreiben war ein guter Ansatz. Tatsächlich war mein Feld leer.
Ein bisschen Code-Lesen hat mich dann in Code Unit 80 geführt wo der Datensatz kopiert wird. Hier fehlte dann ein CALCFIELDS auf dem Quell-Datensatz... :roll:

Das eingefügt und siehe da: Mein Text taucht auf. :-D

@sweikelt
Nein, die Eigenschaften lassen sich nichteinmal öffnen, es ist als würde immer jemand auf "Seite zurück" klicken wollen. Ich werde da mal das aktuelle CU einspielen und ggf. einen neuen Thread aufmachen.

Grüße

Björn