Autor Thema: Kleines Problem mit Namen und Evaluate  (Gelesen 5667 mal)

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Kleines Problem mit Namen und Evaluate
« am: 10.03.08 - 14:41:43 »
Hi @ all

ich habe da mal wieder ein kleines problemchen,
und zwar möchte ich gerne das die Namen aus einem Namens bzw. DIalogfeld (beides als Quelle das Addressbuch) nur mit Ihrem     Namen angezeigt werden.

Dies brauche ich zb beim Versenden von mails oder aktualisierung von Dokufeldern im Dokument.

Ich habe es zurzeit mit folgendem Evaluate versucht
(INFO:   an = Variant      NameAn = String)

NameAn = Cstr(Evaluate(|@name([CN];" | & an & | ")|))


Könnt Ihr mir vielleicht einmal helfen?

Vielen DANK

MFG Christian T.
« Letzte Änderung: 13.03.08 - 11:27:46 von C_T »
Viele Grüße

Christian T.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #1 am: 10.03.08 - 14:43:07 »
Hast du dir schonmal die Klasse NotesName angeschaut? Die bietet solche Funktionen ohne Evaluate direkt in Script.

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Kleines Problem mit Namen und Evaluate
« Antwort #2 am: 10.03.08 - 15:06:44 »
... das ist etwas zu wenig Code. Dein "an" ist vom Typ Variant, du verwendest die Variable im Evaluate aber als String.

Wie initialisierst du die Variable?

Toni
Grüßle Toni :)

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #3 am: 10.03.08 - 16:05:57 »
Zuzreit benutze ich die oben genannten Zeile in einem Selbstgeschrieben Mail Sub

ANbei der Code

Code
Sub SendMail (An,Art as String)
REM Standard
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim uidoc As NotesUIDocument
	Set uidoc = workspace.CurrentDocument
	Set doc = uidoc.Document
	Set db = session.CurrentDatabase
	
	Dim item As notesitem
	Set item = doc.GetFirstItem("Dok")	
REM Mail Deklarationen
	Dim DocSend As NotesDocument
	Dim rtitem As NotesRichTextItem
	Dim richStyle As NotesRichTextStyle
	
	Set richStyle = session.CreateRichTextStyle
	
	
	Set DocSend = New NotesDocument(db)
	Set rtitem = New NotesRichTextitem(DocSend, "Body")
	DocSend.Form ="Memo"
	
	Dim commonuser As String
	commonuser = Cstr(session.CommonUserName)
	Dim NameAn As String
	NameAn = Cstr(Evaluate(|@name([CN];" | & an & | ")|))

               .........CODE.....

                END SUB
« Letzte Änderung: 24.04.08 - 11:05:04 von C_T »
Viele Grüße

Christian T.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #4 am: 10.03.08 - 16:09:31 »
Ich sehe in deinem Code-Ausschnitt leider nicht, wo das "an" definiert und initialisiert wird.

EDIT: Ist ja ein Parameter der Prozedur, dann sag mal mit was das an aus den Aufrufern gesetzt wird.

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #5 am: 10.03.08 - 16:18:58 »
axo sry vergessen

explizit bei diesemaufruf habe ich das Problem.

Code
Sub Click(Source As Button)
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim uidoc As NotesUIDocument
	Dim doc As NotesDocument
	Dim db As NotesDatabase

	Dim item As NotesItem
	Dim ItemDok As NotesItem
	
	Set uidoc = workspace.CurrentDocument
	Set db = session.CurrentDatabase
	Set doc = uidoc.Document
	commonuser = session.CommonUserName

	flag = workspace.DialogBox( "fMessage" , False , False)
	If flag = True Then
		Set item = doc.GetFirstItem("send")
		Set ItemDok = doc.GetFirstItem("Dok")

		If doc.User(0) <> "" Then
			For i = 0 To Ubound(doc.User) 
				If Not item.Contains(doc.User(i)) Then
					Call mail(doc.User(i),"INFO")
					item.AppendToTextList(doc.User(i))
				End If				
			Next
		End If


Ich habe auch nachgeschaut ist ein Wert mit "CN=" in dem an drin.....
« Letzte Änderung: 24.04.08 - 11:03:42 von C_T »
Viele Grüße

Christian T.

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Kleines Problem mit Namen und Evaluate
« Antwort #6 am: 10.03.08 - 17:07:02 »
... du übergibst einen Variant, verwendest in deiner Sub Mail() aber einen String - konvertiere im Evaluate das "an" mit Cstr( an ) - dann sollte es gehen

Toni
Grüßle Toni :)

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #7 am: 10.03.08 - 21:04:49 »
Code
Sub Mail (An,Art As String)

Jetzt sehe ich es erst... Wenn ich mich jetzt nicht täusche, sollte sich die Parameterdefinition genauso verhalten, wie die Deklaration von Variablen:
Ein
Code
Dim An,Art As String
erzeugt dir offensichtlich zwei Variablen. Aber was nicht so offensichtlich ist: An ist vom Typ Variant und Art ist vom Typ String. Jetzt hast du zwei Alternativen: Die erste hat dir Anton schon genannt, nämlich die Konvertierung des Variants in einen String bei der Verwendung. Die andere ist, dass du deinen Parameter für die Prozedur auch zum String machst, dann brauchst du ihn bei Verwendung nicht konvertieren. Hierbei musst du halt wissen, wo du die Prozedur noch verwendest. Danach kannst du halt entscheiden, was für dich sinnvoller ist. Aber dem Code der Prozedur nach, würde ich den Parameter explizit zum String machen.

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Kleines Problem mit Namen und Evaluate
« Antwort #8 am: 10.03.08 - 22:18:14 »
... die Deklaration in der Sub ist "etwas" unsauber - es ist auch kein Variant notwendig - das wäre anders, wenn eine Textliste übergeben werden würde, was hier aber nicht ansteht...

Toni
Grüßle Toni :)

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #9 am: 11.03.08 - 08:06:44 »
SO habe das mal geändert, doch jeztt bekomme ich immernoch ein TypeMissmatch

Änderung:

Code
	NameAn = Cstr(Evaluate(|@name([CN];" | & an & | ")|))

zu

Code
	Dim NameT As String
	NameT = Cstr(an)
	NameAn = Cstr(Evaluate(|@name([CN];" | & NameT & | ")|))

Viele Grüße

Christian T.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #10 am: 11.03.08 - 08:28:32 »
Bei welcher der Zeilen bekommst du denn die Meldung? Warum hast du nicht die Parameterdeklaration "aufgeräumt"? Dann müsstest du dir hier nicht diese Umwege machen.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Kleines Problem mit Namen und Evaluate
« Antwort #11 am: 11.03.08 - 08:29:06 »
Wo ist das 'doc'?

sorry, das muss gar nicht rein an der Stelle.
« Letzte Änderung: 11.03.08 - 08:31:52 von DAU-in »
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #12 am: 11.03.08 - 08:38:20 »
Bei welcher der Zeilen bekommst du denn die Meldung?

Bei der Zeile mit dem Evaluate

Warum hast du nicht die Parameterdeklaration "aufgeräumt"? Dann müsstest du dir hier nicht diese Umwege machen.

was meinst du damit?
Viele Grüße

Christian T.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #13 am: 11.03.08 - 08:48:21 »
Mach den Parameter explizit zum String (das ist doch der Typ, den du eigentlich auch erwartest der Schreibweise nach), das habe ich vorher schonmal geschrieben... Also folgendermaßen sollte die Kopfzeile aussehen:
Code
Sub Mail (An As String, Art As String)

Und genau dieses Vorgehen solltest du dir auch zur Gewohnheit machen, sonst passiert dir so etwas bestimmt nochmal...

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #14 am: 11.03.08 - 09:34:46 »
habe ich gemacht bringt leider trotzdem nicht den gewünschten erfolg, sondern nur den selben fehler...

Code
Sub Mail (An As String,Art As String)

.....CODE

Dim NameAn As String
NameAn = Cstr(Evaluate(|@name([CN];" | & An & | ")|))

.....CODE
Viele Grüße

Christian T.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #15 am: 11.03.08 - 09:55:45 »
Hm... Was sagt denn der Debugger?

Zieh' vielleicht mal die Zeile ein wenig auseinander und separiere Formelaufbau, Formelauswertung und Typkonvertierung voneinander. Dann siehst du bei welcher dieser drei Schritte es kracht.

Und noch eine Kleinigkeit, von der ich nicht weiß, ob es überhaupt schlimm ist: Schreib mal das Name bei @name mit einem Großbuchstaben.

Und noch eine Frage: Was machen die Leerzeichen vor und nach den Anführungsstrichen?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #16 am: 11.03.08 - 10:01:24 »
Evaluate gibt ein Array zurück - das Cstr führt daher logischerweise zu einem Type Mismatch ebenso wie die Zuweisung zu einem skalaren Wert.
Entweder also NameAn an Variant deklarieren und das Evaluate-Ergebnis dann mit NameAn (0) ermitteln, oder NameAn als String lassen und das Ergebnis wie folgt zuweisen: Evaluate (....) (0)

Markus:
@name ist absolut das gleiche wie @Name, die Leerzeichen sind auch egal.

HTH,
Bernhard

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Kleines Problem mit Namen und Evaluate
« Antwort #17 am: 11.03.08 - 10:08:47 »
Jetzt ist klar, warum der Fehler kommt. Das hatte ich nicht bedacht mit dem Rückgabewert von Evaluate. Wieder was dazugelernt, genauso wie bei den Antworten auf meine beiden anderen Fragen (wobei ich die halb auch aus Interesse gestellt habe)... Danke Bernhard für die Aufklärung.

Offline C_T

  • Senior Mitglied
  • ****
  • Beiträge: 272
  • Geschlecht: Männlich
Re: Kleines Problem mit Namen und Evaluate
« Antwort #18 am: 11.03.08 - 10:37:02 »
Leider klappt auch das irgendwie nicht

folgender auszug


Code
Dim NameAn As Variant
Dim NameT As String
Dim var As Variant

NameAn = Evaluate(|@Name([CN];" | & an & | ")|)       <---- hier schon wieder das type missmatch
NameT = NameAn(0)
Viele Grüße

Christian T.

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Kleines Problem mit Namen und Evaluate
« Antwort #19 am: 11.03.08 - 10:39:16 »
... hast du beim Aufruf einen String übergeben?

Toni
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz