Autor Thema: Find , Replace in Felder  (Gelesen 5064 mal)

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Find , Replace in Felder
« am: 07.03.05 - 11:23:09 »
Hallo zusammen

ich habe irgendwo mal ein Tool oder Agent gesehen mit diesem ich auf Feldebene Werte suchen und ersetzen kann.
Kann mir da jemand weiter helfen??

vielen Dank
Pascal

Offline Alexis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 534
  • Geschlecht: Männlich
  • LotusNotes macht süchtig!
Re: Find , Replace in Felder
« Antwort #1 am: 07.03.05 - 11:37:22 »
wenn ich kein Problem hätte, wär' ich nicht hier ---
wenn ich im Forum eine Lösung gefunden hätte, wär' ich nicht hier ---
wenn ich nicht wüsste, dass mir hier fast immer geholfen wird, wär' ich AUCH nicht hier ---

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #2 am: 07.03.05 - 12:54:26 »
Danke für den Link, das Problem ist aber das ich nur einen Teil in einem Feld anpassen will: zB:

In Zürich wechseln die Vorwahlnummern von 01 auf 044, jetzt will ich im Pers. NAB die einträge im Feld PhoneNumber anpassen in dem die Zeichenfolge 01 durch 044 ersetzt wird, aber der Rest der Nummer nicht verändert wird ;-) und dies bei allen Dokumenten mit 01 in diesem Feld

Gruss
Pascal

klaussal

  • Gast
Re: Find , Replace in Felder
« Antwort #3 am: 07.03.05 - 13:10:59 »
Warum nimmst du dafür keinen Agenten + replacesubstring ?

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #4 am: 07.03.05 - 13:28:12 »
weil mir das Entwickler Wissen fehlt :(

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #5 am: 07.03.05 - 19:17:19 »
Klaus, @ReplaceSubstring wird aber lustig  ;D Wenn da jemand 'ne "01" in der Rufnummer hat (soll ja vorkommen ...), dann kannste den nicht mehr anrufen - es sei denn, Du hast die Nummer im Kopf  ;)

Pascal: Sind die Telefonnummern denn überhaupt normiert ? Steht da nicht mal sowas wie +41 (0) 3257490157 und mal 01/349 56-001 ?
Beachte bitte: In beiden Telefonnummern kommt die 01 auch an Stellen vor, die bestimmt nicht ausgetauscht werden sollen.
Wenn das nicht normiert ist, kann auch kein Tool Dir beim Austausch helfen - dafür muss ein spezialisierter Parser geschrieben werden. Wenn es aber normiert ist, reicht ein Mini-Ädschentileinichen.

Bernhard

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #6 am: 08.03.05 - 08:43:32 »
Hallo Bernhard

es ist, die ++41 oder was auch immer für eine internationale Vorwahl verwende ich nur für die Handynummern oder eine Private Tel. nummer ist wirklich im Ausland, was aber bei uns ändert , ist nur die " 01" und dies sind immer die ersten zwei Zeichen links im Feld PrivatPhon.
Weisst du, wenn ich die Formel in deutsch programmieren könnte, dass würde wunderbar funktionieren, nur bin ich mir nicht sicher ob Notes das verstehen würde ;-)

Gruss
Pascal

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Find , Replace in Felder
« Antwort #7 am: 08.03.05 - 09:20:29 »
... und dann kannst Du auch gleich dahinter und alle "++" durch "+" ersetzen, seit rund 15 Jahren gibt es eine ISO-Norm, die aussagt, dass internationale Telefonnummern mit EINEM Plus zu notieren sind (deshalb funktioniert die Nummernschreibweise mit + und Ländercode auch international zuverlässig in allen Ländern :) )
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: Find , Replace in Felder
« Antwort #8 am: 08.03.05 - 09:28:30 »
Erstell Dir einen Agenten mit folgenden Code Anschließend Dokumente auswählen und den Agenten starten:


Sub Initialize
   Dim savecount%, tempstring$, itemstring$
   Dim flag As Integer
   Dim workspace As New Notesuiworkspace
   Dim session As New Notessession
   Dim thisdb As Notesdatabase
   Dim collection As Notesdocumentcollection
   Dim doc As Notesdocument
   Dim dialogdoc As Notesdocument
   Dim newdoc As Notesdocument
   Dim tempitem As Notesitem
   Dim dialogformname As String
   Dim dialogform As NotesForm
   Dim totalcount As Integer
   Dim savedcount As Integer
   Set thisdb = session.currentdatabase
   Set collection = thisdb.unprocesseddocuments
   totalcount = collection.count
   Set dialogdoc = thisdb.createdocument
   Set newdoc = thisdb.createdocument
   Set doc = collection.GetFirstDocument
   doc.ParentView.autoupdate = False
' Show copy of first selected document in dialog box
   Call doc.CopyAllItems( dialogdoc )
'Get form name
   Set tempitem = dialogdoc.GetFirstItem("Form")
   If tempitem Is Nothing Then
      dialogformname = ""
   Else
' If Notesitem.Text property is empty or null (or anything but text), useempty string
      Select Case Datatype(tempitem.text)
      Case 8: dialogformname = tempitem.text
      Case Else: dialogformname = ""
      End Select
   End If
   Do
      If dialogformname = "" Then
         dialogformname = Inputbox( "Geben Sie einen Maskennamen für die Dokumentenbearbeitung ein, oder CANCEL zum Beenden." , "Maske nicht gefunden" )
         If dialogformname = "" Then
            Print "Sie haben keinen Maskennamen eingegeben, es wurden keine Änderungen vorgenommen."
            Exit Sub
         End If
      End If
      Set dialogform = thisdb.GetForm( dialogformname )
      If dialogform Is Nothing Then dialogformname = ""
   Loop Until dialogformname <> ""
   flag = Workspace.DialogBox( dialogformname ,True,True,False,False,False,False,"Wenn Sie mit OK bestätigen, werden die Änderungen in allen ausgewählten Dokumenten übernommen !", dialogdoc,True,False)
   If flag = False Then
      Print "Der Dialog wurde abgebrochen, es wurden keine Änderungen vorgenommen."
      Exit Sub
   End If
   
   Forall item In dialogdoc.items
      
      If Datatype(item.text) = 8 Then
         itemstring$ = item.text
      Else
         itemstring$ = ""
      End If
      Set tempitem = doc.GetFirstItem(item.name)
      If tempitem Is Nothing Then
         tempstring$ = ""
      Elseif Datatype(tempitem.text) = 8 Then
         tempstring$ = tempitem.text
      Else
         tempstring$ = ""
      End If
      If itemstring$ <> tempstring$ Then
         Call item.copyitemtodocument(newdoc, "")
      End If
   End Forall
   While Not doc Is Nothing
      Call newdoc.CopyAllItems( doc, True )
      savecount = savecount + 1
      Print totalcount & " Dokumente gewählt, " & savecount & " Dokumente geändert"
      Call doc.save(True, True, True)
      Set doc = collection.GetNextDocument(doc)
   Wend   
End Sub
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #9 am: 08.03.05 - 10:27:36 »
Der gepostete Agent ist nicht geeignet, die Zürcher Vorwahl zu verändern !

Bernhard

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: Find , Replace in Felder
« Antwort #10 am: 08.03.05 - 11:30:06 »
hm ja das hast du recht das habe ich jetzt gar nicht gelesen :-( sorry
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

AndreTS

  • Gast
Re: Find , Replace in Felder
« Antwort #11 am: 09.03.05 - 17:29:33 »
- hallo allerseits - nachdem ich jetzt einige zeit zugesehen habe und mit vielen meiner kunden und intressenten in der schweiz telefoniert habe: nach ruecksprache mit unserem technikguru:

- die einfachste moeglichkeit die zuericher vorwahl abzuaendern ob in den dokumenten oder im design ist natuerlich mit dem teamstudio configurator... einfach alte vorwahl eingeben und durch neue ersetzen...

der vorteil dabei ist dass ich den genauen kontext sehe wo die vorwahl vorkommt vor ich das ganze abaendere - im design die vorwahl abzuaendern ist natuerlich mit keinem agent moeglich  8) wenn zudem snapper verwendet wird kann jederzeit ein undo gemacht werden um die aenderungen wieder rueckgaengig zu machen

bei fragen - einfach fragen - poste hier wg. den forumsregeln nicht unsere website aber bei bedarf freue ich mich ueber pn's
Andre
Teamstudio

Driri

  • Gast
Re: Find , Replace in Felder
« Antwort #12 am: 09.03.05 - 17:41:51 »
Netter Hinweis, aber nicht jeder hat die tollen Tools im Einsatz  ;)

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #13 am: 09.03.05 - 20:29:02 »
Ingo, sicher hat nicht jeder die Teamstudio-Tools im Einsatz. Professionals sollten aber  ;D
Und wenn man nicht programmieren kann, sollte man den Configurator für sowas dringend in Betracht ziehen - andere Tools arbeiten ja eher nicht interaktiv (wenn gewünscht).

Aber für ein privates Adressbuch - herrjeh. Nö, da wirklich nicht.

Pascal:
Unter der Prämisse "Privates Adressbuch" solltest Du in Erwägung ziehen, einfach die "01" beim wählen durch die "044" zu ersetzen - und peu-à-peu Dein PNAB umstellen. Übler wird es natürlich, wenn Du Notes mit einem Handheld oder telefonino abgleichst.

Ein Tipp: Wenn Du wirklich  (!) die Zürcher Nummern normiert abgeleht hast, bräuchtest Du nur einen Agent (runs on selected) mit folgendem simplen Code:

Code
FIELD PhoneNumber := @If (@Left (PhoneNumber; 2) = "01" & !@Matches (@Middle (PhoneNumber; 2; 1); "{0123456789}"); "044" + @Right (PhoneNumber; @Length (PhoneNumber) - 2); PhoneNumber);
@All

Der tauscht Dir alles aus (in den markierten Kontakt-Dokumenten), das mit "01" anfängt, aber nicht, wenn dort "0135" steht - das dritte Zeichen darf für den Austausch keine Ziffer sein.

HTH,
Bernhard

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #14 am: 13.05.05 - 14:36:12 »
Hallo Bernhard

vielen Dank, habe den Agenten mit Hielfe eines Entwicklers noch ein wenig angepasst, so werden nun auch die geschäftsnummern angepasst ;-)


vielne Dank
Pascal

Offline Pascal

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 538
  • Geschlecht: Männlich
Re: Find , Replace in Felder
« Antwort #15 am: 13.05.05 - 15:26:07 »
und hier noch die Hardcoreversion ;-)

FIELD PhoneNumber := @If (@Left (PhoneNumber; 2) = "01" & !@Matches (@Middle (PhoneNumber; 2; 1); "{0123456789}"); "044" + @Right (PhoneNumber; @Length (PhoneNumber) - 2); PhoneNumber);

FIELD OfficePhoneNumber := @If (@Left (OfficePhoneNumber; 2) = "01" & !@Matches (@Middle (OfficePhoneNumber; 2; 1); "{0123456789}"); "044" + @Right (OfficePhoneNumber; @Length (OfficePhoneNumber) - 2); OfficePhoneNumber);


FIELD OfficeFaxPhoneNumber := @If (@Left ( OfficeFaxPhoneNumber; 2) = "01" & !@Matches (@Middle ( OfficeFaxPhoneNumber; 2; 1); "{0123456789}"); "044" + @Right ( OfficeFaxPhoneNumber; @Length ( OfficeFaxPhoneNumber) - 2);  OfficeFaxPhoneNumber);

FIELD HomeFaxPhoneNumber := @If (@Left ( HomeFaxPhoneNumber; 2) = "01" & !@Matches (@Middle ( HomeFaxPhoneNumber; 2; 1); "{0123456789}"); "044" + @Right ( HomeFaxPhoneNumber; @Length ( HomeFaxPhoneNumber) - 2);  HomeFaxPhoneNumber);


SELECT @All

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz