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 .....