Seite 1 von 2

[Gelöst]DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 08:21
von Cr4cks
Tachchen Leute...

Ich hab folgendes Problem: Ich muss ein Report erstellen, nein das ist noch nicht groß genug das problem... ;-)

Die Seitenansicht gibt mir 2 Seiten lang den selben Datensatz aus obwohl ich ihn nur einmal haben möchte :-D daher meine Frage: gibt es eine Funktion die wie "DISTINCT" im Sql funktioniert?! denn ich möchte dem Kunden nicht zumuten immer ein extra Filter setzen zu lassen...

Wenn ihr noch mehr infos braucht... sagts nur...

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 08:31
von McClane
Erstmal: Distinct gibt's so nicht.

Und: "NUR" :wink:

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 08:32
von MatthiasKönig
wenn du "normale" NAV Reports willst, nein das geht nicht ueber eine property oder so :)

du musst dafuer (wenn das umbedingt sein muss) quasi eine extra Temporäre Tabelle anlegen und die vor dem Report befüllen und nach dem Report wieder leeren.

(so kenn ichs jedenfalls :D)

EDIT:
McClane..... du warst schneller xD

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 08:42
von McClane
MatthiasKönig hat geschrieben:McClane..... du warst schneller xD

Aber dafür hast du mir meine Lösung geklaut :evil: :-)

Leerst du wirklich temporäre Tabellen zum Ende eines Reports?

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 08:54
von Cr4cks
*fg* @McClane: Was genau für infos brauchst du noch? =)
Was mir grad prompt einfällt was evtl wichtig ist: ich geh über 3 Tabellen die einander untergeordnet sind ich versuch das mal zu erläutern:
Code:
Gebuchten Lieferungen -> gebuchte Lieferzeile -> Weight Data(kundenspez. Tabelle)
Belegnr                        -> Belegnr
                            |
                            --> Bestellnr         -> zugeordnete Bestellung/Auftrag


auf jeden Fall fängt in der 2 Tabelle schon das problem an. Denn in der Tabelle "gebuchte Lieferzeile" stehen 19 Datensätze für eine Belegnr -.- ich brauch aber nur einen davon...(gut ich könnte den Kunden sagen, sie müssen jedes mal zeilennr-filter = 10000 setzen, ist aber nicht Sinn der Sache...)

so nun hab ich 19 datensätze und zu jedem einzellnen sucht der dann in der 3. Tabelle die Wiegungsdaten raus... da ich 3 datensätze im Lieferkopf habe, schmeisst der mir 57 zeilen raus -.-

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 09:06
von McClane
Cr4cks hat geschrieben:@McClane: Was genau für infos brauchst du noch? =)

Kontonummer, PIN und so :wink:

Cr4cks hat geschrieben:so nun hab ich 19 datensätze und zu jedem einzellnen sucht der dann in der 3. Tabelle die Wiegungsdaten raus... da ich 3 datensätze im Lieferkopf habe, schmeisst der mir 57 zeilen raus

Fehlt da zufällig ein passender DataItemLink oder eine geeigntetes DataItemTableView?

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 09:16
von Cr4cks
McClane hat geschrieben:Kontonummer, PIN und so :wink:


Gibts nicht viel drauf zu holen ^^ bin nur lehrling...


McClane hat geschrieben:Fehlt da zufällig ein passender DataItemLink oder eine geeigntetes DataItemTableView?


wenn ich diese vergessen hätte, würde er doch garnichts finden?! hab nochmal nachgeschaut... ich hab die DataItemLink-variante mit DataItemLinkReference... hab auch nochmal kontrolliert ob die verknüpfungen passen... stimmen auch...

vllt nen kleiner überblick über die sections?!

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 09:28
von McClane
Cr4cks hat geschrieben:Gibts nicht viel drauf zu holen ^^ bin nur lehrling...

Das macht nichts, ich bin nicht gierig.

Cr4cks hat geschrieben:wenn ich diese vergessen hätte, würde er doch garnichts finden?!

Doch, dann findet er sogar alles. :wink:
Du gehst also über die EK-Lieferköpfe, suchst dir dann passenderweise die zugehörigen Zeilen mit Art=Artikel und evtl. Menge>0. Und wie ist dann der Zusammenhang zu der dritten Tabelle? Über die Nummer der EK-Lieferung und die Zeilennummer?¿

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 09:37
von Cr4cks
McClane hat geschrieben:Das macht nichts, ich bin nicht gierig.


Ja ne, is klar. Wer isses ne ^^

McClane hat geschrieben:Du gehst also über die EK-Lieferköpfe, suchst dir dann passenderweise die zugehörigen Zeilen mit Art=Artikel und evtl. Menge>0. Und wie ist dann der Zusammenhang zu der dritten Tabelle? Über die Nummer der EK-Lieferung und die Zeilennummer?¿


DataItem-Übersicht
Code:
Purch. Rcpt Header
  Purch. Rcpt. Line
    Weight Data


DataItem-Properties
Im DataItem Purch. Rcpt. Line habe ich als Properties:
Code:
DataItemTable | Purch. Rcpt. Line
DataItemTableView |
DataItemLinkReference | <Purch. Rcpt. Header>
DataItemLink | Document No.=FIELD(No.)


Im DataItem Weight Data habe ich als Properties:
Code:
DataItemTable | Weight Data
DataItemTableView | <Undefined>
DataItemLinkReference | <Purch. Rcpt. Line>
DataItemLink | Assigned Document No.=FIELD(Order No.)

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 09:56
von McClane
Und wieso wunderst du dich nun, dass du alle Zeilen der Weight Data bekommst, die zu der ursprünglichen Bestellung gehören? :wink:

Was soll das eigentlich genau leisten? Willst du wissen, wieviele Kilos zu einer gebuchten Lieferung gehören?¿

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:07
von Cr4cks
McClane hat geschrieben:Und wieso wunderst du dich nun, dass du alle Zeilen der Weight Data bekommst, die zu der ursprünglichen Bestellung gehören? :wink:

Was soll das eigentlich genau leisten? Willst du wissen, wieviele Kilos zu einer gebuchten Lieferung gehören?¿



Ich möchte aus der Weight Data nur eine einzige Zeile haben und nicht 57 ;-)

ich male das mal schnell wie ich es haben will:

Code:
1 Datensatz -> 1 Datensatz -> 1 Datensatz
Gebuchten Lieferungen -> gebuchte Lieferzeile -> Weight Data


ich bekomm aber raus:
Code:
                            - 1 Datensatz
                            - 1 Datensatz
1 Datensatz -> 19 Datensätze - 1 Datensatz
                            - 1 Datensatz
                            - 1 Datensatz
                            - 1 Datensatz
                            usw.



Die Filterung in der 2. Tabelle würde ich gern "DISTINCT"-Artig haben... dann hätte ich mein Ergebnis wie ich es gern wöllte =)

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:13
von MatthiasKönig
McClane hat geschrieben:
MatthiasKönig hat geschrieben:McClane..... du warst schneller xD

Aber dafür hast du mir meine Lösung geklaut :evil: :-)

Leerst du wirklich temporäre Tabellen zum Ende eines Reports?

naja, hier war "Temporär" nicht die property gemeint :D wenn das Möglich ist, nimmt man natuerlich eine WIRKLICH Property Temporäre (aber ihr bearbeitet das ja gerade schon ganz gut!)

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:19
von McClane
Ich möcht ja nicht lügen, aber DISTINCT verhindert doch nur Redundanzen auf einem bestimmten Feld, oder habe ich das falsch in Erinnerung? Demzufolge müsstest du meinen, dass du irgendeine Lieferzeile haben möchtest (?), und von dieser einen Lieferzeile mit der Verknüpfung über die "Order No." (also die Bestellnummer) genau eine Zeile der Weight-Tabelle?

Btw: was kauft ihr da eigentlich ein? Schimmel, Abfall, Missformen ... klingt ja lecker :-)

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:21
von McClane
MatthiasKönig hat geschrieben:naja, hier war "Temporär" nicht die property gemeint :D wenn das Möglich ist, nimmt man natuerlich eine WIRKLICH Property Temporäre (aber ihr bearbeitet das ja gerade schon ganz gut!)

Hä? :shock: Was ist denn eine unwirklich temporäre und was eine wirklich temporäre Tabelle? Ich suche grad das Property "real temporary", kann es aber nicht finden :mrgreen:

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:30
von Cr4cks
McClane hat geschrieben:Demzufolge müsstest du meinen, dass du irgendeine Lieferzeile haben möchtest (?), und von dieser einen Lieferzeile mit der Verknüpfung über die "Order No." (also die Bestellnummer) genau eine Zeile der Weight-Tabelle?


Genau so will ich es haben ^^ Nur wie bekomm ich das hin?!


McClane hat geschrieben:Btw: was kauft ihr da eigentlich ein? Schimmel, Abfall, Missformen ... klingt ja lecker :-)


nicht wir, sondern der Kunde für den ich es machen soll =)

McClane hat geschrieben:aber DISTINCT verhindert doch nur Redundanzen auf einem bestimmten Feld


Richtig und da ich mich nur auf einem Feld bewegen... :wink:

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:39
von MatthiasKönig
McClane hat geschrieben:
MatthiasKönig hat geschrieben:naja, hier war "Temporär" nicht die property gemeint :D wenn das Möglich ist, nimmt man natuerlich eine WIRKLICH Property Temporäre (aber ihr bearbeitet das ja gerade schon ganz gut!)

Hä? :shock: Was ist denn eine unwirklich temporäre und was eine wirklich temporäre Tabelle? Ich suche grad das Property "real temporary", kann es aber nicht finden :mrgreen:

:P....einfach nur :P :D

nene, ne "nicht-wirkliche-Temporäre-Tabelle" (NRT-Table xD) ist eine Tabelle die man wirklich befüllt und wirklich wieder leert :P
aber naja

BTT

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:39
von McClane
Du wirst auf Kunden losgelassen? *g*

Setz doch mal im OnAfterGetRecord der gebuchten Lieferzeile ein boolfeld, und wenn das gesetzt ist, machst du halt ein Skip. Trotzdem wird das nicht verhindern, das du alle Zeilen der Gewichtstabelle bekommst, in denen die "Order No." steht :wink:

Alternativ kannst du dir deine Daten auch über Variablen zusammen suchen. Wäre wohl auch gescheiter.

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:43
von McClane
MatthiasKönig hat geschrieben::P....einfach nur :P :D

nene, ne "nicht-wirkliche-Temporäre-Tabelle" (NRT-Table xD) ist eine Tabelle die man wirklich befüllt und wirklich wieder leert :P
aber naja

BTT

Man wird doch mal fragen dürfen :-)

In welchen Fällen benutzt du denn so eine Art der Bearbeitung (also tatsächlich in die DB schreiben)?

Und ich geh nun zu meinem Chef, die NRT-Tabellen nachlizensieren :-D

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:49
von Cr4cks
McClane hat geschrieben:Du wirst auf Kunden losgelassen? *g*


:p traust mir wohl nich zu oder was ^^

McClane hat geschrieben:Alternativ kannst du dir deine Daten auch über Variablen zusammen suchen. Wäre wohl auch gescheiter.


Ich werde mir wohl das mit den Temporären Tabellen zu müte führen... das ist denk ich mal einfacher... da es mit der Zeit doch ganz schön viel werden könnte...

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 10:58
von fiddi
Ich möchte mal McClane widersprechen:

Also so was wie DISTINCT gibt es schon in NAV, wenn ein paar Vorraussetzungen eingehalten werden (können).
1. Man kann den Report nach dem DISTINCT-Kriterien sortieren.
2. Man benutzt keinen Body sondern einen Group Footer.


Gruß, Fiddi

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 11:01
von Cr4cks
fiddi hat geschrieben:Ich möchte mal McClane widersprechen:

Also so was wie DISTINCT gibt es schon in NAV, wenn ein paar Vorraussetzungen eingehalten werden (können).
1. Man kann den Report nach dem DISTINCT-Kriterien sortieren.
2. Man benutzt keinen Body sondern einen Group Footer.


Gruß, Fiddi



zu 1. Wie?
zu 2. Wie meinst du das?!

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 11:03
von McClane
Cr4cks hat geschrieben::p traust mir wohl nich zu oder was ^^

Dochdoch :)

Was genau das leisten soll, hast du aber immer noch nicht verraten :-?

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 11:05
von McClane
fiddi hat geschrieben:Ich möchte mal McClane widersprechen:

Also so was wie DISTINCT gibt es schon in NAV, wenn ein paar Vorraussetzungen eingehalten werden (können).
1. Man kann den Report nach dem DISTINCT-Kriterien sortieren.
2. Man benutzt keinen Body sondern einen Group Footer.

Genau genommen widersprichst du mir und Matthias :wink:

Da wo wir jetzt sind, weiß ich das auch, aber das war ja die erste Antwort ...

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 11:22
von fiddi
@McClane,

McClane hat geschrieben:Genau genommen widersprichst du mir und Matthias :wink:

Da wo wir jetzt sind, weiß ich das auch, aber das war ja die erste Antwort ...

Ich hatte nur die ersten beiden Beiträge gelesen als ich geantwortet habe :mrgreen:


EDIT:
@Cr4ks,

also ein Report besteht aus unterschiedlichen Section-Typen (siehe neue Section in Report einfügen). Ein Typ davon ist der Group-Footer. Dieser Footer wird benutzt, wenn mann z.B. Datensätze der "Sales Line" gruppieren möchte, z.B. nach "Dokument type","Document No." und man pro Beleg z.B. die Belegsummen ausdrucken möchte.

vereinfachtes Beispiel:
Wenn man jetzt einen neuen Report über die Belegsummen der "Sales Line" benötigt, erstellt man einen Bericht mit "Sales Line" als DataItem. in den Properties gibt es "Group total Fields" hier trägst du "Dokument type","Document No." ein. Der Bericht enthält zwei Sections: Body und "Group Footer". Was in den Sections ausgegeben wird, sei mal dahingestellt, das kannst du dir aussuchen. Wenn du diesen Report ausdruckst, wirst du deine Einzelzeilen und eine Summenzeile pro Beleg sehen. Die Lösung für dein Problem ist jetzt schlichtweg den Body wegzulassen. Voraussetzung ist allerdings, das die Tabelle auf der der Report läuft nach deinem Gruppierungsmerkmal sortiert werden kann.


Gruß, Fiddi

Re: DISTINCT bei Reports?

Verfasst: 16. Oktober 2009 11:27
von McClane
fiddi hat geschrieben:Ich hatte nur die ersten beiden Beiträge gelesen als ich geantwortet habe

Von oben oder unten? :-)