[Gelöst] MODIFY funktioniert nach Excel-Export nicht (CC)

29. November 2013 17:55

Hallo,
gerade stehe ich vor folgendem Problem: Ich möchte Daten aus einer Tabelle in ein Excel-Sheet übertragen. Nach erfolgter Übertragung sollen die übertragenen Datensätze mit einem Kennzeichen "bereits abgestimmt" in der Tabelle markiert werden. Sobald ich jedoch Daten nach Excel übertrage (MakeExcelDataBody), funktioniert das MODIFY auf die Tabelle nicht mehr, das Kennzeichen wird zwar gesetzt, das MODIFY ausgeführt, nur leider wird die Änderung nicht tatsächlich in die Tabelle übernommen. Ich muss es VOR dem eigentlichen Übertragen vornehmen und mit COMMIT abschließen. Ich finde das etwas unschön, zum einen wegen dem unmotivierten COMMIT, und zum anderen soll das Kennzeichen ja erst dann gesetzt werden, wenn wirklich etwas nach EXCEL übertragen wurde, und nicht schon dann, wenn bereits der Versuch unternommen wurde.
Hier das fragliche Codefragment:
Code:
Joblist - OnAfterGetRecord()
"bereits abgestimmt":=TRUE;
MODIFY;
COMMIT;
IF grcCompany.GET(Joblist.Company) THEN BEGIN;
  grcCompanyInfo.CHANGECOMPANY(grcCompany.Name);
  grcCompanyInfo.FIND('-');
  grcBAUIndSetup.CHANGECOMPANY(grcCompany.Name);
  grcBAUIndSetup.FIND('-');
  gdeAmount:=0;
  gdeAmountIncVAT:=0;
  gdeVAT:=0;
  gvdGetValues("Document No.",gdeAmount,gdeAmountIncVAT,gdeVAT);
  ginSeitenzahl:=griErmittleSeitenzahl("Document No.");
  IF CurrReport.USEREQUESTFORM THEN
    MakeExcelDataBody
  ELSE
    gvdMakeCSVLines;
  ginNoDocs+=1;
END;


Was muss ich tun, damit das MODIFY auch NACH dem Excel-Export auch funktioniert.

Mit freundlichen Grüßen
Zuletzt geändert von FragenFrager am 4. Dezember 2013 14:52, insgesamt 4-mal geändert.

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

2. Dezember 2013 02:52

Hallo FragenFrager,

ohne mich jetzt damit beschäftigt zu haben, hast du es mal mit einem zweiten Records auf die Joblist probiert?

Ich könnte mir das so vorstellen, dass bevor du die Zeile in Excel übertragen hast ...
... einen zweiten Record nimmst und
... ein GET mit Hilfe des ersten RECs ausführst

Sobald du die Zeile in Excel übertragen hast ...
... das Flag des zweiten RECs setzt und
... den MODFIY auf diesen REC ausführst


Vielleicht hilft das.

Gruß
Carsten

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

2. Dezember 2013 10:34

Hallo Carsten,
leider funktioniert auch das nicht. Trotzdem danke.

Mit freundlichen Grüßen
Frank

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

2. Dezember 2013 17:12

Auf den ersten Blick würde ich sagen, da stimmt etwas nicht mit deinem Report. Wenn man einen normalen Batchreport macht, muß man ja auch nicht bei jedem Datensatz ein COMMIT setzen. Was macht die Funktion MakeExcelDataBody weiter?

FragenFrager hat geschrieben:...zum anderen soll das Kennzeichen ja erst dann gesetzt werden, wenn wirklich etwas nach EXCEL übertragen wurde, und nicht schon dann, wenn bereits der Versuch unternommen wurde.

Dieses Problem wirst du immer haben, denn es gibt in dem Sinne ja kein Feedback von Excel. Es können alle Zeilen ordentlich an Excel übergeben, die Kennzeichen jeweils gesetzt worden sein und am Ende bei der Anzeige stürzt auf einmal Excel ab. Dann sind alle Haken gesetzt, der User sieht aber trotzdem kein Ergebnis.

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

3. Dezember 2013 09:22

Hallo,
hier einmal die Funktion MakeExcelDataBody

Code:
MakeExcelDataBody()
ExcelBuf.NewRow;
ExcelBuf.AddColumn(Joblist."Acceptance date",FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(Joblist."Acceptance time",FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(FORMAT('F'),FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(Joblist.Company,FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(grcCompanyInfo.Name,FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn((''''+grcCompanyInfo.Gesellschaft),FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn('',FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(ginNoDocs,FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(Joblist.AusgabePDF,FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(gdeAmountIncVAT,FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(gdeAmount,FALSE,'',FALSE,FALSE,FALSE,'');
ExcelBuf.AddColumn(gdeVAT,FALSE,'',FALSE,FALSE,FALSE,'');


Es werden nur Daten aus einer Tabelle Joblist, der Name des Mandanten, der Daten in die Joblist geschrieben hat (Joblist ist mandantenübergreifend)) sowie noch die Anzahl der übergebenen Belege und der errechnete Betragsfelder übergeben.
Das Argument, dass von Excel kein Feedback kommt, kann ich nach vollziehen.

Mit freundlichen Grüßen
Frank Diederichsen

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

3. Dezember 2013 10:25

Hmmm... das kann es eigentlich nicht sein. Sieht für mich normal aus. Kann es die Funktion gvdGetValues sein?

Ein paar kleinere Anmerkungen zu deinem Aufruf, aber das kann eigentlich nichts mit deinem Problem zu tun haben.
Code:
IF grcCompany.GET(Joblist.Company) THEN BEGIN;  // ; am Ende kann hier eigentlich nicht sein, Tippfehler?
Joblist. brauchst du hier eigentlich nicht verwenden, da du bereits im Kontext von Joblist - OnAfterGetRecord bist. Sicher, daß es die Variable Joblist nicht 2x gibt (global als DataItem und lokal als Variable? Das könnte ein Grund für das Verhalten sein.

Code:
  grcCompanyInfo.CHANGECOMPANY(grcCompany.Name);
  grcCompanyInfo.FIND('-');
  grcBAUIndSetup.CHANGECOMPANY(grcCompany.Name);
  grcBAUIndSetup.FIND('-');
Company Info und ich vermute auch das BAUIndSetup sind Tabellen, die in der Regel nur einen Datensatz enthalten. Daher reicht hier ein einfaches Record.GET anstelle des FIND('-').

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

3. Dezember 2013 11:54

Hallo,
[quote="HattrickHorst"]Hmmm... das kann es eigentlich nicht sein. Sieht für mich normal aus. Kann es die Funktion gvdGetValues sein?

getValues? Wo siehst Du das?


Ein paar kleinere Anmerkungen zu deinem Aufruf, aber das kann eigentlich nichts mit deinem Problem zu tun haben.
Code:
IF grcCompany.GET(Joblist.Company) THEN BEGIN;  // ; am Ende kann hier eigentlich nicht sein, Tippfehler?
Joblist. brauchst du hier eigentlich nicht verwenden, da du bereits im Kontext von Joblist - OnAfterGetRecord bist. Sicher, daß es die Variable Joblist nicht 2x gibt (global als DataItem und lokal als Variable? Das könnte ein Grund für das Verhalten sein.

Zu dem Zeitpunkt des ersten Postings gab es die Joblist nur als globale Variable bzw. DataItem. Ich habe dann auf das Posting von Carsten Joblist als lokale Variable hinzugefügt, und versucht, das MODIFY hierauf auszuführen, mit dem gleichen Ergebnis.
Das ; am Ende von BEGIN war natürlich ein Tippfehler. Dessen Behebung hat allerdings nichts geändert. Trotzdem Danke für den Hinweis

Mit freundlichen Grüßen
Frank Diederichsen

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

3. Dezember 2013 12:05

FragenFrager hat geschrieben:getValues? Wo siehst Du das?

Ist das kein Funktionsaufruf in Zeile 12?
Code:
gvdGetValues("Document No.",gdeAmount,gdeAmountIncVAT,gdeVAT);

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

3. Dezember 2013 12:45

ups, natürlich. Ich habe zwei ähnliche Programme, das eine hat diesen Funktionsaufruf allerdings nicht. Beide Programme haben aber das Problem, dass ich den MODIFY auf die Joblist VOR dem Excel-Export vornehmen und mit COMMIT abschließen muss, ansonsten wird das Flag nicht gesetzt, bzw. wenn ich das Programm debugge, kann ich sehen, dass das Flag gesetzt und der MODIFY ausgeführt wird. Wenn ich nach dem Beenden des Programms die Tabelle Joblist aufrufe, ist das Flag allerdings wieder verschwunden. Ich habe auch schon geguckt, ob das Flag im Anschluss an den Excel-Export gecleart wird, wird es nicht. Wenn ich anstelle des Excel-Exports die Daten über die Funktion gvdMakeCSVLines in eine .csv-Datei exportiere (ohne diese interaktiv aufzurufen), funktioniert der MODIFY übrigens, auch wenn ich ihn NACH dem Aufruf der Funktion ausführe und ohne COMMIT.

Mit freundlichen Grüßen
Frank Diederichsen

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

4. Dezember 2013 13:14

Hallo Frank,

FragenFrager hat geschrieben:Zu dem Zeitpunkt des ersten Postings gab es die Joblist nur als globale Variable bzw. DataItem. Ich habe dann auf das Posting von Carsten Joblist als lokale Variable hinzugefügt, und versucht, das MODIFY hierauf auszuführen, mit dem gleichen Ergebnis.

Versteh ich das so richtig, dass du einen globalen REC "Joblist" und auch einen lokalen REC "Joblist" besitzt?
Dies könnte, wie HattrickHorst schon schrieb, den Fehler verursachen.

Normalerweise sollte es kein Problem sein, Daten während eines Reports zu modifizieren.
Sowas ist ja fast schon Routine.

Aber dieses Verhalten, was du beschreibst, ist mir nur bekannt, wenn man den Modify vergisst ;).
Sicher, dass der Modify auch auf die lokale Variable zeigt?
Änder doch mal den lokalen in "lrecJobList" oder wie es MS auch gerne macht "Joblist2" :wink:

Ansonsten änderst du den Record nicht, oder?

Gruß
Carsten

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

4. Dezember 2013 13:30

Hallo Carsten,
>>Versteh ich das so richtig, dass du einen globalen REC "Joblist" und auch einen lokalen REC "Joblist" besitzt?

Nicht ganz, die lokale Instanz von Joblist habe ich lrcJoblist benannt.

>>Dies könnte, wie HattrickHorst schon schrieb, den Fehler verursachen.

>>Normalerweise sollte es kein Problem sein, Daten während eines Reports zu modifizieren.
>>Sowas ist ja fast schon Routine.

>>Aber dieses Verhalten, was du beschreibst, ist mir nur bekannt, wenn man den Modify vergisst ;).
>>Sicher, dass der Modify auch auf die lokale Variable zeigt?

Ja, bzw. inzwischen habe ich es wieder "zurückgebaut", benutze also nur das DataItem Joblist. MODIFY funktioniert nur, und wirklich nur, wenn ich es vor dem ersten Aufruf der Excelliste ausführe und mit COMMIT abschließe, egal, ob ich mit dem DataItem oder einer lokalen Instanz arbeite.

>>Ansonsten änderst du den Record nicht, oder?

Nein

Gruß
Frank

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

4. Dezember 2013 14:37

Hallo

Nur so eine Vermutung:
Du verwendest in Deinem Report eine Funktion Namens MakeExcelDataBody, so wie dies der Standard z.B. im Report 113 Customer/Item Sales dies auch macht.
Hast Du evtl. auch die Funktion CreateExcelbook() abgekupfert?
Dort steht:
Code:
ExcelBuf.CreateBook;
ExcelBuf.CreateSheet(Text001,Text002,COMPANYNAME,USERID);
ExcelBuf.GiveUserControl;
ERROR('');


Dann wäre alles klar. Mit dem Error('') wird ein Rollback durchgeführt und alle vorher geänderten Daten werden zurückgesetzt.
Ausser man verwendet ein Commit.

Gruss

Re: MODIFY funktioniert nach Excel-Export nicht (CC)

4. Dezember 2013 14:43

Hallo Martin,
so ist es. Dann wäre die Sache hiermit geklärt, danke vielmals :-)

Mit freundlichen Grüßen
Frank Diederichsen

Re: [Gelöst] MODIFY funktioniert nach Excel-Export nicht (CC

4. Dezember 2013 14:54

soeben geschehen, danke für den Hinweis.

Gruß, Frank