Autor Thema: Textinhalt in anderes Dokument kopieren  (Gelesen 6900 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