Domino 9 und frühere Versionen > ND8: Administration & Userprobleme
Agent prüft keine Doppeleinträge mehr
tron55:
Ok, ich dachte ja ich hab das Problem gefixed, leider war dem nicht so.
Querysave lässt immernoch Doppeleinträge zu.
Am Code selbst wurde nichts geändert, deswegen kapiere ich es nicht.
Ich hatte ja mal gesagt das er den Datumstring falsch konvertiert, aber das kann ich irgendwie nicht mehr so wirklich nachstellen.
In der Maske gibt es wie schon mal festgellt , diesen code unter querysave
--- Zitat ---Sub Querysave(Source As Notesuidocument, Continue As Variant)
'Validation
Const Button = 16
Const Title = "Error!"
Dim session As New NotesSession
Dim doc As NotesDocument
Set doc = source.Document
Dim dtuntil As NotesDateTime
Dim dtday As NotesDateTime
Dim itm As NotesItem
Dim Fields(2) As String
Dim msg(2) As String
Dim ErrorField As String
'Fields and errormessages for validation
fields(0) = "ProjectSelection"
msg(0) = "Please select a project!"
fields(1) = "TimeReportDate"
msg(1) = "Please enter a date!"
fields(2) = "Criterion"
msg(2) = "Please select a criterion!"
For i=0 To Ubound(fields)
If doc.GetItemValue(fields(i))(0) = "" Then
Msgbox msg(i), button, title
If ErrorField = "" Then ErrorField = fields(i) 'remember the first field, where an error occurred
continue = False
End If
Next
If ErrorField <> "" Then
Call Source.GoToField(ErrorField) 'in case of an error goto Errorfield
Continue = False
Exit Sub
End If
'set environment variables used when opening the form as default values
Set itm = doc.getFirstItem( "TimeReportHourEnd" )
Set dtuntil = itm.DateTimeValue
Set itm = doc.getFirstItem( "TimeReportDate")
Set dtday = itm.DateTimeValue
Call session.setEnvironmentVar( "TimeSheet_ProjectSelection", doc.ProjectSelection(0))
Call session.setEnvironmentVar( "TimeSheet_TimeReportDate", dtDay.DateOnly)
Call session.setEnvironmentVar( "TimeSheet_TimeReportHourStart", doc.TimeReportHourStart(0))
Call session.setEnvironmentVar( "TimeSheet_TimeReportHourEnd", doc.TimeReportHourEnd(0))
Call session.setEnvironmentVar( "TimeSheet_Criterion", doc.Criterion(0))
'is the timerecord valid?
If( isValidTimeRecord( doc ) = 1 ) Then
continue = True
Call doc.removeItem("SaveOptions")
Else
continue = False
End If
End Sub
--- Ende Zitat ---
es gibt aber außerdem noch Webquerysave mit diesem Code
--- Zitat ---@Command([ToolsRunMacro]; "(WebQuerySave)")
--- Ende Zitat ---
und in WebQuerySave steht dann
--- Zitat ---Option Public
Use "TimeReport"
Sub Initialize
%REM
This agent is called before a time sheet document is saved
Checks if Time Report is correct and valid
Sets project role access if available
%END REM
On Error Goto catch
Dim s As New NotesSession
Dim doc As NotesDocument
Dim roleDoc As NotesDocument
Dim check As Integer
Dim al As NotesLog
Set al = New NotesLog("NotesLog")
Call al.openAgentLog()
Set db = s.currentDatabase
Set roleView = db.getView("(ProjectRoles)")
Set doc = s.DocumentContext
'is the timerecord valid?
check = isValidTimeRecord( doc )
If( check = 1 ) Then
Call doc.removeItem("SaveOptions")
Set roleDoc = roleView.getDocumentByKey( doc.ProjectName(0), True)
If( Not roleDoc Is Nothing) Then
Set roleReaderItem = roleDoc.getFirstItem( "ReaderRoles")
Set roleAuthorItem = roleDoc.getFirstItem( "AuthorRoles")
Call doc.removeItem("ProjectReaders")
Call roleReaderItem.copyItemToDocument( doc, "ProjectReaders")
Call doc.removeItem("ProjectAuthors")
Call roleAuthorItem.copyItemToDocument( doc, "ProjectAuthors")
End If
Call doc.save( True, True)
Call al.logAction( "WebQuerySave:SaveAndCreateNew Valus is:" + doc.SaveAndCreateNew(0))
If( doc.SaveAndCreateNew(0) = "1") Then
Print "["+doc.Database(0)+"/TimeReport?OpenForm]"
Else
Print "["+doc.Database(0)+"/TimeReportsByDay/" + doc.UniversalID+"?OpenDocument]"
End If
Exit Sub
Elseif( check = -1) Then
'Time Report could not be saved. There is a time conflict with an existing time report.
Print "["+doc.Database(0)+"/dlgErrorTimeConflict?OpenForm]"
Elseif ( check = - 2) Then
Print "["+doc.Database(0)+"/dlgErrorFrozen?OpenForm]"
Elseif ( check = - 3) Then
Print "["+doc.Database(0)+"/dlgError?OpenForm]"
End If
finally:
Exit Sub
catch:
Call al.logAction( "Error in WebQuerySave: " + Error$)
Resume finally
End Sub
--- Ende Zitat ---
Er tut weder das eine noch das andere. Was übersehe ich hier?
ata:
... ich hab's nicht ganz verstanden, was du unter Doppeleinträgen verstehst. Deine Aussage "... weder das eine tut - noch das andere" hilft auch nicht weiter. Was genau passiert denn? Beim Web-Agent mal Print-Statements einbauen, damit man sieht wie der Code die Verzweigungen verarbeitet - das sollte ein erster Ansatz zum Debuggen sein...
Toni ;)
tron55:
Ok sorry.
Doppeleinträge sind einfach zweimal gebuchte zeiten, also zb 19.09 09:00 - 18:00 Uhr und 19.09 10:00 - 13:00 Uhr
Normalerweise sollte er dann sagen "ne ist nicht, die Zeit wurde schon erfasst"
Das hat auch immer funktioniert und nun aus heiterem Himmel nicht mehr.
Das mit dem Debuggen ist furchtbar mühsam weil ich das lange nicht mehr gemacht habe ;(
ata:
... bei Server-basierenden Agenten bleibt dir das aber nicht erspart - leider. Die Print- oder MsgBox-Statements findest du dann in der Log.nsf - oder du loggst über eine Notes-Log-DB dann hast du es komfortabler...
Plötzlich gibt es eigentlich nicht. Irgendetwas scheint geändert worden zu sein. Läuft die DB auf einem anderen Server? Ist ein Server als ausführend eingetragen? Wurde der Server umbenannt? Was sagt das Agent-Log - wann lief der Agent zum letzten Mal?...
Das wäre mal ein erster Ansatz - ansonsten debuggen...
Toni
tron55:
Das einzige was ich anfangs vermutet hatte...
Ein ehemaliger Entwickler hatte ne Menge Agenten und Masken mit seinem User signiert und wurde vor einiger Zeit aus dem Domino Directory gelöscht.
Der Agent "Webquerysave" wird aber nun von der Gruppe Company Administrator ausgeführt (dort ist der Notes Admin drin) kann also eigentlich kein problem sein
@ Rest
Dann werde ich mal probieren ob ich das noch hinbekomme
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln