Autor Thema: Hilfe für Anänge aktualisieren  (Gelesen 5950 mal)

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Hilfe für Anänge aktualisieren
« am: 05.06.06 - 21:03:31 »
Hallo zusammen,

Bitte Hilfe, ich komme mit meinem Agent nicht weiter, der die PDF-Dateien in die Datenbank importiert und aktualsieren soll. Der Importvorgang funktioniert soweit gut, allerdings können die Berechtingungen auf die Dokumente nicht gesetzt werden, da die Dokumente jedes Mal gelöscht werden.

Mein Problem: Wie kann ich meinen Agenten beibringen, dass er die  Anhänge nur aktualisiert (ohne Dokumente zu löschen).

Kann mir da jemand helfen? 

Wäre Super.

Grüße
Nyen

Hier ist mein Code:

Dim s As New NotesSession
Dim db As notesdatabase
Dim doc As NotesDocument
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Dim fileName As String
Dim rtitem As NotesRichTextItem
Dim collection As NotesDocumentCollection
Dim searchFormula As String
Set db=s.CurrentDataBase
Set view = db.GetView("Alle Dokumente")
Set vc = view.AllEntries
   
   
pathName$="D:\Test\"
If pathName$  = "" Then
   Msgbox"Pfad oder Dateien nicht vorhanden"
      
End If
   
filename$ =Dir$(pathName$+"*.pdf",0)
   Do While fileName$<>""
   A = filename$ + "#" + typ$
   searchFormula = |Dateiname = "| + A  +|"|
   Set collection = db.Search(searchFormula$, Nothing,0)
   Call collection.RemoveAll(True)
   ' RemoveAttachments = True
   fileName$=Dir$()
Loop      'Messagebox("ende erste Schleife")   
      
   filename$ =Dir$(pathName$+"*.pdf",0)
      
Do While fileName$<>""
   Set doc =db.CreateDocument
   Print fileName$
   doc.Form="Main Topic"
   Set rtitem =New NotesRichTextItem(doc, "Body")
   Set notesembeddedobject = rtitem.EmbedObject(EMBED_ATTACHMENT,"",pathName$+fileName$)

      Call doc.ComputeWithForm(False, False)
      Call doc.Save(True, True)
      fileName$=Dir$()
Loop   

Call doc.ComputeWithForm(False, False)
Call doc.Save(True, True)
fileName$=Dir$()   

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe für Anänge aktualisieren
« Antwort #1 am: 05.06.06 - 22:48:07 »
Das Verfahren finde ich etwas "schräg". Warum löschst Du denn überhaupt die Dokumente, anstatt aus den gefundenen Dokumenten nur die Attachments, um sie dann erneut anzuhängen? Mit NotesEmbeddedObject.Remove ist das doch kein Problem.
Auch das Problem mit den "nicht zu setzenden Berechtigungen" erschliesst sich aus Deinem Posting nicht wirklich.

Sag' mal genaueres zu Deinem Problem.

Bernhard

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #2 am: 06.06.06 - 09:02:33 »
Hallo,

joo, das ist eben mein Problem, nämlich die gefundenen Dokumente nur die Attachments erneut anzuhängen. Ich habe es bisjetzt nicht hinbekommen.

Mit NotesEmbeddedObject.Remove kann ich die Anhänge wahrschienlich löschen, ich möchte aber die gefundene Dokumente dann erneut anhängen.

Wie geht es weiter?

Danke

Nyen

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #3 am: 07.06.06 - 10:54:11 »
Hallo,

Es klappt einfach nicht. Mit folgendem Code werden die Anhänge gelöscht, jedoch nicht die gefundene nicht erneut angehängt.

Wo liegt der Feher ?

Kann jemand mir bitte helfen, es ist drigend !!!!

Danke

Nyen

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim strFilename As String
   Const strPath = "D:\Temp\"
   Set db = session.CurrentDatabase
   Set collection = db.AllDocuments
   Set doc = collection.GetFirstDocument()
   While Not(doc Is Nothing) 
      If doc.HasEmbedded Then
         Call detachFiles( doc )
      End If
      Set doc = collection.GetNextDocument(doc)
   Wend
End Sub

Sub detachFiles( doc As NotesDocument )
   Dim rtitem As Variant
   Set rtitem = doc.GetFirstItem( "Body" )
   Forall o In rtitem.EmbeddedObjects
      If o.Type = EMBED_ATTACHMENT Then 
         strFilename = strPath & o.Source
         'Call o.ExtractFile(strFilename & o.Source )
         Call o.Remove
         Call doc.Save( True, True )   
      End If
   End Forall
   'Anhängen der Datei
   Set rtitem = doc.GetFirstItem( "Body" )
   Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", strFilename)
End Sub

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Hilfe für Anänge aktualisieren
« Antwort #4 am: 07.06.06 - 10:59:42 »
So auf die Schnelle: Zuunterst im Sub "detachFiles" müsste nochmal ein "doc.Save" hin.

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #5 am: 07.06.06 - 13:00:53 »
Hat es leider nichts gebracht !

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Hilfe für Anänge aktualisieren
« Antwort #6 am: 07.06.06 - 13:43:59 »
In deiner Routine detachFiles fehlt mir so einiges, vor allem an Deklarationen.

Versuch das Ganze mal so:

Sub detachFiles( doc As NotesDocument )

Dim rtitem As NotesRichtextItem
Dim object As NotesEmbeddedObject
Dim strFilename As String

Const strPath = "D:\Temp\"


 
  Set rtitem = doc.GetFirstItem( "Body" )
   Forall o In rtitem.EmbeddedObjects
      If o.Type = EMBED_ATTACHMENT Then 
         strFilename = strPath & o.Source
         'Call o.ExtractFile(strFilename & o.Source )
         Call o.Remove
      End If
   End Forall
   'Anhängen der Datei
   Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", strFilename)
         Call doc.Save( True, True )   

End Sub


Noch ein Tipp am Rande: Trage überall, wo du Script verwendest in den (Options) - Abschnitt Option Declare ein. Dann kann dir das mit den vergessenen Deklaration zumindest nicht mehr passieren.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #7 am: 07.06.06 - 15:04:29 »
Danke Axel,

jetzt funktioniert es soweit, allerdings sollen neue Dokumente (Anhänge) auch erstellt werden. Wie kann man am Einfachsten hinkriegen, wenn neue dazu kommen.

Für einen schnellen Tip wäre super.

Gruß
Nyen

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Hilfe für Anänge aktualisieren
« Antwort #8 am: 07.06.06 - 15:48:26 »
Was heisst wenn neue dazukommen?



Weitere Dokumente kannst du mit

     Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", strFilename)

anhängen


Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #9 am: 07.06.06 - 16:17:20 »
Mit diesem Code werden nur in Dokumenten gefundene Anhänge aktualisiert (Anhänge erstetzt).  Da neue Dateien in Pfad C:\Temp  hinzukommen, können noch nicht importiert´werden. 

Er soll neue Dokumente erstellen, wenn er z. B.im Pfad C:\Temp neue Dateien findet, die in der NotesDB noch nicht existieren.

Nyen

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Hilfe für Anänge aktualisieren
« Antwort #10 am: 07.06.06 - 19:50:48 »
Heisst das, dass alles was in c:\temp an Dateien vorhanden ist in die DB aufgenommen werden muss, oder nur bestimmte?

Wenn alle, dann kannst du mit dem Dir-Befehl durch das Verzeichnis loopen und für jede Datei ein neues Dokument anlegen und die Datei anhängen.

In der Desinger-Hilfe findest du die entsprechenden Infos.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe für Anänge aktualisieren
« Antwort #11 am: 07.06.06 - 20:10:18 »
Ich hatte ja schon mal erwähnt: Das bisherige Verfahren ist "schräg". Und wir können hier für Dich und Deine Firma nicht die Architektur und das Handwerk für eine Applikation bieten.
Tip: Das db.Search ist in diese mFall kontraproduktiv. Arbeite mit einer entsprechenden View und einem NotesView.GetDocumentByKey. Wird das Dokument an Hand des PDF-Filenames gefunden: Attachment entfernen und neu anhängen (wie bisher). Wenn nicht, dann neues Dokument erstellen und das betreffende Attachment anhängen.

Mehr mag ich nicht mehr dazu sagen.

Bernhard

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Hilfe für Anänge aktualisieren
« Antwort #12 am: 08.06.06 - 13:13:29 »
Um auf dein 1. Posting mal einzugehen: Warum setzt Du die Berechtigungen nicht von via Agent?
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #13 am: 08.06.06 - 16:56:40 »
Wenn ich wüßte wie, dann würde ich mir diesen Aufwand sparen.

Also, ich kenne bisjetzt keinen Agenten, der die Berechtigungen täglich aktualisiert. Hast du einen Lösungsansatz? Wäre natürleich eine Alternative!

Gruß
Nyen


Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Hilfe für Anänge aktualisieren
« Antwort #14 am: 09.06.06 - 09:15:59 »
Ich nehme jetzt einfach mal an, dass die Berechtigungen auf Leser/Autorenfelder basiert. Diese kannst Du ja via Script abfüllen/erstellen (auf richtigen Typ achten) z.B. mit
set lesefeld = new Item(notesdoc,"Lesefeld","Leser/TEST",READERS)
oder mit
set autorenfeld = new Item(notesdoc,"Autorenfeld","Autor/Test",AUTHORS)

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #15 am: 09.06.06 - 11:18:30 »
Das klingt gut, aber um dies zu realisieren müßte ich zuerst für jeden Wert meines Schlüsselfeldes eine Role definieren, um Dokumente zu beschränken, wie z. B. @If Feld= Wert; meine Role, bzw. eine Role zu meheren Werte zuweisen, oder?

Dann müße ich über 100 Rolen definieren, ich weß nicht, ob das geht?


Gruß
Nyen

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe für Anänge aktualisieren
« Antwort #16 am: 09.06.06 - 11:35:36 »
Ich verstehe jetzt Bahnhof ... Wie werden denn bisher Berechtigungen vergeben? Und warum sollte das nun auf einmal anders werden?

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Hilfe für Anänge aktualisieren
« Antwort #17 am: 09.06.06 - 11:38:05 »
Dann müße ich über 100 Rolen definieren, ich weß nicht, ob das geht?

Das geht nicht. Es sind max. 75 Rollen in der ACL möglich.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline nyen

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: Hilfe für Anänge aktualisieren
« Antwort #18 am: 09.06.06 - 13:44:45 »
Ich glaube, dass Bernhard die Problematik noch nicht verstanden hat. Bisher konnten die Berechtigungen nicht auf Dokumentenebene vergeben werden, sondern nur in der ACL Lesen. Da die Dokumente täglich aktualisert und neu angelegt werden, habe ich hier ein Problem mit Berechtigung für bestimmte Dokumente zu vergeben.

Ich werde doch mit einer View und einem NotesView.GetDocumentByKeyNyen versuchen.


Nyen


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Hilfe für Anänge aktualisieren
« Antwort #19 am: 09.06.06 - 14:07:00 »
Nein, ich habe das noch immer nicht verstanden, da Du über Dein Berechtigungskonzept keine Aussage getroffen hast (oder ich habe es überlesen).

Ob Dukumente aktualisiert oder neu angelegt werden, hat doch mit dem Berechtigungskonzept nichts zu tun oder mit NotesView.GetDocumentByKey.
Und wenn Du bisher schon ein Berechtigungskonzept hattest, kann dass doch auch in die neuen Routinen einfliessen.
Ich verstehe es also immer noch nicht.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz