Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Katja_S am 28.06.05 - 10:31:59

Titel: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 10:31:59
Hallo zusammen,

hab da ein kleines Problem und ich versteh nicht ganz, wo der Fehler liegt.

Hab eine Variable totalClaim als Variant deklariert. Dieser Variable möchte ich einen Double-Wert zuweisen. Beim Ausführen des Skriptes kommt es aber zu der Fehlermeldung "Variant enthält keinen Container". Habt ihr eine Idee, woran das liegt?

Code
Dim totalClaim As Variant
Dim newRest As Double

totalClaim = newRest

Danke schon mal..
Gruß Katja
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Axel am 28.06.05 - 10:35:10
Hi,

versuch's mal so:

totalClaim = CVar(newRest)


Axel
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 10:41:30
Hab das mal ausprobiert, aber es kommt nach wie vor die selbe Fehlermeldung.  :(
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Semeaphoros am 28.06.05 - 10:46:29
Die Fehlermeldung erklärt sich eigentlich nicht aus dem Codeschnippsel, das Du gepostet hast. Kannst Du uns mal ein bisschen mehr Code geben?
Titel: Re: Wert-Zuweisung Variant
Beitrag von: animate am 28.06.05 - 10:46:53
die drei Zeilen, die du gepostet hast sollten ohne Fehler funktionieren. Wie sieht denn das Gesamtwerk aus?
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 10:55:33
Anbei mal der Code drum herum:

Code
Dim totalClaim As Variant
Dim approvedClaim As Variant
Dim newApproved As Double
Dim newRest As Double
Dim gesamt As Double

gesamt = 30
totalClaim = newRest
approvedClaim = newApproved

If checkClaim(totalClaim(0), approvedClaim(0), gesamt) Then
...
End If


Bis zur If-Abfrage funktioniert alles. Nur dort geht der dann nicht rein, weil angeblich nix im Variant drin ist. In den Variablen newRest und newApproved sind aber definitiv Werte enthalten.
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Semeaphoros am 28.06.05 - 10:58:06
Die beiden Varianten sind hier aber garantiert skalare Werte (was der Debugger über das Variablen-Fenster unten ohne weiteres bestätigen wird) und Du vesuchst sie als Array anzusprechen.
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 11:28:40
Wollte mir diesen Sachverhalt gerade im Debugger anschauen. Komischerweise läuft der ausgerechnet bei dieser Funktion nicht in den Debugger. Sonst, wenn ein Agent aufgerufen wird (der dann in die scriptbibliothek läuft), wird der Debugger angezeigt.

Ja, aber zurück zu dem Problem. Ich kann also einen Variant nicht wie ein Array ansprechen? Könnte ich den aber so deklarieren?

Dim totalClaim() As Variant

Titel: Re: Wert-Zuweisung Variant
Beitrag von: koehlerbv am 28.06.05 - 11:35:45
Das kann man wohl machen, Du brauchst dann allerdings vor der Befüllung noch ein Redim, um die gewünschte Dimension des Arrays einzustellen.

Bernhard
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Semeaphoros am 28.06.05 - 11:36:30
Du kannst einen Variant wie einen Array ansprechen, wenn der Variant einen Array enthält. Das ist ja gerade das Interessante am Variant, dass er verschiedene Datentypen enthalten kann. Du kannst auch eine solche Dimensionierung vornehmen, wie Du fragst, da bekommst Du dann einen Array von Variants und nicht einen Variant, in dem ein Array abgespeichert ist (der Unterschied dürfte an dieser Stelle von "akademischem" Wert sein :) ). Allerdings musst Du dann Dein totalClaim immer als Array behandeln und bekommst somit weiter vorne im Code Probleme.

Rufst Du den Agenten aus einer SharedAction heraus auf?
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 11:38:59
Okay, das hab ich jetzt erstmal verstanden. Und das mit der Dimensionierung Array als Variant funktioniert bei mir nicht...Da muss ich mir wohl oder übel etwas anderes überlegen...Trotzdem schon mal danke.

Ja, die Aktion ist eine SharedAction (in der Aktionsleiste). Aber die anderen eigentlich auch.
Titel: Re: Wert-Zuweisung Variant
Beitrag von: animate am 28.06.05 - 11:40:03
Warum benutzt du einen Variant, wenn du weißt, dass du ihm einen Double-Wert zuweisen wirst? Das sieht für mich auf den ersten Blick nicht vernünftig aus...
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 11:47:06
Ich muss das als Variant abspeichern, da ich in einem anderen Fall eine Funktion aufrufe, die mir einen Variant zurückgibt. Diese Funktion holt mir dann immer Werte einzelner Felder heraus. Und da es vorkommt, dass in den Feldern unterschiedliche Werte enthalten sind, nutzte ich den Variant.
Titel: Re: Wert-Zuweisung Variant
Beitrag von: koehlerbv am 28.06.05 - 11:58:39
Wo hast Du denn das Problem mit der Festlegung der Dimension ?

   Dim vResult () As Variant
   Redim vResult (0)
   
   vResult (0) = 500
   
   Msgbox "Result = " & Cstr (vResult (0))
   
Das sollte prinzipiell bei Dir so ähnlich aussehen.

HTH,
Bernhard
Titel: Re: Wert-Zuweisung Variant
Beitrag von: Katja_S am 28.06.05 - 13:15:12
So hätte ich es wohl auch machen können, nur wäre da glaube der Codieraufwand höher, da ich dann immer das Redim machen müsste. Hab das Problem jetzt aber anderweitig gelöst, in dem ich newRest und newApproved doch als Double deklariert hab und meinen Funktionsaufruf hab ich dann enstprechend geändert.

Trotzdem nochmal Danke an alle!