Domino 9 und frühere Versionen > ND8: Administration & Userprobleme

Agent prüft keine Doppeleinträge mehr

<< < (3/8) > >>

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