Autor Thema: Textinhalt in anderes Dokument kopieren  (Gelesen 7023 mal)

Offline Mich90

  • Frischling
  • *
  • Beiträge: 19
Textinhalt in anderes Dokument kopieren
« am: 08.06.11 - 10:58:07 »
Guten Morgen liebe Community,

ich möchte von einem Dokument den Inhalt eines Textfeldes in ein Textfeld eines anderen Dokuments kopieren. Dabei müssen allerdings die Ländernamen der beiden Dokumente übereinstimmen  ;)

Meines Erachtens müsste das folgendermaßen gehen:
  • alle Dokumente der anderen Maske durchlaufen
  • prüfen, ob Ländernamen identisch sind
  • wenn identisch, dann Feldinhalt mit neuem Inhalt ersetzen (vorher in den Editiermodus)
  • Dokument speichern und schließen


Nun habe ich angefangen:
Code
Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim feldZuKopieren As NotesItem
Dim land As NotesItem
Dim feldZuKopierenInhalt  As String
Set uidoc = ws.CurrentDocument
Set db = session.CurrentDatabase
Set doc = New NotesDocument ( db )
     'hole aus dem geöffneten Dokument den Inhalt des zu kopierenden Feldes
Set feldZuKopieren = uidoc.Document.GetFirstItem("fldProd_Indications_User")
Set feldZuKopierenInhalt = feldZuKopieren.Text
Msgbox feldZuKopierenInhalt   'Ausgabe zum Test
'Land-Feld speichern
Set land = uidoc.Document.GetFirstItem("fldCou_Name")
Msgbox land.Text
'hier werden alle Dokumente der Maske frmCatalog_Country durchlaufen
Dim coll As NotesDocumentCollection
Dim docAdmin As NotesDocument
Set coll=db.search(|Form="frmCatalog_Country"|, Nothing, 0)
Set docAdmin=coll.getfirstdocument
While Not docAdmin Is Nothing
'prüfen, ob Land übereinstimmt
If docAdmin.GetFirstItem("fldCou_Name") = land Then
'Inhalt des Feldes ersetzen
docAdmin.ReplaceItemValue("fldProd_Indications", feldZuKopierenInhalt) 'FEHLER
'Dokument speichern und schließen
Call docAdmin.Save(1,1)
End If
'nächstes Dokument
Set docAdmin=coll.getnextdocument(docAdmin)
Wend
Call uidoc.Document.Save(1,1) 'aktuelles Dokument am Ende noch speichern
End Sub

Ist meine Logik im Quelltext korrekt? Ich bekomme in der Zeile mit
docAdmin.ReplaceItemValue("fldProd_Indications", feldZuKopierenInhalt)
einen Fehler "Illegal use of parentheses".
Woran liegt das? ???

Gruß,
Micha
« Letzte Änderung: 15.06.11 - 15:21:47 von Mich90 »

klaussal

  • Gast
Re: Textinhalt in anderes Dokument kopieren
« Antwort #1 am: 08.06.11 - 11:08:42 »
In der Designer-Hilfe steht die Lösung...    :o

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Textinhalt in anderes Dokument kopieren
« Antwort #2 am: 08.06.11 - 11:11:41 »
Um den Tipp von Klauss etwas spezifischer zu machen:
Du willst ein Set oder Call vor dem Aufruf (ReplaceItemValue liefert ja was zurück).


Und noch ein Nota-Bene aus der Designer-Hilfe zu ReplaceItemValue:
Zitat
Do not use this method to replace the value of a rich text item (or MIME entity) unless you want to change it to a text item. To replace the contents of a rich text item, use NotesDocument.RemoveItem or NotesRichTextItem.Remove to delete the old item, NotesDocument.CreateRichTextItem to create a new one with the same name, and NotesRichTextItem.AppendText and other methods to provide the new content.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Textinhalt in anderes Dokument kopieren
« Antwort #3 am: 08.06.11 - 11:23:21 »
Alternative: Wenn Du kein Set oder Call verwendest, dann lass die Klammern für die Parameter weg - passend zur Fehlermeldung.
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

klaussal

  • Gast
Re: Textinhalt in anderes Dokument kopieren
« Antwort #4 am: 08.06.11 - 11:23:42 »
Wenn das Dokument gefunden wurde, ist dann die Schleife nicht zu Ende ?

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Textinhalt in anderes Dokument kopieren
« Antwort #5 am: 08.06.11 - 11:26:27 »
Noch'n Tipp: True ist in Script nicht 1, sondern -1 (i.G. zur Formelsprache).
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Textinhalt in anderes Dokument kopieren
« Antwort #6 am: 08.06.11 - 11:29:07 »
Noch'n Tipp: True ist in Script nicht 1, sondern -1 (i.G. zur Formelsprache).
Wobei "True" bzw. "False" als Werte sowieso lesbarer sind.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Textinhalt in anderes Dokument kopieren
« Antwort #7 am: 08.06.11 - 11:35:39 »
Noch'n Tipp: True ist in Script nicht 1, sondern -1 (i.G. zur Formelsprache).
Wobei "True" bzw. "False" als Werte sowieso lesbarer sind.

Jupp, würde ich auch immer so schreiben - True/False liest sich einfach besser und eine Zahl kann ja auch eine andere Bedeutung in einer Parameterliste haben...
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline Mich90

  • Frischling
  • *
  • Beiträge: 19
Re: Textinhalt in anderes Dokument kopieren
« Antwort #8 am: 08.06.11 - 13:37:34 »
Hallo,

vielen Dank für die vielen Tipps.

Ich habe mein Skript nun folgendermaßen geändert:

Code
Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim land As NotesItem
Dim feldZuKopierenIndication As NotesItem
Dim feldZuKopierenInhaltIndication  As String
Dim feldZuKopierenAI As NotesItem
Dim feldZuKopierenInhaltAI  As String
Dim feldZuKopierenBrand As NotesItem
Dim feldZuKopierenInhaltBrand  As String
Dim neu As String
Set uidoc = ws.CurrentDocument
Set db = session.CurrentDatabase
Set doc = New NotesDocument ( db )
     'hole aus dem geöffneten Dokument den Inhalt des zu kopierenden Feldes
Set feldZuKopierenIndication = uidoc.Document.GetFirstItem("fldProd_Indications_User")
feldZuKopierenInhaltIndication = feldZuKopierenIndication.Text
'Simikolons ersetzen
feldZuKopierenInhaltIndication = Evaluate({@ReplaceSubstring("} & feldZuKopierenInhaltIndication & {";";Chr(10)}) 'FEHLER
Msgbox feldZuKopierenInhaltIndication   'Ausgabe zum Test
Set feldZuKopierenAI = uidoc.Document.GetFirstItem("fldProd_Products_User")
feldZuKopierenInhaltAI = feldZuKopierenAI.Text
Set feldZuKopierenBrand = uidoc.Document.GetFirstItem("fldProd_Brands_User")
feldZuKopierenInhaltBrand = feldZuKopierenBrand.Text
'Land-Feld speichern
Set land = uidoc.Document.GetFirstItem("fldCou_Name")
Msgbox land.Text
'hier werden alle Dokumente der Maske frmCatalog_Country durchlaufen
Dim coll As NotesDocumentCollection
Dim docAdmin As NotesDocument
Dim itemCopy As NotesItem
Set coll=db.search(|Form="frmCatalog_Country"|, Nothing, 0)
Set docAdmin=coll.getfirstdocument
While Not docAdmin Is Nothing
'prüfen, ob Land übereinstimmt
If docAdmin.GetFirstItem("fldCou_Name").Text = land.Text Then
'Inhalt des Feldes ersetzen
docAdmin.fldProd_Indications = feldZuKopierenInhaltIndication
docAdmin.fldProd_Products = feldZuKopierenInhaltAI
docAdmin.fldProd_Brands = feldZuKopierenInhaltBrand
'Dokument speichern und schließen
'Call docAdmin.Save(True,True)
Call ws.EditDocument(True,docAdmin)
End If
'nächstes Dokument
Set docAdmin=coll.getnextdocument(docAdmin)
Wend
Call uidoc.Document.Save(True,True) 'aktuelles Dokument am Ende noch speichern
End Sub

Wie man sieht, möchte ich aus einem Feld (bzw. später aus mehreren) die ";" zu "Chr(10)", also einem Zeilenumbruch (Klick auf Enter) ändern. Hierbei handelt es sich um Felder mit Mehrfacheinträgen. Diese werden beim auslesen wohl mit einem ";" getrennt, was mein Einfügen natürlich wieder geändert werden müsste...

Das Ersetzen klappt allerdings nicht (siehe Kommentar : Fehler). Hier wird der Fehler:
Operation failed
ausgegeben. Das ist natürlich nicht wirklich aussagekräftig.
Kann mir an der Stelle jemand weiterhelfen?

Danke schön  ^-^

Mitch

  • Gast
Re: Textinhalt in anderes Dokument kopieren
« Antwort #9 am: 08.06.11 - 14:16:51 »
Naja, du hast Fehler in der Formel die du ins Evaluate steckst.

Tipp: Schreibe die Formel erstmal auf, ohne da direkt deine dynamischen Parameter einzubauen. Das ist einfacher, da man mit den Anführungszeichen und Semikolons nicht so schnell durcheinander kommt:

@ReplaceSubstring("hieristtext"; ";"; @NewLine)

Danach kannst du deine Variable einbauen:

{@ReplaceSubstring("} & meinevariable$ & {"; ";" ; @NewLine)}

Und schon klappt's. ;)

Offline Mich90

  • Frischling
  • *
  • Beiträge: 19
Re: Textinhalt in anderes Dokument kopieren
« Antwort #10 am: 08.06.11 - 14:39:26 »
Stimmt, da war ein Fehler drin.
Code
feldZuKopierenInhaltIndication = Evaluate({@ReplaceSubstring("} & feldZuKopierenInhaltIndication & {"; ";" ; @NewLine)})

ergibt aber leider ein "Type Mismatch"  ???
Das versteh ich nicht wirklich.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Textinhalt in anderes Dokument kopieren
« Antwort #11 am: 08.06.11 - 14:42:03 »
Liest Du auch die Hilfe? Was gibt Evaluate zurück? Bestimmt keinen String ...

Bernhard

Offline Mich90

  • Frischling
  • *
  • Beiträge: 19
Re: Textinhalt in anderes Dokument kopieren
« Antwort #12 am: 08.06.11 - 14:46:24 »
Liest Du auch die Hilfe? Was gibt Evaluate zurück? Bestimmt keinen String ...

Bernhard

Peinlich, danke  :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz