Autor Thema: Umsortieren von Ansichten per Script  (Gelesen 1539 mal)

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Umsortieren von Ansichten per Script
« am: 07.12.06 - 16:41:35 »
Hallo!

Ich habe da ein Problem und hoffe, dass mir jemand einen Tipp geben kann.

Ich muss einen täglichen Bericht erstellen, der meinem werten Chef zeigt, wieviele Aufträge an einem Stichtag bzw. "heute" angelegt wurden und wieviele am selben Stichtag bzw. "heute" ausgeliefert wurden. Der Bericht soll als Agent um 23 Uhr ausgeführt werden, aber auch auf manuelle Anforderung.

Das Ganze soll dann noch nach Kundennummer zusammengefasst werden und per E-mail verschickt werden. Mein Problem ist aber nicht die Ausgabe, sondern die Selektion der Dokumente.

Ich habe eine View (mit SELECT(From="Auftrag") ), die die Spalten
  • Kundennumer
  • Eingangsdatum - @Text(@Date(@EingangDat))
  • Lieferdatum - @Text(@Date(@LieferDat))
enthält.

Die Spalten 2 und 3 sind unsortiert, aber als User-Sortiert definiert, d.h. in den Eigenschaften der Spalte im Reiter "Sortierung" ist ein Haken bei "auf Spaltenüberschrift klicken: Aufsteigend".

Wie bekomme ich nun die Dokumente oder Entries ausgelesen, die ich verarbeiten will? Ich will eigentlich nicht mit 2 unterschiedlichen Ansichten arbeiten, die schon Auto-Sortiert sind.

Ich hatte mir gedacht, ich nehme die Ansicht und sortiere Sie nach den Anforderungen um, um dann daraus die erforderlichen Dokumente herauszuholen (also zuerst nach Eingangsdatum sortieren, die gefundenen Docs dann nach Kunden gruppieren, dann nach Lieferdatum sortieren und wieder nach Kunden gruppieren, dann die E-mail zusammenbauen und verschicken).

Leider funktioniert der IsResortAscending-Befehl nicht, zumindet nicht so, wie ich es mir denke; der Debugger motzt zwar nicht, aber die Eigenschaft im Variablen-Fenster zeigt immer IsSorted = False. Der anschließende GetAllEntriesByKey(keys(1)) findet jedenfalls keinen einzigen Satz. Ich habe alle Datümer als "String" verarbeitet, weil ich dachte, so einen eindeutigeren Schlüssel hinzubekommen, also ohne die Uhrzeit.

Hier der Code:
Code
	Dim Session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As Notesdocument
	Dim view As NotesView
	Dim vc As NotesViewColumn
	Dim ec As NotesViewEntryCollection
	Dim entry As NotesViewEntry
	Dim keys(1 To 1) As String
	Dim Datum As Variant
	
	Set db = Session.CurrentDatabase
	
	If Not session.IsOnServer Then
		Dim ws As New NotesUIWorkspace
		
		Datum = ws.Prompt(PROMPT_OKCANCELEDIT, "Auswertungsdatum", "Bitte geben Sie den Auswertungstag ein.")
		
		If Not Isempty (Datum) Then
			keys(1) = Datum
		Else
			keys(1) = Date$
		End If
	Else
		keys(1) = Date$
	End If
	
	Set view = db.GetView("ViewAuftrag")
	Set vc = view.Columns(1)
	vc.IsResortAscending = True
	
	Set ec = view.GetAllEntriesByKey(keys(1), True)
	Set entry = ec.GetFirstEntry()
	Set doc = entry.Document

und so weiter

Wäre super, einen Hinweis auf das Umsortieren von Ansichten zu bekommen. Oder ist es "nur" wieder ein Problem mit den Datumsfeldern?

Danke schon mal im voraus.
Frank
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

botschi

  • Gast
Re: Umsortieren von Ansichten per Script
« Antwort #1 am: 07.12.06 - 16:48:11 »
Warum machst Du nicht eine eigene Ansicht für Deine Anforderungen?
Oder ein DB.Search?

Ich habe allerdings auch nicht verstanden, warum die Ansicht zur Laufzeit umsortiert werden muss. Vielleicht sind meine Hinweise deshalb auch völlig daneben...

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Re: Umsortieren von Ansichten per Script
« Antwort #2 am: 08.12.06 - 13:59:37 »
Hallo botschi,

ich wollte auf zwei Ansichten verzichten, weil eine Ansicht zur Zeit 6 MB groß wäre, die zu den knapp 600 MB hinzukommen, die die anderen Ansichten verbrauchen. Und das die Datenbank / das System läuft erst seit einem Jahr!

Ich will die Ansicht während der Laufzeit umsortieren, weil ich zuerst eine Auswertung nach Eingangsdatum machen muss, und danach eine Auswertung nach Lieferdatum. Und um mit GetAllEntriesByKey zu arbeiten, müssen die Spalten sortiert sein. Die Ansicht selber dient dazu, die gewünschten Dokumentarten vorzuselektieren.

Das mit dem DB.Search kann ich mal probieren. Trotzdem würde mich interessieren, wie man eine Ansicht zur Laufzeit umsortieren kann. ;)

Schönes Wochenende
Frank
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

botschi

  • Gast
Re: Umsortieren von Ansichten per Script
« Antwort #3 am: 08.12.06 - 14:39:48 »
Hallo Frank,

wir haben beim Öffnen der DB mal die Ansichtsauswahl geändert. Davon rate ich dringend ab, weil es an allen Stellen gekracht hat.
Ich könnte mir vorstellen, dass das so ähnlich auch passiert, wenn die Sortierung innerhalb kurzer Zeit und zur Agentenlaufzeit geändert wird.
Mit DB.Search kannst Du jedenfalls als Suchformel die Ansichtsauswahl nehmen und ggf ändern für Deine Zwecke. Denn brauchst Du vielleicht auch die Sortierung nicht zu ändern.

Gruss Matthias

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Umsortieren von Ansichten per Script
« Antwort #4 am: 08.12.06 - 15:16:38 »
Ab gesehen davon: Dieser usersortierbaren Ansichten fressen (annähernd) soviel Platz wie mehrere Ansichten, in der nur die 1. Spalte sortiert ist - immerhin muss der Index auch für die usersortierbaren Spalten aufgebaut werden.

Bernhard

Offline just.do.it

  • Junior Mitglied
  • **
  • Beiträge: 61
  • Geschlecht: Männlich
Re: Umsortieren von Ansichten per Script
« Antwort #5 am: 11.12.06 - 12:38:23 »
Hallo,

also ich denke, daß zwei Ansichten mit genau einer sortierten Spalte in etwa genau so viel Platz benötigen wie eine Ansicht mit zwei sortierbaren Spalten, da in beiden Fällen zwei Indizes existieren müssen.
Also gewinnst du in der Hinsicht nichts. Du verlierst maximal ein wenig an Übersichtlichkeit, wie ich finde.  ;D

Gruß
Dirk

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz