Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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
-
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.
-
oder noch einfacher mit @ReplaceSubstring
-
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.
-
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
-
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!
-
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
-
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)
-
aha ;D
klingt eigentlich logisch. Hab mit Funktionen bisher noch nicht so viel am Hut!
Aber es wird...
Danke, Daniel
-
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
-
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
-
Array ?? Daniel zeig doch mal kurz auf, wie du vorgehen willst
-
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
-
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.
-
Achherrje, stimmt.
Aber es funzt trotzdem nicht.
Ist es allgemein zu empfehlen via LS die @Formelsprache aufzurufen?
Daniel
-
Hi,
was funktioniert nicht ? Ich hab die Funktion getestet. Bei mir läuft sie problemlos.
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
-
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 ? ::)
-
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