Interaction Log Entry

23. Juni 2005 09:29

Hallo zusammen,

Ich mache gerade einen bericht, indem die Interaction Log Entry ausgegeben werden sollen.
Mein Problem:

Es sollen alle Aktivitäten die mehr als 1x vorkommen in einer Zeile stehen, und die entsprechende Anzahl mitübergeben werden.

Bsp:

INV - KUNDE
BVA - ANFRAGE
INV - KUNDE

-------------------------

soll so aussehen

INV - KUNDE 2
BVA - ANFRAGE 1

mfg
dante

23. Juni 2005 09:48

Eine Möglichkeit wäre:
  1. Tabelle nach dem entsprechenden Feld sortieren
  2. Nach dem entsprechenden Feld gruppieren
  3. OnAfterGetRecord die Anzahl Vorkommen mitzählen
  4. Andruck der Daten nur in dem GroupFooter
Ich hoffe, das bringt dich auf die richtige Fährte.

:)

23. Juni 2005 10:33

Hallo

Ich habe mir 2 Dataitems gemacht

interaction log entry
integer

Ich will zuerst die werte der ia log enty auslesen und im Integer ausgeben

viell. kannst du mir auf die sprünge helfen.
Wie kann ich die werte der tabelle interaction log entry in arrays abspeichern?


mfg
blackct

Re: :)

23. Juni 2005 13:43

Dante hat geschrieben:[...]
Wie kann ich die werte der tabelle interaction log entry in arrays abspeichern?
[...]

Ich würde kein Array empfehlen, da es nicht bekannt ist, wieviele Elemente das Array haben müsste.
Eine temporäre Tabelle wäre da viel nützlicher:
Feld1 (Code) = Code[10] bzw. [20]
Feld2 (Anzahl) = Decimal

Diese kann dann nämlich unendlich viele Datensätze aufnehmen.

:(

24. Juni 2005 09:16

Ich bekomms einfach nicht auf die Reihe....

das mit der Arraylösung passt schon, die grösse ist eigenlich egal. arraygrösse von 1000 reicht mehr als aus!!

kannst du mir viell. auf die Sprünge helfen???
hab mit arrays noch nicht so viel am hut gehabt, wills aber trotzdem unbedingt ausprobieren..... :)

Wie oben schon erwähnt, soll aus der Interaction Log Entry die einträge ausgelesen werden miteinander verglichen, wenn <> neuer eintrag und zähler +1 wenn = dann einfach +1 und wenn schon vorhanden einfach nichts machen.

würdest mir sehr weiterhelfen...
Danke

mfg blackct

24. Juni 2005 11:33

In einem Array kannst du nicht nach bereits vorhandenen Werten suchen, es sei denn, du durchsuchst alle Array-Elemente sequentiell :-(
Daher empfehle ich die Variante mit der temporären Tabelle, dort kannst du dann mittels GET prüfen, ob der Wert schon existiert.
Code:
IF TempTable.GET(MyValue) THEN
  TempTable.Counter += 1
ELSE BEGIN
  TempTable.Code := MyValue;
  TempTable.Counter := 1;
  TempTable.INSERT;
END;


Um deine Frage zu beantworten:
Array-Elemente füllst du mit folgender Syntax:
Code:
MyArray[1] := MyValue;
MyArray[2] := MyValue2;
[...]
oder in einer Schleife:
Code:
FOR Index := 1 to MyTable.COUNT DO
  MyArray[Index] := MyTable.MyField;

....

24. Juni 2005 12:24

Danke, ich werds mir noch überlegen. (Das mit der TEMP Table)
Schönes WE.

mfg
dante

24. Juni 2005 15:32

Bei uns im System ist es so, dass in der Tabelle Aktivitätenvorlagen (ID: 5064) in einem Flowfield die Anzahl der jeweiligen Aktivitäten ausgegeben wird, wenn du mit deinem Report auf diese Tabelle gehst (CALCFIELD) nicht vergessen, kannst du dir das Zählen sparen. Wenns kein Flowfield in deiner Tabelle hat, einfach anlegen, wenn du kannst :-)

Fieldclass:
FlowField

CalcFormula:
Count("Interaction Log Entry" WHERE (Interaction Template Code=FIELD(Code),Canceled=CONST(Nein),Date=FIELD(Date Filter)))

Gruß Jan

thx

22. Juli 2005 11:56

Timo Lässer hat geschrieben:Eine Möglichkeit wäre:
  1. Tabelle nach dem entsprechenden Feld sortieren
  2. Nach dem entsprechenden Feld gruppieren
  3. OnAfterGetRecord die Anzahl Vorkommen mitzählen
  4. Andruck der Daten nur in dem GroupFooter
Ich hoffe, das bringt dich auf die richtige Fährte.


hast recht, is am einfachsten um effizientesten...

@JanV
//wär auch eine lösung!! (mit dem flowfield)