AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
24.05.12 - 07:51:00
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 7
| |-+  ND7: Entwicklung (Moderatoren: eknori, Glombi, koehlerbv)
| | |-+  UNID
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: UNID  (Gelesen 730 mal)
ch
Frischling
*
Offline Offline

Beiträge: 45


« am: 07.04.06 - 12:53:33 »

Hallo,
ich habe eine Frage ich möchte prüfen ob es in einer DB ein Dokument mit einer bestimmten UNID gibt.
Bei Set bricht Notes ab wenn es keine Dok. gibt und Errorhandling hat nicht funktioniert.
Gibt es eine möglichkeit wie:

IF db.getDocumentByUNID(doc.zuDokiD(0))=true then

eine Schleife aufzubauen??

lg claudia

 



Gespeichert
Glombi
Global Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8401


WWW
« Antworten #1 am: 07.04.06 - 12:58:07 »

Mit einem vernünftigen Errorhandling sollte das machbar sein.

Es geht auch so: Erstelle eine Ansicht ohne Antworthierarchie, die nach
 @Text(@DocumentUniqueID)
sortiert ist.

Dann:

set dc = view.getDocumentbyKey( doc.zuDokiD(0), true )
if dc.Count = 0 then
msgbox "Dok nicht da"
End if

Andreas
Gespeichert

IBM Certified Application Developer - Lotus Notes and Domino 8
Glombitza Informations-Systeme ist nun Teamstudio Bronze Partner!
Ihr interessiert Euch für Teamstudio Produkte, Spam-Lösungen, Antiviren-Lösungen oder Lotus Notes Lizenzen? Dann einfach Mail oder PM an mich!
diali
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 998



« Antworten #2 am: 07.04.06 - 12:59:09 »

mit dem Errorhandling muss es aber funktionieren.

Wie sieht den Dein Script-Code aus?
Gespeichert

Gruß
Dirk
ch
Frischling
*
Offline Offline

Beiträge: 45


« Antworten #3 am: 07.04.06 - 13:02:00 »

%INCLUDE "lsxbeerr.lss"
Sub Initialize
   
REM Archivierung...
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim arcdb As New NotesDatabase("","chug_kop.nsf")
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim doc2 As NotesDocument
   Dim doc3 As NotesDocument
   
   Dim wert As Variant
   Dim wert1 As Variant
   Dim wert2 As Variant
   Dim wert3 As Variant
   Dim wert4 As Variant
   
   Set db = session.CurrentDatabase
   Set dc = db.AllDocuments
   Set doc = dc.GetFirstDocument
   
   While Not doc Is Nothing
      wert4 = doc.GetItemValue("status")
      
      If wert4(0) = "offen" Then
         REM offen und noch keine UNID vorhanden..
         On Error lsERR_NOTES_ERROR Goto label1
         Set doc3 = arcdb.getDocumentByUNID(doc.zuDokiD(0))
label1:   
         wert = doc.GetItemValue("Titel")
         wert1 = doc.GetItemValue("Name")
         wert2 = doc.GetItemValue("Thema")
         wert3 = doc.GetItemValue("Telefonnummer")
         
         Set doc2 = New NotesDocument( arcdb )
         doc2.Form = "Task"
         doc2.TaskType = "1"
         doc2.Categories = "offene Telefonate"
         doc2.TaskType = "1"
         doc2.tmpOwnerHW = "1"
         doc2.tmpNoActionBar = "1"
         doc2.NoticeType = ""
         doc2.~_ViewIcon = 8         
         doc2.Subject = wert(0)  & " - " & wert1(0) & " - " & wert3(0) & " - " & wert2(0)
         Call doc2.ComputeWithForm(False, False)
         Call doc2.Save( True, False )
         
         If doc2.Save( True,False ) Then Messagebox "Document " & doc.UniversalID & " successfully saved"
         
         doc.zuDokiD = doc2.UniversalID
         Call doc.Save( True, False )      
         Goto schleife
Schleife:   
         
      End If
      
      Set doc = dc.GetNextDocument( doc )
   Wend
   
End Sub
Gespeichert
diali
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 998



« Antworten #4 am: 07.04.06 - 13:05:35 »

den Abschnitt mit der Fehlerbehandlung würde ich anders machen

On Error goto Next
set doc3 = arcdb.getDocumentByUNID(doc.zuDokiD(0))
if err <> 0 then
   ' Fehler gefunden
   ' ...
   err = 0
else
   ' keine Fehler gefunden
end if
On error Goto 0
Gespeichert

Gruß
Dirk
ch
Frischling
*
Offline Offline

Beiträge: 45


« Antworten #5 am: 07.04.06 - 13:15:25 »



Bei Set bringt er leider immernoch den error: "invalid id"



REM %INCLUDE "lsxbeerr.lss"
Sub Initialize
   
REM Archivierung...
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim arcdb As New NotesDatabase("","chug_kop.nsf")
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim doc2 As NotesDocument
   Dim doc3 As NotesDocument
   
   Dim wert As Variant
   Dim wert1 As Variant
   Dim wert2 As Variant
   Dim wert3 As Variant
   Dim wert4 As Variant
   
   Set db = session.CurrentDatabase
   Set dc = db.AllDocuments
   Set doc = dc.GetFirstDocument
   
   While Not doc Is Nothing
      wert4 = doc.GetItemValue("status")
      
      If wert4(0) = "offen" Then
         REM offen und noch keine UNID vorhanden..
         REM On Error lsERR_NOTES_ERROR Goto label1
         On Error Goto label1
         Set doc3 = arcdb.getDocumentByUNID(doc.zuDokiD(0))
label1:   
         If Err <> 0 Then
            wert = doc.GetItemValue("Titel")
            wert1 = doc.GetItemValue("Name")
            wert2 = doc.GetItemValue("Thema")
            wert3 = doc.GetItemValue("Telefonnummer")
            
            Set doc2 = New NotesDocument( arcdb )
            doc2.Form = "Task"
            doc2.TaskType = "1"
            doc2.Categories = "offene Telefonate"
            doc2.TaskType = "1"
            doc2.tmpOwnerHW = "1"
            doc2.tmpNoActionBar = "1"
            doc2.NoticeType = ""
            doc2.~_ViewIcon = 8         
            doc2.Subject = wert(0)  & " - " & wert1(0) & " - " & wert3(0) & " - " & wert2(0)
            Call doc2.ComputeWithForm(False, False)
            Call doc2.Save( True, False )
            
            If doc2.Save( True,False ) Then Messagebox "Document " & doc.UniversalID & " successfully saved"
            doc.zuDokiD = doc2.UniversalID
            Call doc.Save( True, False )      
            
            Err=0
         Else
            Goto schleife   
         End If
Schleife:   
         
      End If
      
      Set doc = dc.GetNextDocument( doc )
   Wend
   
End Sub
Gespeichert
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 19051



« Antworten #6 am: 07.04.06 - 13:41:23 »

Ein richtiges ErrorHandling hast Du ja noch gar nicht, Claudia. Schau Dir hierzu bitte mal wegen der Grundlagen folgenden Thread aus dem Forum an: Best Practices: Error Handling in Lotus Script.

In Deinem Fall reicht - wenn Du ein allgemeines ErrorHandling verwendest und nur kurzzeitig dieses umsetzt - folgendes:
Du setzt das ErrorHandling vor dem Holen des Docs via UNID auf
On Error Resume Next
Damit - und das ist wichtig - wird der Fehlerstatus wieder aufgehoben (was Du derzeit überhaupt nicht machst - daher bekommst Du ja auch weiter die Meldung).
Nun fragst Du ab, ob das instantiierte Doc überhaupt existiert - und stellst vor allem das allgemeine ErrorHandling wieder her.

HTH,
Bernhard
Gespeichert
ch
Frischling
*
Offline Offline

Beiträge: 45


« Antworten #7 am: 07.04.06 - 13:56:29 »

Danke hat funktioniert.

lg claudia
Gespeichert
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 19051



« Antworten #8 am: 07.04.06 - 14:06:07 »

Wie hast Du es in Deinem speziellen Fall jetzt gelöst? Sicherlich stolpert auch später nochmal ein dankbarer Entwickler über diesen Thread ...

Bernhard
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: Tinte / Toner günstig