Autor Thema: View-Select ohne @Today -> Methode lief in V5. V7 macht Probleme  (Gelesen 6982 mal)

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Und schon wieder ein neues Problem von mir:
Da man ja @today etc. in View-Select vermeiden soll steht folgendes Scenario an:

Ansicht 1.Spalte,Spaltenwert berechnet mit:
@If(@Modified > @Adjust(@Today;0;0;-28;0;0;0)|@Created > @Adjust(@Today;0;0;-28;0;0;0);"V";"H")
Spalte ist hidden, keine Sortierung, keine Kategorisierung,Name f. Programmierung $4 (letzter Reiter der Eigenschaften). Danach weitere Spalten ...

Selectformel der Ansicht zB: (FORM="A"|FORM="B") & $4="V"

Ergebnis: Anzeige aller Dokumente mit Form A oder B und jünger als 28 Tage funktioniert in Version 5 ohne Probleme.
In version 7 wird zwar nix bemeckert, aber auch kein Dokument angezeigt. Selbiges auch wenn ich aus dem "$4"-Namen zB. "NewDoc" mache. Hatte entsprechendes in der 7er Hilfe gelesen.

Ich würde gerne den Ausweg über ein Dokumentenfeld und täglich laufenden Agenten vermeiden, da dann Probleme bei Repliken der DB auf verschiedene Server auftreten dürften.

Hat jemand eine Ahnung wie man das gezeigte Prinzip auch in der Version 7 zum laufen bringen könnte???

Grüße Ricardo





Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
Guten Abend Ricardo,

bei der Versionsfrage kann ich Dir nicht helfen. Aber Du kannst doch Deinen Select statt mit @Today mit einem @TextToTime("Heute") versehen. In Kombination mit nächtlichem updall -R kannst Du den Weg über die Spalte sparen?
Grüße
Christian Kröll

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Nö, nö, nö, Christian:
Was ist, wenn ein Server ("das war niemals angedacht!") plötzlich mit "Heute" nichts anfangen kann, sondern Aujourd'hui oder Today erwartet? Oder "hoy"?

Der Ansatz ist falsch! Darüber sollten wir diskutieren (und den Hintergrund der Aktion kennen wir ja noch gar nicht).

Ricardo: Wenn "Herkules" (das ist natürlich bekannt) - warum klemmt es dann an absoluten "peanuts" wie dem Analyzer?

Bernhard

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
@Bernhard:
Bei deinem Einwand bzgl "Heute" gebe ich dir Recht. Klingt mir auch irgendwie "ungesund" ;-)

Zu den Peanuts: Das IT-Amt der BW hat den Organisationsbereichen mal eben sämtliche Mittel für den IT-Betrieb entzogen und alles in das HERKULES-Projekt reingeschoben. Irgendwo müssen die 7 Milliarden ja herkommen. ;-( Wir haben schlicht keinen Cent mehr!
Hintegrund meines Eintrages:
Es handelt sich um eine Dokumenten DB (viele verschiedene Kategorien) die von 5 auf 7 gehoben werden soll und dann von der BWi auf BWI Servern betrieben wird. Die setzen halt den TS ein um den Code zu prüfen. Die Prüfregeln verbietetr natürlich @select mit Bezügen auf @Today etc. Daher auch die "Krücke" über die 1. Spalte zum anzeigen von "V" bzw. "H" und im select der Verweis auf diese Spalte.
Das Regelverbot scheint mir auch sinnvoll, da ca. 20.000 (teilweise sehr große) Doks mit durchschnittlich 200 Nutzern.

Was passiert: In einer Maske wird per Action die beschriebene Ansicht aufgerufen. Die Ansicht soll alle Dokumente mit created bzw. modified < 28 Tage aus den verschiedenen Dokumentkategorien anzeigen.
Vielmehr gibts eigentlich nicht zu sagen. Noch Infos erforderlich???

Grüße Ricardo

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
mit Hoy hast Du ja recht, mit Today allerdings nicht. "Today" funktioniert angeblich in allen Sprachversionen.

Aber warten wir, was uns Ricardo zu Deiner Frage nach dem Hintergrund sagt.
Christian Kröll

Glombi

  • Gast
Ich mache sowas auch mit der Abfrage auf "Today", "Heute" und "Heuer"  ;) und hatte damit bis jetzt keine Probleme. Falls der Admin dann auf die Idee kommt, einen französischen Server zu installieren, besuche ich ihn mit meinen Freunden Smith und Wesson  ;D

Andreas

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Nur um mal zu gucken ob ich in den Formeln für die anzuzeigenden Spalten (also nicht Spalte 1) keine Fehler habe, habe ich die Selectformel mal direkt mit
@Modified > @Adjust(@TexttoTime("Today";0;0;-28;0;0;0)|@Created > @Adjust(@texttoTime("Today";0;0;-28;0;0;0) per & verknüpft und schon wurde alles richtig angezeigt.
Also stellt das ursprüngliche "$4 = "V" als Bezug auf den Wert in Spalte 1 das Problem dar.

Grüße Ricardo

Glombi

  • Gast
Du kannst in SELECT Formeln keinen Bezug auf Spalten machen. Wenen $4 also der programmatische Name einer Spalte ist, wird das nicht gehen.
$4="V" muss Du durch die Formel ersetzen, die in der Spalte steht.

Offline Christian Kröll

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
ich bin auch immer von der Logik ausgegangen, dass erst die Selection ausgeführt wird und dann die Spaltenformeln erst etwas zu berechnen haben. Wenn die Selektion dann auf die Spaltenergebnisse wieder zugreift, ergibt sich ein Zirkel...

Aber zum Grundsatz: Viele Dokumente, die regelmäßig aktuell den Anwendern zur Verfügung stehen müssen. Die wesentlichen Möglichkeiten hat IBM hier mal aufgezeichnet:
http://www-01.ibm.com/support/docview.wss?uid=swg27003557

In Deinem Fall neige ich zu einer Lösung, wie Andreas und ich (nebenbei mind. zwei Konzerne weltweit verteilten Servern) einsetzen (mittels "today") bzw. der "Text"-Lösung aus dem Vergleich. Sicherlich mußt Du die Aktualisierungsintervalle (updall) auf Eure Anforderung anpassen.

Christian Kröll

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Eine andere Variante um solche Ansichten zub bekommen, ist das Vergleichsdatum "statisch" in die Selection-Formel zu schreiben

z. B. so:
Code
vToday := @Date(2005; 9; 9);

REM {END vToday};

SELECT @Cretaed >= @Adjust(vHeute; 0; 0; -7; 0; 0; 0)
und dann per nächtlichen Agenten die Selectionformel jeden früh 1 Uhr anzupassen

z. B. so:
Code
%REM
Beschreibung:
Dieser Agent ändert in allen Ansichten der Ansichtsauswahlformel mit "vToday :=" anfangen und 
den Code "Rem 'END vToday';" enthalten den Code vor dem REM auf den aktuellen Tag.

Damit kann anschließend eine datumsabhängige Auswahl getroffen werden, 
ohne dass der variable Teil der Selection-Formel durch den Agenten berührt wird.
%END REM
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim sel As String
	Dim pos1 As Integer
	Dim pos2 As Integer
	Dim doc As NotesDocument
	Dim tmpdoc As NotesDocument
	
	Set db = session.CurrentDatabase
	
	Forall view In db.Views
		' Selection-Formel holen
		sel = view.SelectionFormula
		
		' auf betroffenen Code suchen
		pos1 = Instr(sel, "vToday :=")
		pos2 = Instr(sel, |REM {END vToday};|)
		
		If pos1 = 1 And pos2 > 0 Then
			' Feld mit der Hilfeformel in temporärem Dokument sichern
			Set doc = db.GetDocumentByUNID(view.Universalid)
			Set tmpdoc = db.CreateDocument
			Call doc.CopyAllItems(tmpdoc, True)
			Forall item In tmpdoc.Items
				If item.name <> "$AppHelpFormula" And item.name <> "$FormFormula" Then
					Call item.Remove()
				End If
			End Forall
			Set doc = Nothing
			
			' Selection-Formel korrigieren und zurückschreiben
			sel = |vToday := @Date(| & Format(Today, "yyyy\; mm\; dd") & |);
| &Mid(sel, pos2 - 1)
			
			view.SelectionFormula = sel
			
			' Ansicht noch aktualisieren
			view.Refresh
			
			' Feld mit Hilfeformel aus temprärem Dokument zurückspielen (geht nur mit CopyAllItems, da ReplaceItemValue keine Felder vom Typ 1536 beherrscht)
			Set doc = db.GetDocumentByUNID(view.Universalid)
			Call tmpdoc.CopyAllItems(doc, False)
			Call doc.Save(True, False)
			Set doc = Nothing
			Set tmpdoc = Nothing
		End If
	End Forall

Falls der Agent mal einen morgen nicht läuft, hat man zwar 8 und nicht 7 Tage, aber die Ansicht selbst arbeitet und das auch noch schnell.

Gruß

André

Offline RKuehle

  • Junior Mitglied
  • **
  • Beiträge: 80
  • Geschlecht: Männlich
Ich habe inzwischen erfahren, dass die DB wohl nicht auf verschiedene Server repliziert wird. Daher scheint die Nutzung eines Agenten wohl eher "ungefährlich".
Habe das Script von it898ur  benutzt und lief ohne Faxen. Danke dafür!

Da ich kurz vor meinem Urlaub stehe und in dieser Zeit LoNo / Domino nicht anfassen werde (auch nicht dieses Forum, obwohl es mir schon oft geholfen hat), wünsche ich euch allen schonmal erholsame Feiertage und einen "krisenfreien" Rutsch in 2012.

Grüße Ricardo

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz