Domino 9 und frühere Versionen > ND9: Entwicklung
Sortieren großer Datenmengen
flaite:
Programmierbeiträge von planetlotus.com Blog-Beiträge liest sich inzwischen sowieso wie das Java Magazin.
What are you fighting for? Say it in broken Java. (https://www.youtube.com/watch?v=juEqplbnh3Q) ;D
Hier bekommst Du bei Problemen sicher geholfen. Versprochen.
Der Junior bei mir im Büro macht das so: Jammert rum, "es gäbe nix zu tun", programmiert seine Aufgabe 5 mal so schnell wie abgesprochen und ich mach die Skizze dann lauffähig, wenn der schon lange in den Feierabend entschwunden ist. ;D
Vor 10 Jahren habe ich mich darüber aufgeregt, wenn ich hier eigentlich recht simple Programmieraufgaben für andere Leute erledigt habe. Heute wäre mir das egal. Ich könnte auf meinem sehr traurigen Github Account ein Projekt atnotes anlegen und wer braucht könnte
a) sich bei den zahlreichen youtube videos informieren, wie er mit git selbst arbeitet (nicht so schwierig)
oder b) den code einfach als zip runterladen.
Für wie man das in Domino einbindet, kann ich allenfalls beratende Hilfestellung aus älteren und möglicherweise im Detail nicht ganz korrekten Erinnerungen leisten, weil ich seit 5 Jahren kein Notes Designer mehr nutze und den mir auch nicht besorgen würde. Dafür gäbs hier aber sowieso kompetentere Foristen. Ich könnte aber Klassen bereitstellen, die wo die Aufgabe an sich erledigen und die man einfach in einen Notes Agent einbinden kann, gemeinsam mit gängigen und im millionen-fachen Praxis-Einsatz erprobten Third Party open source Hilfs-jars, die ich ganz sicher nutzen würde.
Für die Aufgabe rechne ich mit allen mit ca. 150 Code Zeilen mit Notes Einbindung, Bean, Geschäftslogik, Reporting, Junit-Tests, maven-pom und Log-Ausgaben, die man da überhaupt schreiben müsste.
Peter Klett:
Du hast die Liste ja schon erwähnt, aber nicht geschrieben, wie Du damit umgehen willst. Ich würde eine Liste über die Anzahl der Aufträge je Kunde etwa so erstellen:
--- Code: ---Dim auftragcol = auftragsdb.Search (|Selektionsformel für die relevanten Aufträge|, Nothing, 0)
Dim auftragdoc As NotesDocument
Dim auftraege List As Long
Dim index As String
Set auftragdoc = auftragcol.GetFirstDocument
Do While Not auftragdoc Is Nothing
index = auftragdoc.FeldMitUIDDesKundenstammdokuments (0) 'evtl. weitere Felder aufnehmen, falls das nicht ausreicht (z.B. Ort)
If Iselement (auftraege (index)) Then
auftraege (index) = auftraege (index) + 1
Else
auftraege (index) = 1
End If
Set auftragdoc = auftragcol.GetNextDocument
Loop
--- Ende Code ---
Als Ergebnis hast Du dann eine Liste der Kunden mit der Anzahl ihrer Aufträge, die Du dann weiterverarbeiten kannst
--- Code: ---Forall auftrag In auftraege
Print Listtag (auftrag) & " = " & auftrag
End Forall
--- Ende Code ---
Diese Daten könntest Du, wie schon vorher erwähnt, in Excel/csv schreiben und dort sortieren. Über die UID des Kundenstammblatts kannst Du ja noch Daten aus diesem hinzufügen. Falls Du die Liste per Script sortieren willst, geht es z.B. so, dauert aber etwas
--- Code: ---Dim auftraegesort List As Long
Dim vgl As Long
Dim vglindex As String
Do
vgl = 0
Forall auftrag In auftraege
If auftrag > vgl Then
vgl = auftrag
vglindex = Listtag (auftrag)
End If
End Forall
If vgl = 0 Then
Exit Do
Else
auftraegesort (vglindex) = index
Erase auftraege (vglindex)
End If
Loop
--- Ende Code ---
In auftraegesort hast Du dann die Liste der Kunden, sortiert absteigend nach Anzahl der Aufträge.
ugusko:
Über die Ansichten zu sortieren ist doch nicht das Problem.
Wir haben Datenbanken mit mehr als 900.000 Dokumenten, die natürlich nicht Performance-Wunder sind, aber darum geht es hier ja auch nicht.
Das soll, so wie ich das sehe, eine einmalige Aktion zur Unterstützung sein. Wenn nur die ID, der Name und der Ort wichtig sind ( evtl. ja noch die Summe/Auftrag) dann sind das doch nicht viele Daten pro Dokument, die zu sortieren sind.
FrankLU:
Ich danke Euch für die Vorschläge und Ideen!
Da ich mich bisher nicht mit Java beschäftigen konnte, mache ich mir nochmal Gedanken über die Verwendung von "List" (Danke an Peter Klett) oder probiere es eben doch über eine Ansicht.
Danke nochmals!
Frank
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln