Domino 9 und frühere Versionen > ND8: Entwicklung

megasimples Problem/Zugriff auf mail-DB

<< < (2/3) > >>

ascabg:
Hallo,

Welchen Code hast Du denn in dem Agenten?

Und natuerlich kannst Du auch Daten aus anderen Datenbanken auslesen.


Andreas

vbis:
Hi,

ich habe es mit 2 verschiedenen Schaltflächen in einer Maske der zweiten Datenbank probiert.

Versuch 1 entsprechend Hinweis von Chris (mit dem Fehler Database has not been opened yet):
Sub Click(Source As Button)
   
   Dim server As String, mailfile As String
   Dim session As NotesSession
   Dim Maildb As NotesDatabase
   Set session = New NotesSession
   Set Maildb = session.Currentdatabase
   Dim db As NotesDatabase
   Set db=session.getdatabase(server, mailfile)
   Dim doc As NotesDocument
   
   Size = Cdbl(db.Size) / 1024/1024
   If db.SizeQuota=0 Then
      doc.SizeImgBad=""
      doc.SizeImgWarn=""      
      doc.SizeImgGood=""      
      doc.RestSizeImg=""
      doc.DatabaseSizeMax = (maildb.Sizequota/1024) & " MB"
      Exit Sub
   End If
   MaxSize = Cdbl(db.SizeQuota)/1024
   WarnSize =Cdbl(db.SizeWarning)/1024
   Score=Round(Round(Size,0)/Round(WarnSize,0)*100,1)
   Scoreall=Round(Round(Size,0)/Round(MaxSize,0)*100,1)
   'Below 75% the bar is green, above it, it becomes red
   If Score<75 Then
      doc.SizeImgGood=String(Round((Score)/10,0),"g")
      doc.SizeImgBad=""
      doc.RestSizeImg=String(10-Round((Score)/10,0),"g")
   Else
      If Score<95 Then
         doc.SizeImgWarn=String(Round((Score)/10,0),"g")   
         doc.RestSizeImg=String(10-Round((Score)/10,0),"g")
      Else
         If Score<=100 Then
            doc.SizeImgBad=String(Round((Score)/10,0),"g")
            doc.RestSizeImg=String(10-Round((Score)/10,0),"g")
         Else
            If Score>100 Then
               doc.SizeImgBad=String(Round((Scoreall)/10,0),"g")
               doc.RestSizeImg=String(10-Round((Scoreall)/10,0),"g")
            Else
               doc.SizeImgBad=String(10,"g")
               doc.SizeImgGood=""   
               doc.RestSizeImg=""
            End If
         End If
      End If
   End If      
   doc.SizeDescription= (Score)+"%"
   
End Sub

Versuch 2 entsprechend Hinweis von Mitch (Fehler bei set doc=source.Document):
Sub Click(Source As Button)
   
   Dim session As New NotesSession
   Dim db As New NotesDatabase( "", "" )
   Call db.OpenMail
   Dim doc As NotesDocument
   Set doc=source.Document
   Size = Cdbl(db.Size) / 1024/1024
   If db.SizeQuota=0 Then
      doc.SizeImgBad=""
      doc.SizeImgWarn=""      
      doc.SizeImgGood=""      
      doc.RestSizeImg=""
      doc.SizeDescription=Cstr(Round(db.Size,0)/1024/1024)+"MB"      
      Exit Sub
   End If
   MaxSize = Cdbl(db.SizeQuota)/1024
   WarnSize =Cdbl(db.SizeWarning)/1024
   Score=Round(Round(Size,0)/Round(WarnSize,0)*100,1)
   Scoreall=Round(Round(Size,0)/Round(MaxSize,0)*100,1)
   'Below 75% the bar is green, above it, it becomes red
   If Score<75 Then
      doc.SizeImgGood=String(Round((Score)/10,0),"g")
      doc.SizeImgBad=""
      doc.RestSizeImg=String(10-Round((Score)/10,0),"g")
   Else
      If Score<95 Then
         doc.SizeImgWarn=String(Round((Score)/10,0),"g")   
         doc.RestSizeImg=String(10-Round((Score)/10,0),"g")
      Else
         If Score<=100 Then
            doc.SizeImgBad=String(Round((Score)/10,0),"g")
            doc.RestSizeImg=String(10-Round((Score)/10,0),"g")
         Else
            If Score>100 Then
               doc.SizeImgBad=String(Round((Scoreall)/10,0),"g")
               doc.RestSizeImg=String(10-Round((Scoreall)/10,0),"g")
            Else
               doc.SizeImgBad=String(10,"g")
               doc.SizeImgGood=""   
               doc.RestSizeImg=""
            End If
         End If
      End If
   End If      
   doc.SizeDescription= (Score)+"%"
   
End Sub

Mir ist schon klar, dass das Problem für regelmäßig programmierende Leser albern klingt, aber ich kanns halt nicht und würde mich sehr freuen, wenn mir jemand "auf die Beine" helfen würde  :-:

ascabg:
Beispiel 1:
Wo werden die Variablen server und mailfile belegt, die Du bei session.GetDatabase verwendest?

Beispiel 2:
Du kannst hier Source nicht verwenden, da Source der Button ist.


Andreas

Mitch:
In Versuch 2:

Was du in "doc" haben möchtest, ist das Backend des aktuell offenen Dokumentes/bzw. der Maske.

Dafür gehst du über den NotesUIWorkspace und holst dir das NotesUiDocument. In diesem findest du dann das Backend-Dokument, das du in dein "doc" schieben kannst.

Die Designer-Hilfe und die dortigen Beispiele sind meistens echt gut. Fertigen Code möchte ich dir daher nicht geben. Ist aber auch ganz einfach. Mit einer neuen Zeile und einer geänderten Zeile wärst du schon fast am Ziel... :)

Danach müsstest du noch die Maske neu laden, damit die Änderungen auch sichtbar werden. Also noch eine Zeile.

Gruß,

Mitch

vbis:
Hallo Mitch,

ich habe jetzt mal versucht, mich in das Thema Frontend/Backend einzulesen - aber irgendwie wirft das bei mir mehr Fragen auf. Den Gesamtzusammenhang verstehe ich einfach noch nicht.  ???

Die Designer-Hilfe ist zwar sehr umfangreich und bietet immer Beispiele, aber am ehesten verstehe ich das, wenn es mir jemand erklärt.

Daher meine Bitte: Könntest Du mir bitte die ersten vier, fünf Zeilen, die zum Laden des Dokumentes nötig sind, im Detail erklären? Das wäre echt super!  :)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln