[gelöst]Excel-Export - mehrere Sheets - PROBLEM

23. Februar 2011 15:08

Hallo zusammen,

ich habe ein kleines nervendes Problem. Ich habe mich zur Lösung dieses, schon durch versch. Foren gegraben, wo Lösungsmöglichkeiten erörtert wurden - nur leider läuft es bei mir nicht.

Also zum Problem:

Ich habe einen Report, welcher 2 DataItems durchläuft. Diese 2 Tables sollen ganz stupide in Excel geschrieben werden...allerdings Table #1 in das erste Worksheet und Table #2 in das zweite Worksheet.

Ich habe im ExcelBuffer folgende Funktion hinterlegt:

Code:
AddSheet()
XlWrkSht := XlWrkBk.Worksheets.Add;
XlWrkSht.Activate;


Im OnAfterGetRecord - Trigger des 1. DataItems folgender Code:

Code:
 
g_intZeile += 1;

EnterCell(g_intZeile,1,FORMAT("G/L Budget Entry"."Entry No."),FALSE,FALSE,FALSE);
...


Im OnPostDataItem - Trigger des 1. DataItems folgender Code:

Code:

TempExcelBuffer.CreateBook;
TempExcelBuffer.CreateSheet(
  'Irgendein Blatt',
  PADSTR(STRSUBSTNO('Irgendein Blatt'),30),
  COMPANYNAME,USERID);
//TempExcelBuffer.GIVEUSERCONTROL;


das erste Sheet wird auch ordnungsgemäß erstellt, wenn ich mir GIVEUSERCONTROL einblende

#####################

Im OnPreDataItem - Trigger des. 2. DataItems folgender Code:

Code:
TempExcelBuffer.DELETEALL;


Im OnAfterGetRecord - Trigger des 2. DataItems folgender Code:

Code:
 
g_intZeile2 += 1;

EnterCell(g_intZeile2,1,FORMAT(Dienstplanzeile."Zeilennr.",FALSE,FALSE,FALSE);
...


Im OnPostDataItem - Trigger des 2. DataItems folgender Code:

Code:

TempExcelBuffer.AddSheet();
TempExcelBuffer.CreateSheet(
  'Irgendein 2. Blatt',
  PADSTR(STRSUBSTNO('Irgendein 2. Blatt'),30),
  COMPANYNAME,USERID);
TempExcelBuffer.GIVEUSERCONTROL;


Die Funktion EnterCell, wie sie bekannt sein sollte
Code:

TempExcelBuffer.INIT;
TempExcelBuffer.VALIDATE("Row No.",RowNo);
TempExcelBuffer.VALIDATE("Column No.",ColumnNo);
TempExcelBuffer."Cell Value as Text" := CellValue;
TempExcelBuffer.Formula := '';
TempExcelBuffer.Bold := Bold;
TempExcelBuffer.Italic := Italic;
TempExcelBuffer.Underline := Underline;
TempExcelBuffer.INSERT;


######

Ich habe an diesem Code ne weile gebastelt, bevor er diese Gestalt hatte. In früheren Tests wurde das erste Sheet erstellt, aber beim Zweiten abgebrochen (Zeilennr. 1 schon vorhanden<<--- TempBuffer nicht gelöscht? oder AddSheet nicht richtig implementiert?)

Nunja und seit neuestem bekomme ich die Fehlermeldung

---------------------------
Microsoft Dynamics NAV
---------------------------
Das Betriebssystem hat die Fehlermeldung (131) ausgegeben:

Es wurde versucht, den Dateizeiger vor den Anfang der Datei zu bewegen.


Kann mir jemand weiterhelfen? Ich seh den Fehler einfach nicht :/

EDIT:

Die Fehlermeldung kommt aus der Table Dienstplanzeile - wenn ich diese filtere, dann passt es. mal schauen, welcher wert der übeltäter ist.

es wäre trotzdem nice2know, wenn mir jemand sagen könnte, ob der ansatz richtig ist? <<<- spätestens morgen werden ich den beitrag als [gelöst] markieren

EDIT 2:

Jetzt werden 2 sheets erstellt, allerdings am ende mit diesem hinweis:

---------------------------
Microsoft Dynamics NAV
---------------------------
Diese Meldung ist für C/AL-Programmierer:

Für diese Automation Variable wurde keine Instanz erstellt.
Sie können ihr eine Instanz zuordnen, indem Sie sie entweder erstellen oder zuordnen.

---------------------------
OK
---------------------------
.....wenn jemand einen tipp hat, wie ich das gelöst bekomme, wäre ich sehr dankbar ;)
=> kleiner schusselfehler -> hatte das erste worksheet schon auf giveusercontrol gestellt, als das 2. gerade angefangen hatte .....