Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Daniel am 04.02.04 - 15:25:21

Titel: Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 04.02.04 - 15:25:21
Hallo Jungens!

Ich bin grad nahe der Verweiflung, weil ich nichts finde wie ich ein Feld, welches ich schon im Zugriff habe, durchsuchen kann, und wenn ein bestimmter Text vorkommt, diesen ersetzen kann.

Ich hab auch schon die Anfangsposition mit Instr(1,var(0),"@",0) gefunden. mann könnte auch alles was rechts davon steht ersetzen.

Danke für eure Hilfe!

Sg

Daniel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: eknori am 04.02.04 - 15:28:38
ich nehme mal an, du bist noch mit deiner Domain zugange.

Nimm doch @Word; @ ist dabei dein trennzeichen.

Dann machst du ein @Word(feldname;"@";1) + "@" + neueDomainString.

das sollte so funzen.
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: eknori am 04.02.04 - 15:29:41
oder noch einfacher mit @ReplaceSubstring
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: koehlerbv am 04.02.04 - 15:30:44
So, wie das ausschaut, sucht Daniel ab was in LS.
Guckst Du hier:
http://www.atnotes.de/index.php?board=7;action=display;threadid=5310;start=0 (http://www.atnotes.de/index.php?board=7;action=display;threadid=5310;start=0)

HTH,
Bernhard

PS: Aber Achtung, das ist kein genaues Abbild der @function, sollte aber genau das tun, was Du brauchst.
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: eknori am 04.02.04 - 15:35:15
auch nicht weiter dramatisch; hier ein @Word in script

Function sWord ( sourceString As String, separator As String, number As Integer ) As String
   searchString$=SourceString & separator ' add one separator to catch also the last substring
   For i% = 1 To number
      pos%=Instr(searchString$, separator)
      If pos%=0 Then Exit For
      substring$=Left(searchString$,pos%-1)
      searchString$=Mid(searchString$, pos%+1)
   Next
   If pos% > 0 Then
      sWord=substring$
   Else
      sWord=""
   End If
End Function
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 04.02.04 - 15:47:26
Puh, endlich gecheckt. Da muss man ja saftig aufpassen, ich probiers gleich aus.

Jep, das hängt noch mit der Umstellung zusammen. Ich tu mal alles schön vorbereiten um am Tage x nur noch das Knöpfchen zu drücken.
Das Adressbuch wird noch spannend, aber wird schon klappen, vor allem mit eurer Hilfe!

Danke!
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 04.02.04 - 16:11:01
Doch noch nicht so sonnenklar  ???.

Diese Funktion hab ich nun im Agenten, und was übergeb ich der? und wie? Ich dachte immer ein Fu aufruf muss dann so aussehen?:

*Script
Function sWord ( sourceString As String, separator As String, number As Integer ) As String
*Script

Daniel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Driri am 04.02.04 - 16:27:55
Die Function einfach in die Declarations einfügen, dann hast Du die da drin.

Der Aufruf erfolgt dann z.B. so

ergebnisstring = sWord(string1, string2, number)
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 04.02.04 - 16:39:35
aha  ;D
klingt eigentlich logisch. Hab mit Funktionen bisher noch nicht so viel am Hut!
Aber es wird...

Danke, Daniel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 04.02.04 - 23:11:39
Hab ich das richtig Begriffen, wird an eine Funktion ein Wert aus einem Array übergeben, muss in der Funktion kein Array definiert sein?

Kann mir noch jemand sagen, wieso?

SG

Daniel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: TMC am 04.02.04 - 23:48:39
Verstehe jetzt Deine Frage nicht.

Ein Wert aus einem Array ist ja ein String.
Ein Array enthält eben mehrere Strings als Liste.

Und in der Funktion ist durchaus ein String definiert.
*Script
Function sWord ( sourceString As String, separator As String, number As Integer ) As String
*Script

Hier wird von Array (Variant) nichts erwähnt.

Hab mir jetzt die Funktion nicht angesehen, aber die wird meckern, wenn Du da ein Array reinkippst anstatt ein String wie definiert.

Matthias
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: eknori am 05.02.04 - 05:18:31
Array ?? Daniel zeig doch mal kurz auf, wie du vorgehen willst
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 05.02.04 - 08:17:47
Hallo Eknori!

So lese ich aus

Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Set db = session.currentdatabase
   Dim view As notesview
   Dim doc As notesdocument
   Set view = db.getview("Personen - Alphabetisch")
   Set doc = view.getfirstdocument
   
   Dim s As String
   Dim var(0) As String
   Do Until doc Is Nothing
      var(0) = doc.Mbr_Email
      s = var(0)
      
      'var(1) = doc.Mbr_Emailentry(0)
      'iPos = Instr(1,var(0),"@",0)
      
      Set doc = view.getnextdocument(doc)
   Loop
   Messagebox Killheizboesch(s)
End Sub


So wie es momentan noch dasteht, von der Reihenfolge her, wie der String geändert werden sollte, stimmt es noch nicht.

Bei Killheizboesch steht das hier, bei deinem Skript bin ich doch noch gescheitert an den Datentypen, hier aber auch?!?!

Function Killheizboesch ( s As String) As String
   strformula = { @ReplaceSubString("} + s + {"; "@heizboesch.at"; "@boesch.at") }
   nStr = Evaluate( strformula )
   KillUmlaute = nstr(0)
End Function

Daniel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Axel am 05.02.04 - 08:25:48
Hi,

deine Funktion heißt Killheizboesch. das Ergebnis weist du aber KillUmlaute zu.

Meiner Meinug nach muss die Funktion so aussehen:
 
Function Killheizboesch ( s As String) As String
   strformula = { @ReplaceSubString("} + s + {"; "@heizboesch.at"; "@boesch.at") }
   nStr = Evaluate( strformula )
  Killheizboesch = nstr(0)
End Function

Axel


Hab die Funktion gerade eben mal getestet und so funktioniert sie.

Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Daniel am 05.02.04 - 08:29:58
Achherrje, stimmt.
Aber es funzt trotzdem nicht.
Ist es allgemein zu empfehlen via LS die @Formelsprache aufzurufen?

Daniel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Axel am 05.02.04 - 08:37:03
Hi,

was funktioniert nicht ? Ich hab die Funktion getestet. Bei mir läuft sie problemlos.

Zitat
Ist es allgemein zu empfehlen via LS die @Formelsprache aufzurufen?

Ich mache so was regelmässig. Warum soll man das Rad immer wieder neu erfinden. Es gibt viele Formelbefehle, für die es keine Script - Äquivalent gibt. Hier müsste man dann aufwändig eine Routine erstellen. Außerdem sind Formelbefehle teileweise sogar performanter.


Axel
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: eknori am 05.02.04 - 08:40:33
nur mal so am Rande:


      'iPos = Instr(1,var(0),"@",0)
     
      Set doc = view.getnextdocument(doc)
   Loop
   Messagebox Killheizboesch(s)

die msgbox gehört doch wohl IN den loop, oder ? ::)
Titel: Re:Teile eines Feldes suchen und ersetzten
Beitrag von: Axel am 05.02.04 - 08:42:14
Hi,

ich hab mir deinen Code nochmal angeschaut und diesen beiden Zeilen

   Dim var(0) As String
...
   var(0) = doc.Mbr_Email

gefallen mir nicht.


Sub Initialize
   Dim session As New notessession
   Dim db As notesdatabase
   Set db = session.currentdatabase
   Dim view As notesview
   Dim doc As notesdocument
   Set view = db.getview("Personen - Alphabetisch")
   Set doc = view.getfirstdocument
   
   Dim s As String

   Do Until doc Is Nothing
      s = doc.Mbr_Email(0)
      Messagebox Killheizboesch(s)
      Set doc = view.getnextdocument(doc)
   Loop

End Sub

Versuch das Ganze mal so.

Axel