[gelöst] Problem mit Report

Bild Microsoft Dynamics NAV 3.xx
(ehem. Navision Attain)

[gelöst] Problem mit Report

Beitragvon D_Gross » 27. August 2009 11:33

Hallo,

wir haben ein Problem mit einem Excel Report. Dieser soll uns eigentlich nur ein paar Daten von zwei Tabellen auflisten. Einmal aus der Vendor-Tabelle und einmal aus der Vendor Bank Account-Tabelle.

Der Report funktioniert soweit auch, aber wenn bei einem Kreditor keine Bankdaten (also Daten in der zweiten Tabelle) eingetragen sind, werden auch die anderen Daten nicht angedruckt, der Datensatz wird also einfach ĂĽbersprungen.

Wir haben angegeben das die Vendor Nr. aus der Vendor Tabelle gleich der Vendor Nr. in der Bank Account-Tabelle ist. Wenn also die Vendor Nummer in der Bank Account-Tabelle leer ist weil ja kein Bankkonto eingetragen ist lässt er den Datensatz weg...

WeiĂź von euch vielleicht einer wie man das Problem umgehen kann?

GruĂź,
D_Gross
Zuletzt geändert von D_Gross am 27. August 2009 15:45, insgesamt 1-mal geändert.
D_Gross
 
Beiträge: 68
Registriert: 3. April 2008 09:07

Re: Problem mit Report

Beitragvon Natalie » 27. August 2009 11:42

Stehen in der Exceldatei die Kreditor- und Kontodaten nebeneinander in einer Zeile?
Ich verstehe das so, dass das Schreiben nach Excel nur im DataItem Vendor Bank Account statt findet (Funktionsaufruf EnterCell o.ä.). Das müsstest du dann natürlich aufsplitten: Die ersten Daten (des Kreditors) schon im DataItem Vendor.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Problem mit Report

Beitragvon D_Gross » 27. August 2009 11:50

Hallo,

ja die Daten stehen in der Excel Datei in einer Zeile nebeneinander.

Ja die Daten aus der Vendor Tabelle ĂĽbergeben wir ans Excel Im Vendor - OnAfterGetRecord() und die Daten aus der
Tabelle Vendor Bank Account aus dem Vendor Bank Account - OnAfterGetRecord(). Aber irgendwie funktioniert das trotzdem nicht...

GruĂź,
D_Gross
D_Gross
 
Beiträge: 68
Registriert: 3. April 2008 09:07

Re: Problem mit Report

Beitragvon mikka » 27. August 2009 11:58

Ist evtl. irgendwo ein SKIP oder BREAK im Code?
GruĂź, Mikka

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Re: Problem mit Report

Beitragvon Timo Lässer » 27. August 2009 12:03

Erfolgt die Ăśbergabe an den ExcelBuffer im DataItem oder in den Sections?
Wenn in den Sections:
Kann es sein, dass im DataItem "Vendor" das Property "PrintOnlyIfDetail" gesetzt ist?
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: Problem mit Report

Beitragvon Natalie » 27. August 2009 12:04

mikka hat geschrieben:Ist evtl. irgendwo ein SKIP oder BREAK im Code?

Würd ich auch tippen. Vor dem EnterCell in Vendor OnAfterGetRecord muss noch ein SKIP sein (nämlich wenn keine Kontodaten vorhanden sind).

Oder wird EnterCell in den Sections aufgerufen und Vendor hat PrintOnlyIfDetail = True? Dann raus aus den Sections damit nach OnAfterGetRecord!

Edit: och Mist!!
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Problem mit Report

Beitragvon Timo Lässer » 27. August 2009 12:09

<OffTopic>
Natalie hat geschrieben:Oder wird EnterCell in den Sections aufgerufen und Vendor hat PrintOnlyIfDetail = True? Dann raus aus den Sections damit nach OnAfterGetRecord!

Edit: och Mist!!

Yeah! Ich war mal schneller als Natalie :lol:
</OffTopic>
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Re: Problem mit Report

Beitragvon D_Gross » 27. August 2009 14:00

Hallo,

ok, also das erste Problem wäre jetzt gelöst, einige Ausgaben standen in der falschen Tabelle.
Jetzt gibt er uns alle Daten aus jeder Tabelle aus und hier ist dann auch schon das nächste Problem...

Der schreibt jetzt alle Bankdaten, also jede Bank einfach untereinander, vom Prinzip her schon ganz richtig,
nur wenn jetzt für einen Kreditor keine Bank hinterlegt ist dann lässt er diese Zeile nicht leer sondern füllt Sie gleich mit der nächsten Bank des nächsten Kreditor...

So sollte es zum Beispiel aussehen:

Kreditor: Bank:
00001 Sparkasse
00002
00003 Raiffeisen
00004 Hypo
.....

Und so macht er es momentan:

Kreditor: Bank:
00001 Sparkasse
00002 Raiffeisen
00003 Hypo
00004
....
D_Gross
 
Beiträge: 68
Registriert: 3. April 2008 09:07

Re: Problem mit Report

Beitragvon Natalie » 27. August 2009 14:39

EnterCell wird mit RowNo aufgerufen (Zeilennummer).
Diese RowNo wird irgendwo zu oft hochgezählt.

RowNo += 1 oder RowNo := RowNo + 1 sollte nur direkt vor den EnterCell-Blocks aufgerufen werden.
Wahrscheinlich sieht es so bei dir aus:

Vendor OnAfterGetRecord
Code: Alles auswählen
RowNo +=1;
EnterCell(RowNo, ...);
EnterCell(..)
...
RowNo += 1;

Vendor Bank Account OnAfterGetRecord
Code: Alles auswählen
EnterCell(...);
EnterCell(...)


So aber sollte es aussehen:

Vendor OnAfterGetRecord
Code: Alles auswählen
RowNo +=1;
EnterCell(RowNo, ...);
EnterCell(..)

Vendor Bank Account OnAfterGetRecord
Code: Alles auswählen
RowNo += 1;
EnterCell(...);
EnterCell(...)
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Problem mit Report

Beitragvon D_Gross » 27. August 2009 15:06

Also unser Code sieht momentan so aus:

Code: Alles auswählen
Vendor - OnPreDataItem()
Window.OPEN(
  Text00002 +
  '@1@@@@@@@@@@@@@@@@@@@@@@@@@\');
Window.UPDATE(1,0);


CREATE(Excel);
Excel.Visible(FALSE);
Book := Excel.Workbooks.Add(-4167);
Sheet := Excel.ActiveSheet;
Sheet.Name := FORMAT(Text00001);


Sheet.Range('A:A').ColumnWidth := 15;
Sheet.Range('B:B').ColumnWidth := 30;
Sheet.Range('C:C').ColumnWidth := 30;
Sheet.Range('D:D').ColumnWidth := 15;
Sheet.Range('E:E').ColumnWidth := 20;
Sheet.Range('F:F').ColumnWidth := 20;
Sheet.Range('G:G').ColumnWidth := 20;
Sheet.Range('H:H').ColumnWidth := 15;
Sheet.Range('I:I').ColumnWidth := 30;
Sheet.Range('J:J').ColumnWidth := 20;
Sheet.Range('K:K').ColumnWidth := 20;


Sheet.Range('A1').Font.Bold := TRUE;
Sheet.Range('A3').Font.Bold := TRUE;
Sheet.Range('B3').Font.Bold := TRUE;
Sheet.Range('C3').Font.Bold := TRUE;
Sheet.Range('D3').Font.Bold := TRUE;
Sheet.Range('E3').Font.Bold := TRUE;
Sheet.Range('F3').Font.Bold := TRUE;
Sheet.Range('G3').Font.Bold := TRUE;
Sheet.Range('H3').Font.Bold := TRUE;
Sheet.Range('I3').Font.Bold := TRUE;
Sheet.Range('J3').Font.Bold := TRUE;
Sheet.Range('K3').Font.Bold := TRUE;


Sheet.Range('A1').Value := 'Kreditorliste';
Sheet.Range('A3').Value := 'Kreditornr.';
Sheet.Range('B3').Value := 'Name';
Sheet.Range('C3').Value := 'Adresse';                                     
Sheet.Range('D3').Value := 'PLZ';
Sheet.Range('E3').Value := 'Ort';
Sheet.Range('F3').Value := 'Telefonnr.';
Sheet.Range('G3').Value := 'Zlg.-Bedingungscode';
Sheet.Range('H3').Value := 'Steuernummer';
Sheet.Range('I3').Value := 'Name der Bank';
Sheet.Range('J3').Value := 'Bankkontonummer';
Sheet.Range('K3').Value := 'Bankleitzahl';

i:= 3;   

Vendor - OnAfterGetRecord()
j := FORMAT(i);
j := INCSTR(j);


Sheet.Range('A'+j).Value := Vendor."No.";
Sheet.Range('B'+j).Value := Vendor.Name;
Sheet.Range('C'+j).Value := Vendor.Address;
Sheet.Range('D'+j).Value := Vendor."Post Code";
Sheet.Range('E'+j).Value := Vendor.City;
Sheet.Range('F'+j).Value := Vendor."Phone No.";
Sheet.Range('G'+j).Value := Vendor."Payment Terms Code";
Sheet.Range('H'+j).Value := Vendor."Registration No.";

i := i +1;

Vendor - OnPostDataItem()
Excel.Visible(TRUE);


Code: Alles auswählen
Vendor Bank Account - OnAfterGetRecord()
f := FORMAT(e);
f := INCSTR(f);


Sheet.Range('I'+f).Value := "Vendor Bank Account".Name;
Sheet.Range('J'+f).Value := "Vendor Bank Account"."Bank Account No.";
Sheet.Range('K'+f).Value := "Vendor Bank Account"."Bank Branch No.";

e := e + 1;
D_Gross
 
Beiträge: 68
Registriert: 3. April 2008 09:07

Re: Problem mit Report

Beitragvon Natalie » 27. August 2009 15:20

Interessant, den Aufbau ("Sheet.")kannte ich noch nicht.
i, j und e,f stehen für die Zeilennummern. Ziemlich umständliche Programmierung, finde ich. Ein Pärchen hätte es auch getan bzw. sogar eine einzige Variable hätte ausgereicht.

Mir fehlt aber eine entscheidende Information: Wo wird e (in Vendor Bank Account) initialisiert?
Außerdem: Scheinbar wird i nicht nur in Vendor hochgezählt. Steht in den Sections noch etwas drin?
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Problem mit Report

Beitragvon mikka » 27. August 2009 15:21

Natalie hat geschrieben:EnterCell wird mit RowNo aufgerufen (Zeilennummer).
Diese RowNo wird irgendwo zu oft hochgezählt.


@ Natalie
Zu oft? Ich hatte jetzt eigentlich gedacht zu selten.
Und zwar immer wo die Leerzeile fehlt, dem Code mĂĽsste "beigebracht" werden, "immer wenn kein Bankkonto da ist, eine Leerzeile einfĂĽgen"
** Edit by Mikka** Jetz schnall ich es, klar zu oft :-)


@D_Gross
Warum wird auf Vendor - OnPostDataItem() e und i hochgezählt (ich würde das Zeilenhochzählen immer auf Vendor machen)?


Code: Alles auswählen
i:= 2;                 // Hier einen weniger !   

Vendor - OnAfterGetRecord()
i := i +1;           // Hier hochzählen
j := FORMAT(i);
j := INCSTR(j);


Sheet.Range('A'+j).Value := Vendor."No.";
Sheet.Range('B'+j).Value := Vendor.Name;
Sheet.Range('C'+j).Value := Vendor.Address;
Sheet.Range('D'+j).Value := Vendor."Post Code";
Sheet.Range('E'+j).Value := Vendor.City;
Sheet.Range('F'+j).Value := Vendor."Phone No.";
Sheet.Range('G'+j).Value := Vendor."Payment Terms Code";
Sheet.Range('H'+j).Value := Vendor."Registration No.";

// i := i +1;                 // Und wech ;-)


Code: Alles auswählen
Vendor Bank Account - OnAfterGetRecord()
// f := FORMAT(e);       // Weg damit :-)
// f := INCSTR(f);         // Weg damit :-)


Sheet.Range('I'+f).Value := "Vendor Bank Account".Name;
Sheet.Range('J'+f).Value := "Vendor Bank Account"."Bank Account No.";
Sheet.Range('K'+f).Value := "Vendor Bank Account"."Bank Branch No.";

// e := e + 1;       // Weg damit :-)
GruĂź, Mikka

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Re: Problem mit Report

Beitragvon Natalie » 27. August 2009 15:23

D_Gross hat geschrieben:nur wenn jetzt für einen Kreditor keine Bank hinterlegt ist dann lässt er diese Zeile nicht leer sondern füllt Sie gleich mit der nächsten Bank des nächsten Kreditor...


Sorry, hatte hier falsch gelesen!! Hatte verstanden, dass zu viele Leerzeilen eingefĂĽgt werden. Mikka, dann bleib du mal bitte dran ;-)

Aber schnelle Lösung, wenn jeder Kreditor höchstens ein Konto hat:
Vendor Bank Account - OnAfterGetRecord()
Code: Alles auswählen
f := FORMAT(i-1); // -1 wäre nicht notwendig, wenn das Höchzählen von i immer an Anfang der Trigger statt finden würde ...
Sheet.Range('I'+f).Value := "Vendor Bank Account".Name;
Sheet.Range('J'+f).Value := "Vendor Bank Account"."Bank Account No.";
Sheet.Range('K'+f).Value := "Vendor Bank Account"."Bank Branch No.";


Alle anderen Zeilen weg.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Problem mit Report

Beitragvon mikka » 27. August 2009 15:27

Natalie hat geschrieben:
D_Gross hat geschrieben:nur wenn jetzt für einen Kreditor keine Bank hinterlegt ist dann lässt er diese Zeile nicht leer sondern füllt Sie gleich mit der nächsten Bank des nächsten Kreditor...


Sorry, hatte hier falsch gelesen!! Hatte verstanden, dass zu viele Leerzeilen eingefĂĽgt werden. Mikka, dann bleib du mal bitte dran ;-)


Hoffentlich habe ich nicht auch den Ăśberblick verloren ;-)
Aber ich bin guter Hoffnung, das meine Empfehlung klappt (Hoffentlich)
GruĂź, Mikka

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
mikka
Microsoft Partner
Microsoft Partner
 
Beiträge: 1832
Registriert: 26. September 2005 11:54
Wohnort: Bremen
Realer Name: Michael
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.6, 3.7, 4, 5, 2009/13/15

Re: Problem mit Report

Beitragvon D_Gross » 27. August 2009 15:45

Ok, jetzt klappts....

Ich denke zwar das ich das vorher schon einmal so ausprobiert habe und da hats nicht geklappt, aber naja... :-D
Irgendeine Kleinigkeit hab ich da wohl vergessen... :-D

Also vielen Dank!!!!

GruĂź,
D_Gross
D_Gross
 
Beiträge: 68
Registriert: 3. April 2008 09:07


ZurĂĽck zu NAV 3.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast