Autor Thema: Return im Textfeld entfernen  (Gelesen 10585 mal)

Offline Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Return im Textfeld entfernen
« am: 23.04.07 - 12:22:14 »
Hallo,

die User haben teilweise in einem Textfeld ein Return gesetzt.
Dieses Return möchte ich nachträglich entfernen, da ich sonst
Probleme bei der Auswertung (Export in txt oder csv) habe.

Bislang habe ich es mit diesem Agenten versucht - leider ohne Erfolg

Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim anzDoks As Double
   
   Set db = S.CurrentDatabase
   Set view =db.GetView ("(Umfrage_PR)")                              ' Ansichtsname
   Set collection = db.UnprocessedDocuments            ' ausgewähle Dokumente
   Set doc = collection.GetFirstDocument
   
   anzDoks = 0
   
   While Not(doc Is Nothing)
      anzDoks = anzDoks + 1
      Print anzDoks
      
      Dim varResult As Variant
      Dim varResult2 As Variant
      
      Const strFormula = |@ReplaceSubString(U_Antwort_5 ;@Newline;" ") |
      Const strFormula2 = |@ReplaceSubString(U_Antwort_5b ;@Newline;" ") |
      
      varResult = Evaluate(strFormula, doc)
      varResult2 = Evaluate(strFormula2, doc)
      
      doc.U_Antwort_5 = varResult
      doc.U_Antwort_5b = varResult2
      
      Call doc.save(True,True)      
      
      Set doc = collection.GetNextDocument( doc)
   Wend
   
   Msgbox "Es wurden "& anzDoks & " Dokumente angepasst"
   
End Sub

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Return im Textfeld entfernen
« Antwort #1 am: 23.04.07 - 12:38:36 »
Dim CrLf As String
Dim PosOfCrLf As Integer
Const spaces = " " ' 2 spaces

CrLf = Chr$(13) & Chr$(10) ' Carriage Return and a Line Feed character

PosOfCrLf = Instr(Stringfield, CrLf)
While PosOfCrLf > 0
Mid$(stringfield, PosOfCrLf, 2) = spaces
PosOfCrLf = Instr(stringfield, CrLf)
Wend

Anywhere in the string that Chr$(13) and Chr$(10) appear together will be replaced by two spaces.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

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: Return im Textfeld entfernen
« Antwort #2 am: 23.04.07 - 12:44:13 »
Um welche Domino-Version handelt es sich hier denn?

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

Offline Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Return im Textfeld entfernen
« Antwort #3 am: 23.04.07 - 13:31:49 »
Domino 6.55

Offline LohCon

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
  • 42 ...
Re: Return im Textfeld entfernen
« Antwort #4 am: 23.04.07 - 16:53:51 »
... oder ersetze in Deiner Formel @NewLine durch -> @Char(0)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Return im Textfeld entfernen
« Antwort #5 am: 23.04.07 - 23:18:44 »
Sowas al Konstanten zu definieren, wenn es um Variable geht, kann schon gar nicht funktionieren (was eigentlich logisch sein sollte).

Warum arbeitet Hedwig nicht einfach mit der LotusScript Function Replace? Sicherheitshalber sollte man das sowhl über Chr$ (10) und Chr$ (13) separat laufen lassen, falls unterschiedliche Datenquellen involviert sind.

Bernhard

Offline Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Return im Textfeld entfernen
« Antwort #6 am: 24.04.07 - 17:21:46 »
Ich habe nochmal unter NotesHilfe und hier im Forum nachgesehen.

Ich konnte keinen vergleichbaren Scriptcode finden.

Hat jemand eventuell ein Script mit der Function Replace um mein Prob entwas näher zu kommen ?

Vielen Dank !

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: Return im Textfeld entfernen
« Antwort #7 am: 24.04.07 - 17:24:48 »
Direkt aus der Designer-Hilfe:
Code
Sub Initialize
   Dim array1(2) As string
   Dim array2(2) As string
   Dim array3(2) As string
   Dim ret As Variant
   array1(0) = "original0"
   array1(1) = "ThisShouldNotBeReplaced1"
   array1(2) = "original2"
   array2(0) = "original"
   array2(1) = "ShouldNotFindThis"
   array2(2) = "once"
   array3(0) = "replaced--once--"
   array3(1) = "this should be skipped"
   array3(2) = "twice"
   ret = replace(array1, array2, array3)
   for x = 0 to 2
      Print ret(x)
   Next
End Sub 
'OUTPUT
'replaced--twice--0
'ThisShouldNotBeReplaced1
'replaced--twice--2
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 Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Return im Textfeld entfernen
« Antwort #8 am: 24.04.07 - 17:27:35 »
Ja, das habe ich gesehen.
Wie kann ich das umsetzten, damit ich Return(Enter) aus einem Textfeld bekomme

@newline
@Char(10)
oder @Char(13)

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: Return im Textfeld entfernen
« Antwort #9 am: 24.04.07 - 17:29:54 »
Du sprichst Formelsprache, der Code war LotusScript.
Der Unterschied ist Dir schon klar?

Die relevante Info hat Dir Bernhard (koehlerbv) schon gegeben.
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 Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Return im Textfeld entfernen
« Antwort #10 am: 24.04.07 - 17:34:21 »
ja, das ist mir klar.
Wollte damit nur deutlich machen welche werte ich entfernen möchte.

Meine Frage ist wie ich den ReplaceCode (s.o.) so umstellen muss, dass
diese Werte aus meinem Textfeld verschwinden. Habe mit der Replace Function noch
nicht gearbeitet und tue mich damit etwas schwer !

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: Return im Textfeld entfernen
« Antwort #11 am: 24.04.07 - 18:03:14 »
* m3 schreibt Code für andere nur gegen Bezahlung.
Konkrete Fragen beantworte ich aber gerne auch kostenlos.
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 Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Return im Textfeld entfernen
« Antwort #12 am: 24.04.07 - 18:08:10 »
ich habe inzwischen diesen code geschreiben.
was mache ich hier nur falsch ?




Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim rc1 As NotesItem
   Dim rc2 As NotesItem
   Set db = session.CurrentDatabase
   Set view = db.GetView("Umfrage_PR")
   Set doc = view.GetFirstDocument
   
   While Not(doc Is Nothing)
      Set rc1 = doc.GetFirstItem("U_Antwort_8")
      Set rc2 = doc.GetFirstItem("U_Antwort_5b")
      
      eval1 = Evaluate (    | @ReplaceSubstring( rc1 ;@NewLine;" ") | )
      eval2 = Evaluate (    | @ReplaceSubstring( rc2 ;@NewLine;" ") | )
      
      Call doc.ReplaceItemValue("U_Antwort_8", eval1)
      Call doc.ReplaceItemValue("U_Antwort_5b", eval2)      
      
      Call doc.Save(True, False)
      Set doc = view.GetNextDocument(doc)
   Wend
   
End Sub

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Return im Textfeld entfernen
« Antwort #13 am: 24.04.07 - 18:19:56 »
@ReplaceSubstring( sourceList ; fromList ; toList )

Ich kann es gerade nicht ausprobieren, aber ich glaube nicht, dass @newline hier als 'fromlist' gültig ist, auch wenn der Rückgabwert ein String ist

was zeigt der Debugger denn für eval1 und eval2 an?


noch nachgeschoben: wenn du eh das ganze in Script machst, warum nimmst du nicht die replace function?
« Letzte Änderung: 24.04.07 - 18:26:30 von DAU-in »
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Return im Textfeld entfernen
« Antwort #14 am: 24.04.07 - 18:28:45 »
@"DAU-in":
@NewLine ist als "fromlist" sehr wohl geeignet.

@Hedwig:
Du machst da so gut wie alles falsch. rc1 ist ein NotesItem, und damit können werder Evaluate noch und vor allem @ReplaceSubstring etwas anfangen. rc1 wird aber gar nicht als NotesItem mehr wahrgenommen, weil es innerhalb eines Strings als sinnlose Aneinanderreihung von drei Zeichen steht. Evaluate fehlt zudem der Bezug zum NotesDocument, auf den - wenn syntaktisch richtig formuliert - sich der Itemname (!) rc1 bezieht.

Und ist

Ergebnisstring = Replace (doc.U_Antwort_8 (0), Chr$ (13); " ")

nur so schwer?

Bernhard

Offline LohCon

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
  • 42 ...
Re: Return im Textfeld entfernen
« Antwort #15 am: 24.04.07 - 18:50:40 »
Warum nimmst Du nicht Deinen 1. Code von ganz oben und packst Ihn direkt in eine Viewaction in das Click - Event. Klappt prima ... Ich verwende statt "@NewLine" allerdings -> @Char(0), aber @NewLine tut's auch

Und in Formelsprache sieht das so aus: @ReplaceSubstring(DeinFeld; @Char(0) ; " ")

- Jörg

Offline LohCon

  • Junior Mitglied
  • **
  • Beiträge: 76
  • Geschlecht: Männlich
  • 42 ...
Re: Return im Textfeld entfernen
« Antwort #16 am: 24.04.07 - 19:20:02 »
@ReplaceSubstring(MeinFeld; @Char(0) ; " " )

verwende ich übrigens auch direkt in der Eingbeumsetzung des Feldes.

Offline Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Return im Textfeld entfernen
« Antwort #17 am: 26.04.07 - 12:57:29 »
Habe nun einen Agenten genommen:

_rc := @ReplaceSubstring(U_Antwort_8 ;@Char(0);" ");
@SetField("U_Antwort_8"; _rc);
SELECT @All

Das Problem ist gelöst, vielen Dank an alle !

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz