Autor Thema: Problem mit der Übergabe von Dokumenten unter R5  (Gelesen 2517 mal)

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Hi,
Ich will mit Lotus Script einige Dokumente von einer DB in eine andere verschieben/kopieren.
Mit Paste und Drop funktioniert es nicht.
Die Felder sind unterschiedlich angelegt.
Ich habe auch noch die *.csv-Listen, aber die sind so aufgebaut, so dass diese nur in die Original Datenbank eingehen.
Mit der Kopiererei von Masken geht es nicht, da die Listen anders aufgebaut sind.
Tja was kann Ich außer der Maskenkopiererei noch machen?
Ich habe hier einen Code der Leider nicht so funktioniert wie Ich es will.

Leider funktioniert dieser tolle Code nicht.
Es kommt immer die Fehlermeldung:

variant does not contain an object

Ich weiß auch nicht so direkt was Ich falsch gemacht habe.
Hier ist ersteinmal der Code:

Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim Doc As notesDocument
Dim DocNeu As NotesDocument
Dim dc As NotesDocumentCollection
Dim View As NotesView
Dim item As NotesItem
Dim datum As NotesDateTime
Set db= s.CurrentDatabase
' Hier deine neue Datenbank angeben inkl. Pfadangaben etc.
adbName = "H:\Notes\data\Test3.nsf"
Dim NewDb As New NotesDatabase(db.Server, adbName)
If Not newDb.isopen Then
Call newdb.open("","")
End If
' alle Dokumente der alten DB ranholen für Verarbeitung
Set dc = db.AllDocuments
' Alle Dokumente verarbeiten, die in dc enthalten sind
For i = 1 To dc.count
' Document aus Dokumentcollection holen
Set doc = dc.GetNthDocument(i)
' welche Maske haben wir denn da, speichern wir mal in Variablen Maske
If doc.HasItem("FfrmBookBasics") Then
Maske = doc.frmBookBasics(0)
Else
Maske = "" ' Fehler, keine weitere Verarbeitung
End If
Maske=Item.Text
' in Zieldatenbank Document erstellen
Set docneu = newdb.CreateDocument
'Jetzt fragen wir mal, welches Dokuemnt wir gegriffen haben, danmit wir dann richtig weiterarbeiten
If Maske = "frmBookBasics" Then
docneu.Test_D = "frmBookBasics"
docneu.Name_T = doc.fldnumBookNr
docneu.Tel_T = doc.fldtxtBooktitle

'und so weiter
End If
' neues Dokument muß natürlich auch gespeichert werden, sonst bringt das alles nichts
Call docneu.Save(True, False)
' und Zurück zum Anfang der Zählschleife, es geht weiter mit dem nächsten Dokument
Next
End Sub
Dieser Code steht in der Initialize und in den Optoins steht:
Option Public

Dieser Code ist ein Agent, welcher in originalen DB vorhanden ist.
PS ist alles unter R5.

Ich hoffe Ich konnte Ihnen einige Infos zureichen.
Ich würde mich über jede art von Hilfe freuen.
Ich danke Ihnen schon einmal im Voraus.
MfG PAR003


klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #1 am: 24.06.03 - 11:49:38 »
... in welcher zeile steigt er aus (debuggen) ?

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Er steigt aus bei...
« Antwort #2 am: 24.06.03 - 12:03:55 »
Hi,
der Debugger steigt bei:
Maske=Item.Text
aus.

thnx PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #3 am: 24.06.03 - 12:10:54 »
... ITEM scheint nicht gesetzt zu sein.

ich hab das mal so gelöst:
Code
'-------- und jetzt die neuen erstellen
   Set view = dbvon.getView("neue_docs")
   Set doc = view.getfirstDocument
   Do While Not doc Is Nothing
      Set docNew = dbziel.createDocument
      Call doc.CopyAllItems(docNew, True)
      Call docNew.Save(True, True)
      Set doc = view.getNextDocument(doc)
   Loop

vielleicht hilft's.

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #4 am: 24.06.03 - 12:27:42 »
Hi,
wenn Ich hre Formel einsetze so springt der Debugger schon bei:

Set view = dbvon.getView("neue_docs")

raus.
PS. Ich bin FOS-Praktikant und beschäftige mich erst seit anfang März mit der DB-Programmierung.

MfG PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #5 am: 24.06.03 - 12:46:59 »
... klaro, da fehlen ja auch noch die ganzen dim und set anweisungen.
ich weiss nicht, ob es viel sinn macht, den kompletten code zu posten, wenn das "gegenüber" keine ahnung davon nicht hat.

wenn man leute an solche aufgaben setzt, dann sollen die auch eine ausbildung bekommen.

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #6 am: 24.06.03 - 12:55:02 »
Hi,
bei mir ist es halt so das Ich ein FOS-Praktikant bin.
Das was Ich machen soll ist ein Projekt zu bearbeiten.
Thnx PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #7 am: 24.06.03 - 12:58:12 »
... ich habe erbarmen:
Code
Sub Initialize
   Dim doc As NotesDocument
   Dim docNew As NotesDocument
   Dim docRemove As NotesDocument
   Dim view As NotesView
   Dim dbvon As NotesDatabase
   Dim dbziel As NotesDatabase
   Dim session As NotesSession
   Dim viewneuedocs As notesview
   Dim strServer As String
   Dim zaehl1 As Integer
   Dim zaehl2 As Integer
   
   Set session = New NotesSession
   Set dbvon = session.currentDatabase
   strServer = dbvon.server
   Set dbziel = session.GetDatabase(strServer , "xxx\yyy.nsf")
   Set docNew = dbziel.createDocument
   
   If Not dbziel.isOpen Then
      strFehler = "Zieldatenbank : xxxx lässt sich nicht öffnen"
      Exit Sub
   End If
   
   '-------- zuerst die alten documente löschen
   zaehl1 = 0   
   Set viewneuedocs = dbziel.getview("neue_docs_aus_xxx")
   Set docRemove = viewneuedocs.getfirstDocument   
   Do While Not docRemove Is Nothing
      Call docRemove.Remove(True)
      zaehl1 = zaehl1 + 1
      Call viewneuedocs.refresh
      Set docRemove = viewneuedocs.getfirstDocument   
   Loop
   
   '-------- und jetzt die neuen erstellen
   zaehl2 = 0
   Set view = dbvon.getView("neue_docs")
   Set doc = view.getfirstDocument
   Do While Not doc Is Nothing
      Set docNew = dbziel.createDocument
      Call doc.CopyAllItems(docNew, True)
      docNew.neu = "1"
      Call docNew.Save(True, True)
      zaehl2 = zaehl2 + 1
      Set doc = view.getNextDocument(doc)
   Loop
   
   '------------------------------------------------------------
   ' protokoll erstellen
   Dim docProtokoll As NotesDocument
   Dim rtitem As NotesRichTextitem
   Dim agent As NotesAgent
   Dim dateTime As New NotesDateTime( "" )
   Dim varDummy As Variant
   Set agent = session.CurrentAgent
   Set docProtokoll = dbvon.createDocument
   
   docProtokoll.form = "protokoll"
   docProtokoll.name = agent.Name
   Call dateTime.SetNow
   'Set docProtokoll.datum_agent = dateTime
   Set rtitem = New NotesRichTextItem (docProtokoll, "protokoll")   
   Call rtitem.AppendText( "Anzahl Dokumente gelöscht :" + Cstr(zaehl1))
   Call rtitem.AddNewLine( 1 )
   Call rtitem.AppendText( "Anzahl Dokumente neu        :" + Cstr(zaehl2))
   varDummy = docProtokoll.ComputeWithForm( False, False )
   Call docProtokoll.Save( False, True )
   
End Sub

die namen müssten angepasst werden.

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
NIcht direkt was Ich wollte.
« Antwort #8 am: 24.06.03 - 14:55:31 »
Hi,
Eigentlich will Ich die originale Maske nicht mehr benutzen.
Bloß wenn Ich sie weglasse so kommt eine Fehlermeldung.
Ich will nur die Dokumente haben.
Die  originale Maske würde Ich gerne verwerfen und nur noch die neue benutzen.
Hier ist der "umgewandelte" Code:
Sub Initialize
   Dim doc As NotesDocument
   Dim docNew As NotesDocument
   Dim docRemove As NotesDocument
   Dim view As NotesView
   Dim dbvon As NotesDatabase
   Dim dbziel As NotesDatabase
   Dim session As NotesSession
   Dim viewneuedocs As notesview
   Dim strServer As String
   Dim zaehl1 As Integer
   Dim zaehl2 As Integer
   
   Set session = New NotesSession
   Set dbvon = session.currentDatabase
   strServer = dbvon.server
   Set dbziel = session.GetDatabase(strServer , "Test3.nsf")
   Set docNew = dbziel.createDocument
   
   If Not dbziel.isOpen Then
      strFehler = "Zieldatenbank : Test3.nsf lässt sich nicht öffnen"
      Exit Sub
   End If
   
   
   
   '-------- und jetzt die neuen erstellen
   zaehl2 = 0
   Set view = dbvon.getView(" BookNr_V")
   Set doc = view.getfirstDocument
   Do While Not doc Is Nothing
      Set docNew = dbziel.createDocument
      Call doc.CopyAllItems(docNew, True)
      docNew.neu = "1"
      Call docNew.Save(True, True)
      zaehl2 = zaehl2 + 1
      Set doc = view.getNextDocument(doc)
   Loop
   
   '------------------------------------------------------------
   ' protokoll erstellen
   Dim docProtokoll As NotesDocument
   Dim rtitem As NotesRichTextitem
   Dim agent As NotesAgent
   Dim dateTime As New NotesDateTime( "" )
   Dim varDummy As Variant
   Set agent = session.CurrentAgent
   Set docProtokoll = dbvon.createDocument
   
   docProtokoll.form = "protokoll"
   docProtokoll.name = agent.Name
   Call dateTime.SetNow
   'Set docProtokoll.datum_agent = dateTime
   Set rtitem = New NotesRichTextItem (docProtokoll, "protokoll")  
   Call rtitem.AppendText( "Anzahl Dokumente gelöscht :" + Cstr(zaehl1))
   Call rtitem.AddNewLine( 1 )
   Call rtitem.AppendText( "Anzahl Dokumente neu        :" + Cstr(zaehl2))
   varDummy = docProtokoll.ComputeWithForm( False, False )
   Call docProtokoll.Save( False, True )
End Sub


Thnx PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #9 am: 24.06.03 - 16:24:04 »
... zeile docNew.neu = "1" kann raus.

anstatt "copyallItems" muss dann feld für feld gemoved werden.
docNeu.form = "deinmaskenname"
docNeu.neuerfeldname = doc.alterfeldname(0)
usw.
usw.
achtung bei felder, die wo mehrfachwerte haben !

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Wo soll Ich die sachen denn einsetzen?
« Antwort #10 am: 25.06.03 - 09:35:59 »
Hi,
Eine Frage soll Ich jetzt die Sachen rausnehmen:

Call doc.CopyAllItems(docNew, True)
      docNew.neu = "1"

und dann dafür die Formeln einsetzen, welche Sie mir gegeben haben?

Thnx PAR003

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Original-Maske wird mit übernommen!!!
« Antwort #11 am: 25.06.03 - 09:43:03 »
Hi,
Leider wird jetzt immer noch die Maske mit übernommen.
Wie kann Ich das abstellen?
Thnx PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #12 am: 25.06.03 - 09:51:55 »
... hatte ich doch geschrieben:

copyallitems und neu = 1 müssen raus.
dafür die felder einzeln moven.

unter docNew.form = "hierkommtderMaskennamerein" muss jetzt der name der maske in der empfangenden db stehen.

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Habe jetzt mal die Felder umgetauscht. Aber es gibt noch Fehler!!!
« Antwort #13 am: 25.06.03 - 09:52:02 »
Hi,
Ich habe jetzt mal die Felder umgetauscht.
Jetzt wird nicht die Maske übernommen, aber die Werte auch nicht.
Wo liegt mein Fehler?
Thnx PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #14 am: 25.06.03 - 09:54:53 »
... schick mir doch mal bitte den code. das geht unter ... eine private nachricht schicken. sonst wird mir der thread hier zu lang.

Offline PAR003

  • Frischling
  • *
  • Beiträge: 30
  • Ich liebe dieses Forum!
Hier ist mein derzeitiger Code
« Antwort #15 am: 25.06.03 - 09:57:47 »
Hi,
Ich gebe Ihnen einfach mal den Code, den Ich derzeit für einen solchen Dokumenten Transfer benutze.

-->>

Sub Initialize
   Dim doc As NotesDocument
   Dim docNew As NotesDocument
   Dim docRemove As NotesDocument
   Dim view As NotesView
   Dim dbvon As NotesDatabase
   Dim dbziel As NotesDatabase
   Dim session As NotesSession
   Dim viewneuedocs As notesview
   Dim strServer As String
   Dim zaehl1 As Integer
   Dim zaehl2 As Integer
   
   Set session = New NotesSession
   Set dbvon = session.currentDatabase
   strServer = dbvon.server
   Set dbziel = session.GetDatabase(strServer , "Test3.nsf")
   Set docNew = dbziel.createDocument
   
   If Not dbziel.isOpen Then
      strFehler = "Zieldatenbank : Test3.nsf lässt sich nicht öffnen"
      Exit Sub
   End If
   
   
   
   '-------- und jetzt die neuen erstellen
   zaehl2 = 0
   Set view = dbvon.getView(" BookNr_V")
   Set doc = view.getfirstDocument
   Do While Not doc Is Nothing
      Set docNew = dbziel.createDocument
      docNew.form = "Test_D"
      docNew.Name_T = Bookauthor_T
      docNew.Zahl_N = BookNr_N
      
      
      
      docNew.neu = "1"
      Call docNew.Save(True, True)
      zaehl2 = zaehl2 + 1
      Set doc = view.getNextDocument(doc)
   Loop
   
   '------------------------------------------------------------
   ' protokoll erstellen
   Dim docProtokoll As NotesDocument
   Dim rtitem As NotesRichTextitem
   Dim agent As NotesAgent
   Dim dateTime As New NotesDateTime( "3" )
   Dim varDummy As Variant
   Set agent = session.CurrentAgent
   Set docProtokoll = dbvon.createDocument
   
   docProtokoll.form = "protokoll"
   docProtokoll.name = agent.Name
   Call dateTime.SetNow
   'Set docProtokoll.datum_agent = dateTime
   Set rtitem = New NotesRichTextItem (docProtokoll, "protokoll")  
   Call rtitem.AppendText( "Anzahl Dokumente gelöscht :" + Cstr(zaehl1))
   Call rtitem.AddNewLine( 1 )
   Call rtitem.AppendText( "Anzahl Dokumente neu        :" + Cstr(zaehl2))
   varDummy = docProtokoll.ComputeWithForm( False, False )
   Call docProtokoll.Save( False, True )
End Sub



-->>
Ich hoffe das genügt Ihnen als Information.
Thnx PAR003

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #16 am: 25.06.03 - 10:04:00 »
...

docNew.Name_T = Bookauthor_T
MUSS heissen .... = doc.Bookauthor_T(0)

hatte ich oben bereits geschrieben. man sollte auch lesen können.
was unter "form" steht, ist der name der maske in der empfangs-db !

man sollte schon ein rudimentäres grundwissen haben, sonst ist das ganze für den müll....  ;)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #17 am: 25.06.03 - 13:23:32 »
@Klaussal

... Geduld, Geduld - wir haben alle mal angefangen und hätten perfekte Lösung gebraucht - wobei ich nicht sagen will, daß du nicht ganz unrecht hast...


@Par003

... du hast neben den flschen Zuweisungen auch im NotesDateTime eine Zuweisung, die ich für falsch halte - da muß ein Datum übergeben werden - und "3" ist kein Datum

... Felder übergibst du dem nächsten Dokument wie bereits von Klaus beschrieben...

ata
Grüßle Toni :)

klaussal

  • Gast
Re:Problem mit der Übergabe von Dokumenten unter R5
« Antwort #18 am: 25.06.03 - 13:27:38 »
@ata,

ja ja ich weiss, etwas zu ungeduldig. aber wenn man (nicht du) schon abschreibt, dann bitte auch richtig.  das mit der "3" war ich nicht. mein vorlage sah da anders aus.
naja, ich gelobe mehr geduld in zukunft  ;)

p.s.
ist die cd angekommen ?
« Letzte Änderung: 25.06.03 - 13:28:11 von klaussal »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz