Hallo,
ich war nur zu blind.
Wichtig dabei war, dass der Zinssatz als Prozentwert kommt.
effektiv_Zins = ( 1 + Zinssatz% / Periode) ^Periode - 1
Hallo,
ich war nur zu blind.
Wichtig dabei war, dass der Zinssatz als Prozentwert kommt.
effektiv_Zins = ( 1 + Zinssatz% / Periode) ^Periode - 1
Hallo,
Ich versuche einen effektiven Zinssatz zu ermitteln, mit der
Formel:
effektiver_Zinssatz = (1+Zinssatz/Periode) ^ Periode -1
nur leider erhalte ich einen total falschen Wert.
Was mache ich denn dort falsch ? ;-((
Gruß
vom Westensee in S-H
Harald
Hallo,
hier mal den Code, wie z.B. bei mir sich ein Agent die DTA-Sätze zusammen baut.
Ist zumindest mal 'ne Anleitung, wie's geht.
Ich erstelle damit die Fahrtkostenabrechnungen in unserem Haus per DTA.
Gruß
Harald
zunächst einmal Dank an alle, die versucht haben zu helfen.
OK, Ich weiss, dass es so nicht 100%ig dicht ist, aber mir ist zumindest so weit geholfen, dass Strg+B nicht mehr in den Bearbeitungsmodus wechselt und trotz allem die Personen, die das Dokument geöffnet haben, registriert werden.
Nachstehend mal der modifizierte Code:
Sub Postopen(Source As Notesuidocument)
Dim Session As New Notessession
Dim Item As NotesItem
Set Item = source.Document.GetFirstItem("gelesen")
User = Session.CommonUserName
If User = source.Document.From(0) Then Exit Sub 'den Ersteller brauchen wir nicht in der Leserliste
Inhalt = Item.Values
Forall Namen In Inhalt
If Strleft(Namen," -") = User Then Goto Ende 'Exit Sub 'wenn schon vorhanden, braucht der User nicht nochmal als Leser eingetragen werden
End Forall
A = User+ " --- " +Cstr(Date) +" ·· "+Cstr(Time)
Call Item.AppendToTextList( A )
source.Document.gelesen = Item.Values
Call source.Document.Save(True,False)
Ende:
If source.Document.gesperrt(0) = "1" Then
source.EditMode = False
continue = False
Exit Sub
End If
End Sub
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
Dim Session As New NotesSession
Admin = Evaluate (|_HomeServer := @Subset( @DbName; 1 ); HomeServer := @Name([CN];_HomeServer) ; HomeServer;
Admin := @DbLookup( "" : "NoCache" ; HomeServer : "Names.nsf" ; "Groups" ; "#Admins" ; "Members" );
@Name([CN] ; Admin )|)
Ersteller = Evaluate (|_HomeServer := @Subset( @DbName; 1 ); HomeServer := @Name([CN];_HomeServer) ; HomeServer;
Ersteller := @DbLookup( "" : "NoCache" ; HomeServer : "Names.nsf" ; "Groups" ; "9603 Ersteller Controlling-Info" ; "Members" );
@Name([CN] ; Ersteller )|)
Benutzer = Evaluate (|@name([CN];@UserName)|)
Dim wks As New NotesUIWorkspace
Dim doc As notesdocument
Set doc = source.Document
If source.Document.gesperrt(0) = "1" Then Goto Ende
Forall Member In Admin
If Benutzer(0) = Member Then
Exit Sub
End If
End Forall
Forall Member In Ersteller
If Benutzer(0) = Member Then
Exit Sub
End If
End Forall
Ende:
If Not source.EditMode Then
continue = False
Exit Sub
End If
End Sub
nochmals Danke für Eure Hilfe
Gruß Harald
aus dem jetzt nicht mehr so sonnigen S-H
taurec,
wenn ich die Personen in ein Autorenfeld nehme, können Sie ja alle das Doc bearbeiten, aber gerade das soll ja nicht sein. Nur ausgewählte Personen sollen das Doc bearbeiten dürfen.
Nur..... wenn eine Person das Doc öffnet soll protokolliert werden, wer wann das Doc gelesen hat. Daher habe ich alle auch als Editoren in der DB, die Maske geht nicht automatisch in den Bearbeitungsmodus, nur per Doppelklick und dann greift QueryModeChange und verhindert ggf. die Bearbeitung, aber Strg+B hebelt mir das aus. Und das möchte ich abfangen, weiss bloß nicht wie :-((
@Lancelot,
Hast Du den Code schon mal setp für step druchlaufen?
If User = doc.From(0) Then Exit Sub
"Hier frägst Du ab ob der Username gleich dem Maskenname ist???"
Da wird nicht der Maskenname (Form); sondern der Ersteller des Docs abgefragt. Dieser Feldwert (From) wird beim Erstellen des Docs angelegt.
If Strleft(Namen," -") = User Then Goto Ende
"Beginnen Deine Commonname wirklich mit " -" ???"
Nein, aber aus dem Code ist ersichtlich, mit welchen Werten ich das Feld "gelesen" gefüllt habe und Strleft(Namen," -") ergibt den Namen. Der Feldwert ist aufgebaut mit :
User+ " --- " +Cstr(Date) +" ·· "+Cstr(Time)
hier mal der Code
Dim Session As New Notessession
Dim wks As New notesuiworkspace
Dim Doc As Notesdocument
Set doc = wks.CurrentDocument.Document
Dim Item As NotesItem
Set Item = doc.GetFirstItem("gelesen")
User = Session.CommonUserName
If User = doc.From(0) Then Exit Sub 'den Ersteller brauchen wir nicht in der Leserliste
Inhalt = Item.Values
Forall Namen In Inhalt
If Strleft(Namen," -") = User Then Goto Ende 'Exit Sub 'wenn schon vorhanden, braucht der User nicht nochmal als Leser eingetragen werden
End Forall
A = User+ " --- " +Cstr(Date) +" ·· "+Cstr(Time)
Call Item.AppendToTextList( A )
Call doc.Save(True,False)
Ende:
If doc.gesperrt(0) = "1" Then
continue = False
End If
Dieses Feld "gesperrt" wird zuvor, wenn es Berechtigte bearbeitet haben gesetzt. Es ist also bereits mit dem Wert "1" gefüllt.
und im QueryModeChange habe ich:
Dim Session As New NotesSession
Admin = Evaluate (|_HomeServer := @Subset( @DbName; 1 ); HomeServer := @Name([CN];_HomeServer) ; HomeServer;
Admin := @DbLookup( "" : "NoCache" ; HomeServer : "Names.nsf" ; "Groups" ; "#Admins" ; "Members" );
@Name([CN] ; Admin )|)
Ersteller = Evaluate (|_HomeServer := @Subset( @DbName; 1 ); HomeServer := @Name([CN];_HomeServer) ; HomeServer;
Ersteller := @DbLookup( "" : "NoCache" ; HomeServer : "Names.nsf" ; "Groups" ; "9603 Ersteller Controlling-Info" ; "Members" );
@Name([CN] ; Ersteller )|)
Benutzer = Evaluate (|@name([CN];@UserName)|)
Dim wks As New NotesUIWorkspace
Dim doc As notesdocument
Set doc = wks.CurrentDocument.Document
If doc.gesperrt(0) = "1" Then Goto Ende
Forall Members In Admin
If Benutzer(0) = Member Then
Exit Sub
End If
End Forall
Forall Members In Ersteller
If Benutzer(0) = Member Then
Exit Sub
End If
End Forall
Ende:
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.EditDocument( False )
continue = False
Aber QueryModeChange wird gar nicht durchlaufen, wenn ich Strg+B betätige.
Bin ich denn zu dösig ? ;-)) oder wo liegt mein Problem
aber ich prüfe im PostOpen doch, ob ein Feld einen bestimmten Wert hat und wenn es nicht den Wert hat, dann soll eben nur Lesen möglich sein.
Oder stehe ich hier irgendwie auf dem Schlauch ??
Gruß
Harald
andreas,
verstehe ich nicht ganz. Was hilft mir ein Button ? Mit Strg+B brauche ich doch keinen Button, der mir irgendetwas an Flags setzt.
Der User macht Strg+B und ist im Bearbeitungsmodus, da greift das QueryModeChange doch gar nicht.
Es wird PostOpen durchlaufen und ich bin im Bearbeitungsmodus, das QueryModeChange wird gar nicht ausgeführt, oder liegt ich da falsch.
Gruß
Harald
RockWilder,
so einfach auf Leser einstufen, geht nicht. Die Dokumente sind an sich gesperrt, aber.......
beim Öffnen eines Dokuments wird im PostOpen der Username im Dokument in ein Feld "Kenntnisnahme" mit Name und Datum eingetragen. Deshalb habe ich im QueryModeChange auch ein Continue = False drin, dass mir den Wechsel in den Bearbeitungsmodus verhindert. Die User habe ich desher auch als Editoren in der ACL. Durch Code im QueryModeChange wird der Bearbeitungsmodus aber nur bestimmten Gruppen gestattet und Strg-B würde das ja umgehen.
Wenn Jemand eine bessere und effektivere Lösung kennt, ich bin für alles offen .-)).
Gruß aus den z.Zt. noch sonnigen Schleswig-Holstein
Harald
Moin,
gibt's eine Möglichkeit die Tastenkombis in Notes zu deaktivieren ? bzw. wie kann ich insbesondere Strg+B verhindern ?
Gruß
Harald
Guten Morgen @All,
vielen Dank für Eure Antworten. Leider ist mir damit ja nicht geholfen, unser System ist von einem ext. Dienstleister aufgesetzt, da kann ich nur beschränkt eingreifen. Werde ich dann wohl mal an den wenden müssen.
Gruß
Harald
Hallo,
ich habe einen Agenten in der Mail-DB, der "Vor Eingang neuer Mail" laufen soll.
Den Agenten habe ich im Template hinterlegt. Dort wird auch in der Liste der Agenten, dieser mit einem gelben Stern gekennzeichnet.
Bringe ich nun die Mail-DB's per "load design" auf den neuen Stand verschwindet der Stern in den User-Mail-DB's und der Agent läuft nicht.
Öffne ich den Agenten in einer User-Mail-DB und speicher ihn dann nochmal, erscheint der Stern und der Agent läuft wie er soll.
Mache ich da was falsch oder muss ich jetzt jede Mail-DB anfassen, den Agenten öffnen und speichern ?
Kennt Jemand eine Lösung ???
Gruß
Harald
taurec,
war ein guter Tipp mit dem "Testen". Dort sagte er mir dann auch, dass Hintergrundagenten in dieser DB deaktiviert waren.
Nun sollte es wohl funktionieren.
Danke
Harald
Hallo,
ich hab' da mal wieder ein Problem mit einem Agenten, der einfach nicht laufen will.
Der Agent ist zeitgesteuert und läuft über alle Dokumente in der DB.
Wenn ich ihn manuell aus der Agentenliste starte, tut er fein das was er tun soll.
Aber zeitgesteuert gibt er mir noch nicht mal einen Eintrag in der Log.
hier mal der Code, vielleicht fällt ja Jemanden auf, was ich dort falsch gemacht habe.
Was der Agent machen soll, muss ich wohl nicht extra schreiben, dass geht m.E. aus dem Code hervor.
Sub Initialize
On Error Goto Fehler
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim Doc As NotesDocument
Dim Doc2 As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.AllDocuments
Dim Agent_gelöscht As Variant
Agent_gelöscht = False
Dim Archiv_erstellt As Variant
Archiv_erstellt = False
Print "Starte Agent "+"neues Archiv erstellen > 100.000 Docs"
ArchivDate = " bis "+Cstr(Day(Today))+"_"+Cstr(Month(Today))+"_"+Cstr(Year(Today))
If Collection.Count => 10 Then 'Agent läuft nur, wenn mindestens 100.000 Dokumente in der Datenbank sind
archiveServer$ = db.server
DB_Name = Strleftback(db.FileName,".") ' ".nsf" abtrennen
Set doc = collection.GetFirstDocument
If Not (Doc Is Nothing) Then
Set archiveDb = New NotesDatabase( "", "" )
archiveFile$ = "Archive\"+DB_Name+"_"+ArchivDate+".nsf"
End If
archiveDb.Title = Db.Title+"_"+ArchivDate
While Not(doc Is Nothing)
Set doc2 = collection.GetNextDocument(doc)
If Not archiveDb.IsOpen Then
If (Not(archiveDb.Open(archiveServer$, archiveFile$))) Then
Set archiveDb = db.CreateCopy( archiveServer$, archiveFile$ )
Archiv_erstellt = True
If Agent_gelöscht = False Then
Forall Agenten In ArchiveDb.Agents
If Agenten.Name = "neues Archiv erstellen > 100.000 Docs" Then
Call Agenten.remove 'Archivierungsagenten aus dem neuen Archiv löschen
Agent_gelöscht = True
End If
End Forall
End If
End If
End If
Call doc.CopyToDatabase( archiveDb ) 'Dokumente werden in das neue Archiv kopiert
Call doc.Remove(True) 'kopierte Dokumente werden im alten Archiv gelöscht
Set Doc = Doc2
Wend
If Archiv_erstellt = True Then
Dim Memo As New NotesDocument(db)
Memo.Form = "MainTopic"
Memo.Subject = "neues Bank-Archiv wurde erstellt"
Dim RTitem As NotesRichTextItem
Set RTitem = New NotesRichTextItem(Memo,"Body")
Call RTitem.AppendText("neues Bank-Archiv wurde erstellt.")
Call RTitem.AddNewline(1)
Call rtitem.AppendText("Link zur neuen Datenbank """+archiveDb.Title+""" ---> ")
Call rtitem.AppendDocLink(archiveDb, archiveDb.Title)
Call rtitem.AddNewline(1)
Call Memo.Send(True,"#Admins") 'Meldung an Admins, dass ein weiteres Archiv erstellt wurde
End If
End If
Exit Sub
Fehler:
Print Cstr(Err) + " inLine "+Cstr(Erl)
End Sub
Vielen Dank,
das genau war der Fehler. Habe es jetzt in cDat(Datum) geändert und nun läuft's prima.
Gruß
Harald
Hallo,
ich hätte da gern mal wieder ein Problem.
Ein Agent startet in einer Bibliothek nachstehenden Code und übergibt dabei den ViewNamen und einen Offset mit Wert 4.
Das läuft auch alles soweit gut, bis auf...
vc.Title =Format$(Datum,"dd")
das Datum habe ich zuvor durch
Datum = Format$(Today()+ daycount,"Short Date")
korrekt übergeben, da stimmt es noch (21.09.2009)
Die Zeile
vc.Title =Format$(Datum,"dd")
gibt mir aber einen falschen Wert, hier "31"
Ich habe mir mal den Wert als "d-mmmm" geben lassen,
da erhalte ich dann den Wert "31.Dezember"
hier der Code aus der Bibliothek:
Sub UpdateColumnHeaders( NameOfView As String,Offset As Integer ) 'Offset wird mit 4 übergeben
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewColumn
Dim Datum As Variant
Dim count As Integer
Dim daycount As Integer
Dim VarColor As String
Set db = session.CurrentDatabase
Set view = db.GetView(NameOfView)
count = View.ColumnCount
daycount = (count-offset)/2 - 1
Do Until count = offset
Set vc = view.Columns(count-1)
Datum = Format$(Today()+ daycount,"Short Date")
vc.FontFace = "Webdings"
vc.Alignment = VC_ALIGN_CENTER
vc.FontPointSize = 16
vc.HeaderFontPointSize = 10
vc.HeaderFontStyle = VC_FONT_BOLD
vc.HeaderAlignment = VC_ALIGN_CENTER
Select Case Weekday(Datum)
Case 1 : vc.HeaderFontColor = COLOR_RED
Case 7 : vc.HeaderFontColor = COLOR_DARK_YELLOW
Case Else :vc.HeaderFontColor = COLOR_BLACK
End Select
vc.Title =Format$(Datum,"dd")
vc.Width = 1
count =count -1
daycount = daycount -1
Loop
Wo zum Teufel ist dann hier der Fehler.
Bin für jeden Tipp dankbar.
Gruß
Harald
taurec
Vielen Dank für Deine Tipps.
Gruß
Harald
Hallo Taurec,
so sieht es bei mir aus. In der View sind diverse leere Bereiche. Sieht ganz anders aus, wie in den normalen Views. Mich wundert nur, dass das Script bei mir einwandfrei läuft.
Heißt das, dass ich diese View nicht mehr löschen kann ?
Danke und Gruß
Harald
sorry, hatte ich zuvor vergessen. Meinen Beitrag aber nachträglich editiert.