Autor Thema: Evaluate @ReplaceSubstring -> Fehlermeldung  (Gelesen 3501 mal)

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Evaluate @ReplaceSubstring -> Fehlermeldung
« am: 22.12.05 - 11:40:43 »
Moins Ihrse,

ich bekomme bei folgendem Quellcode

Code
[...]

strMyBlank = " - "

Forall entryAll In itemAlleInformationen.Values
	intLength = Len( entryAll )
				
	strDocument = Left( entryAll, intLength - 32)
						
	strOp = " - "
	strEvalString = {@ReplaceSubstring("} & strDocument & {"; } & strOp & { ; "} & strMyBlank & {")}

[...]

immer die Fehlermeldung

Zitat
Operation Failed

In der Variable "strDocument" stehen immer ungefähr diese Werte

Zitat
1234 - XX12345 - 123 -

Jemand ne Idee was da schief läuft, konnte weder in der Hilfe noch im Forum etwas dazu finden.

Mfg

Sebastian
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline Lossa

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.404
  • Geschlecht: Männlich
    • alphaTrain
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #1 am: 22.12.05 - 11:50:05 »
Hi,

warum machst du dir das Leben so schwer und machst das ganze mit Evaluate etc.

Nimm doch einfach das hier:

Replace(sourceArray, findArray, replacementArray [, start [, count [, compMethod]]])
Viele Grüße

Ulrich Lossa
Aktiv als Notes Admin und Entwickler seit Version 1.
Freier Trainer und Berater.
Zertifiziert für alle Versionen SA und DB.
HCL Certified Administrator
IBM Certified Advanced Application Developer (PCLP AD)
IBM Certified Advanced System Administrator (PCLP SA)
IBM Certified Instructor for System Administration and Application Development ( CLI)
IBM Certified Instructor for Websphere Software
IBM Certified Instructor for DB2
http://www.alphatrain.de
Lossa@alphatrain.de

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #2 am: 22.12.05 - 11:57:44 »
Funktioniert das nicht nur mit Arrays, ich will ja Zeichen aus ner String Zeichenkette entfernen  ???
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline Lossa

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.404
  • Geschlecht: Männlich
    • alphaTrain
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #3 am: 22.12.05 - 11:59:56 »
Hi,

dann mach doch einfach ein Array draus mit einem Element.
Viele Grüße

Ulrich Lossa
Aktiv als Notes Admin und Entwickler seit Version 1.
Freier Trainer und Berater.
Zertifiziert für alle Versionen SA und DB.
HCL Certified Administrator
IBM Certified Advanced Application Developer (PCLP AD)
IBM Certified Advanced System Administrator (PCLP SA)
IBM Certified Instructor for System Administration and Application Development ( CLI)
IBM Certified Instructor for Websphere Software
IBM Certified Instructor for DB2
http://www.alphatrain.de
Lossa@alphatrain.de

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #4 am: 22.12.05 - 12:40:45 »
Lohnt sich denn dann der Aufwand ;) ?
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline dnotes

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #5 am: 22.12.05 - 12:49:31 »
Sollte sich der Aufwand nicht lohnen musst Du Deine Variable anpassen.

strEvalString = {@replacesubstring("} & strDocument & {";"} & strOp & {";"} & strMyBlank &{")}

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: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #6 am: 22.12.05 - 12:49:37 »
Lohnt sich denn dann der Aufwand ;) ?

ich denke mal nicht. Ich habe schon mehrmal ReplaceSubString mit Evaluate angewendet und hatte nie Probleme.


So wie's aussieht fehlen bei dir zwei Anführungszeichen.

Versuch's mal so:

strEvalString = {@ReplaceSubstring("} & strDocument & {"; "} & strOp & {" ; "} & strMyBlank & {")}

Als Hilfe kannst du dir auch mal mit einer Messagebox den String ausgeben lassen. Da siehst du dann besser wo's klemmt.


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

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #7 am: 22.12.05 - 13:01:43 »
Mh, also die Fehlermeldung

Zitat
Operation Failed

ist verschwunden ;)

Leider bekomme ich jetzt eine "Type Missmatch" Fehlermeldung, draufhin habe ich mir mal den Evaluate String, wie von dir geschildert, Alex, ausgeben lassem

Zitat
@ReplaceSubstring("1161 - SC86 - 100 - ";" - ";" ")

ist das Ergebnis, das müsste so doch 100% richtig sein, oder?

Also ich bin  :-:
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline dnotes

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #8 am: 22.12.05 - 13:27:07 »
an welcher Stelle im Debuger taucht der Fehler denn auf??

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #9 am: 22.12.05 - 13:30:36 »
Ich kann den Debugger leider nicht benutzen, da das Formular in einer Dialogbox angezeigt wird.

Aber mit Hilfe von MessageBoxen habe ich den Fehler lokalisiert, wenn das Evaluate ausgeführt werden soll.

immer größeres :-:
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

Offline dnotes

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #10 am: 22.12.05 - 13:33:27 »
Das Ergebnis von Evaluate ist richtig. Wie greifst Du denn auf den Wert von evaluate zu?? Evaluate liefert eine Array zurueck.

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: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #11 am: 22.12.05 - 13:55:22 »
Das Ergebnis von Evaluate ist richtig. Wie greifst Du denn auf den Wert von evaluate zu?? Evaluate liefert eine Array zurueck.

Jaein. Der Rückgabewert von Evalute ist ein Variant-Datentyp.


Dim result as Variant

result = Evaluate(.....


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

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #12 am: 22.12.05 - 14:33:32 »
Passiert leider das gleiche, Type Missmatch, k.A. ich werd mich glaub ich morgen früh nochmal dem Prob widmen, dann hab ich was Abstand und erkenn vieleicht was ich da wieder für einen Usel gemacht habe.

Thx erstmal und falls euch nochwas einfällt, ich bin ganz Ohr

Sebastian
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

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: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #13 am: 22.12.05 - 14:48:58 »
Poste doch mal deinen Code. Vielleicht sieht man ja was.


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

Offline stitze

  • Aktives Mitglied
  • ***
  • Beiträge: 226
  • Geschlecht: Männlich
    • kleisterbande
Re: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #14 am: 22.12.05 - 15:20:25 »
Code
Sub Click(Source As Button)

               On Error Goto ErrHandler

	Dim session As New NotesSession 	
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	
	Dim db As NotesDatabase
	
	Set db = session.CurrentDatabase 
	
	Dim docCollection As NotesDocumentCollection
	
	Dim doc As NotesDocument 
	Dim docSetDate As NotesDocument 
	
	Dim nam As NotesName
	
	Dim item As NotesItem
	Dim itemAlleInformationen As NotesItem
	
	Dim aryInformation() As String
	Dim aryHistory(30, 2) As String
	Dim strUnID As String
	Dim strName As String 
	Dim strDatum As String
	Dim strNewValue As String
	Dim strDocument As String 
	Dim strMyBlank As String
	Dim strEvalString As String 
	Dim strOp As String 
	
	Dim intCount As Integer 
	Dim intStringPos As Integer 
	Dim intLength As Integer 
	Dim i As Integer 
	Dim j As Integer
	
	Dim valEval As Variant 
	Dim aryClean
	
	Set uidoc = workspace.CurrentDocument	
	Set doc = uidoc.Document
	
	Set item = doc.GetFirstItem( "lstAenderungsbriefe" )
	Set itemAlleInformationen = doc.GetFirstItem( "txtAlleInformationen" )
	
	'Iteriere über markierte Datensätze in dem Textfeld "txtAlleInformationen"
	Forall entry In itemAlleInformationen.Values
		Redim Preserve aryAlleInformationen( intCount ) As String
		
		'Speichere Datensatz in Array "aryAlleInformationen"
		aryAlleInformationen( intCount ) = entry
		
		intCount = intCount + 1
	End Forall
	
	intCount = 0
	
	'Iteriere über das Listenfeld "lstAlleInfomrationen" und inkrementiere bei jedem markierten Datensatz "intCount" um 1
	Forall entry In item.Values 
		If Not entry = "" Then intCount = intCount + 1
	End Forall
	
	'Falls mind. ein Datensatz markiert is
	If Not intCount = 0 Then
		intCount = 0
		
		strMyBlank = " "
		
		'Iteriere erneut über das Listenfeld "lstAenderungen"
		Forall entry In item.Values 
			Redim Preserve aryInformation( intCount ) As String
			
			Forall entryAll In itemAlleInformationen.Values
				intLength = Len( entryAll )
				
				strDocument = Left( entryAll, intLength - 32)
				
				strOp = " - "
				strEvalString = {@ReplaceSubstring("} & strDocument & {"; "} & strOp & {"  ; "} & strMyBlank & {")}
				
				valEval = Evaluate( strEvalString )
				
				strDocument = valEval 

				If entry = strDocument Then
					strUnID = Right( entryAll, 32 )
				End If
			End Forall
			
			'Ermittle UniversalID des markierten Datensatzes 
			'strUnID = Right( entry, 32 )
			
			'Hole Dokument mit Hilfe der UniversalID
			Set docSetDate = db.GetDocumentByUNID( strUnID )
			
			'Setze das Publikationsdatum
			docSetDate.PubDatum = doc.datPublikation(0) 
			
			i = 1
			
			'Pflege die Historie
			
			'Überprüfe ob schon Änderungen am Dokument vorliegen
			If docSetDate.getItemValue( "Historytemp" )(0)  <> "" Then
				'Wenn ja iteriere über das Feld "Histoytemp"
				Forall entryHistory In docSetDate.GetItemValue( "Historytemp" )
					'Speicher den kompletten Datensatz im Array "aryHistory" an der stelle (i,0)
					aryHistory( i, 0 ) = entryHistory
					
					'Ermittle die Endposition des Namens
					intStringPos = Instr ( entryHistory , "~~~" )-1
					'Speichere den Namen in der Variable "strName"
					strName = Ltrim( Rtrim( Left( entryHistory, intStringPos ) ) )
					'Speichere Namen im Array "aryHistory" an der Stelle (i,1)
					aryHistory( i, 1 ) = strName
					
					'Ermittle mit Hilfe der Varibale "intStringPos" das Datum speichere dieses in der Variable "strDaum"
					strDatum = Ltrim( Rtrim( Mid( entryHistory, intStringPos + 4 ) ) )
					
					'hinterlege das Datum im Array "aryHistory" an der Stelle (i,2)
					aryHistory( i, 2 ) = strDatum
					
					'ermittle die Anzahl der Einträge im Feld indem die Variable "i" jeweils um 1 inkrementert wird
					i = i + 1
				End Forall
				
			End If
			
			'Erzeuge ein NotesName Objekt, übergebe dem Konstruktor den Namen des aktuellen Users
			Set nam = session.CreateName( session.UserName )
			
			'Speichere den Abbreviated Namen ("John B Goode/Sales/East/Acme/US") incl. dem Datum und der Uhrzeit im Array "aryHistory" an der Stelle (0,0)
			aryHistory( 0, 0 ) = nam.Abbreviated  + "~~~" + Now()
			
			'Zerpflücke diesen Datensatz ebenfalls, s.o.
			intStringPos = Instr ( aryHistory( 0, 0 ), "~~~" )-1
			strName = Ltrim( Rtrim( Left( aryHistory( 0, 0 ), intStringPos ) ) )
			
			aryHistory( 0, 1 ) = strName
			
			strDatum = Ltrim( Rtrim( Mid( aryHistory( 0, 0 ), intStringPos + 4 ) ) )
			
			aryHistory( 0, 2 ) = strDatum
			
			'Leere das Feld "Historytemp"
			Set item = docSetDate.ReplaceItemValue( "Historytemp", "" ) 
			
			'Falls mehr als 30 Einträge im Feld sind, setzte die Variable "i" auf 30, gefährleistet, das nur die letzten 30 Änderungen zu sehen sind.
			If i >= 30 Then i = 30
			
			'Speichere die Historieninformationen neu im Feld "Historytemp"
			For j = 0 To i - 1
				
				strNewValue = docSetDate.GetItemValue( "Historytemp" )(0) & aryHistory( j, 0 ) & ","
				
				Call docSetDate.ReplaceItemValue( Historytemp, strNewValue )
			Next
			
			If i = 1 Then
				Call docSetDate.ReplaceItemValue( "Historytemp", aryHistory( 0, 0 ) )	
			End If
			
			'Speicher das Dokument
			Call docSetDate.Save( True, False )
			
			'Speicher die publizierte Schlüsselbeschreibung in einem Array
			aryInformation( intCount ) = entry
			
			intCount = intCount + 1		
		End Forall
		
		'Lösche alle leeren Einträge aus dem Array
		For i = 0 To Ubound( aryAlleInformationen ) 
			For j = 0 To Ubound( aryInformation ) 
				If aryAlleInformationen( i ) = aryInformation( j ) Then
					aryAlleInformationen( i ) = ""
					
					j = Ubound( aryInformation ) - 1
				End If
			Next
		Next
		
		aryClean = Fulltrim( aryAlleInformationen )
		
		itemAlleInformationen.Values = ""
		
		'Füge den gesäuberten Array dem Item "itemAlleInformationen" hinzu
		For i = 0 To Ubound( aryClean ) 
			itemAlleInformationen.AppendToTextList( aryClean( i ) )
		Next
		
		uidoc.Refresh 
	Else
		'Falls nicht gebe eine Fehlermeldung aus
		Msgbox "Sie müssen einen Datensatz auswählen.", MB_OK, "Fehler" 
	End If

Ende:	
	Exit Sub   

ErrHandler:
	Call arOutputError(constrObjectName, Err, Erl(), Error())
	Resume Ende		

End Sub
When i loaded my cap gun , i'm ready for action.

Saying that Java is nice because it works on all OS's is like saying anal sex is nice because it works on all genders.

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: Evaluate @ReplaceSubstring -> Fehlermeldung
« Antwort #15 am: 22.12.05 - 19:02:09 »
Ich vermute, dass es hier knallt (rote Zeile).

...
strOp = " - "
strEvalString = {@ReplaceSubstring("} & strDocument & {"; "} & strOp & {"  ; "} & strMyBlank & {")}
            
valEval = Evaluate( strEvalString )
         
strDocument = valEval

...

Du versuchst hier nämlich einer Stringvariablen einen Variantwert zuzuweisen.

Die Zeile muss so aussehen:

strDocument = valEval(0)


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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz