[Gelöst] Kennzeichen in Debitor- u. Kreditorkarte Top1000

11. August 2008 09:38

Hallo,

ich stehe mal wieder vor einem Rätsel.

Ich möchte in den Debitor- und Kreditorkarten ein Kennzeichen (einen Text oder eine Checkbox o.ä.) integrieren, aus welchem ersichtlich wird, das sich dieser in einer Liste unter den Top 1000 befindet.

Ich hatte geplant eine form mit der SourceTable "Customer" zu bauen und diese anhand der gebuchten Gutschriftsbeträge zu sortieren. Jeder der dort unter den ersten 1000 steht soll dieses Kennzeichen in der Karte angezeigt bekommen.

Ich weiß nun allerdings nicht genau, ob das mit so einer Form funktionieren kann oder ob man eine neue Tabelle basteln müsste oder ähnliches...

Hat jemand eine Idee?
Zuletzt geändert von 3TageWach am 15. August 2008 12:07, insgesamt 1-mal geändert.

Re: Kennzeichen in Debitor- u. Kreditorkarte Top1000

11. August 2008 10:01

Aus Performancegründen würde ich folgendes probieren:

Schreibe eine Funktion auf der Tabelle Customer, die in einem temp. Record die Top 1000-Customer ausgibt, ich nenne ihn jetzt TempCust.
Schreibe noch eine Funktion, z.B. "IstTop1000" mit einem Boolean-Rückgabewert.
Inhalt:
Code:
EXIT(TempCust.GET("No."));


Lasse diese Funktion im OnOpenForm-Trigger der Debitorenkarte und der Debitorenliste ausführen, sodass die Berechnung nur einmal pro Formaufruf statt findet.
Füge auf den Forms ein neues Feld ein. SourceExpr = Deine neue Funktion "IstTop1000".

Leider habe ich keine Erfahrung mit einem 1000-Datensatz-starken temp. Record. Eventuell ist dies noch nicht das Gelbe vom Ei. Diese würde dir allerdings auch die aktuellsten Daten liefern (wenn ein Benutzer die Form nicht gerade tagelang geöffnet hält).

Wenn es nicht 100%ig aktuell sein muss, dann würd ich die Debitorentabelle um ein Feld erweitern und es jeden Tag morgens durch einen automatischen Stapellauf setzen. Hat den Vorteil, dass auf dieses Feld gefiltert und gesucht werden kann. Und gibt im laufenden Betrieb keine Performance-Einbußen.

Re: Kennzeichen in Debitor- u. Kreditorkarte Top1000

11. August 2008 11:41

Mein Vorschlag wäre Natalie's Alternative:
Lege in der Tabelle Customer ein neues Feld (Boolean oder Integer) an, welches du auf der Debitorenkarte anzeigst.
Anschließend passt du noch den Report "Customer - Top 10 List" an, welcher vor dem Lauf das neue Feld bei allen Debitoren zurücksetzt.
Während des Laufs wird dann bei dem jeweiligen Debitoren entweder ein Häkchen gesetzt oder (noch eleganter) die tatsächliche Positionierung (Integer) eingetragen.
Diesen Report lässt du dann nach Belieben (z. B. 1x täglich) laufen und kannst dann (bei der Integer-Variante) auch noch gezielt filtern (z. B. die Plätze 10-19).

Re: Kennzeichen in Debitor- u. Kreditorkarte Top1000

11. August 2008 16:04

ah ok danke, das bringt mich schon etwas vorran.

Nur wie sage ich dem Report per code das er die 1000 Debitoren mit den höchsten Werten berücksichtigen soll? Ich könnte halt hart codieren und sagen alle die > 500 haben o.ä. aber das wäre etwas zu unflexibel. Ich kann ja auch nicht nach dem Wert sortieren und dann nur die ersten 1000 Datensätze durchlaufen lassen, da ich den Wert nicht als primärschlüssel setzen kann oder?

sry für die simplen fragen :/

// Vielleicht kann ich die sortierung doch mit SETVIEW realisieren und den durchlauf nach 1000 Datensätzen abbrechen.

Re: Kennzeichen in Debitor- u. Kreditorkarte Top1000

11. August 2008 23:05

3TageWach hat geschrieben:Nur wie sage ich dem Report per code das er die 1000 Debitoren mit den höchsten Werten berücksichtigen soll?

Der Report "Customer - Top 10 List" hat diesen Fall bereits berücksichtigt.
Er heißt zwar "Top 10", kann aber (über ein Eingabefeld auf der RequestForm) auch eine Top 5 oder Top 1000 oder Top 723 darstellen.
Schau dir den Aufbau des Reports einfach mal an, dann verstehst du, was ich meine.

Re: Kennzeichen in Debitor- u. Kreditorkarte Top1000

15. August 2008 12:06

Hat im grunde nun mit der Customer Top 10 List funktioniert. Ist zwar noch etwas komplizierter die Liste entsprechend so zu bauen, damit die Kennzeichen aufgrund eines anderen Wertes gesetzt werden, aber das ist so schonma eine gute vorlage. Dann betrachte ich das hier schon mal als gelöst :)