Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Ozan am 10.07.08 - 09:48:12

Titel: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 09:48:12
Hallo,

wie kann ich den Container inhalt abfragen?
So funktioniert das nicht:

If doc.Frage1(0)= "A" or doc.Frage1(0)= "D" then
 a=a+1
end if

Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 09:49:12
WTF ist ein "Container"?
Titel: Re: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 09:54:19
Mit container meine ich ein Feld der mehrere werte beinhaltet.
Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 09:55:13
Geht aber prinzipiell so. Etwas mehr Kontext wäre daher nicht schlecht. Von welchem Typ sind die Felder, was sagt der Debugger dazu, ...
Titel: Re: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 10:02:50
Feld Typ ist Kontrollkästchen( inhalt : A bis D ), der Debugger sagt dass die Abfrage False liefert und so geht der nicht in die schleife rein. Ich habe mir das Feld angeschaut, wenn ich zwei Werte sprich A und D ankreuze und speichere werden diese Werte unterander :

"A"
"D"

abgespeichert.
Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 10:24:54
Schon mit einem CStr um den Feldwert probiert?
Titel: Re: Container inhalt abfragen?
Beitrag von: koehlerbv am 10.07.08 - 10:32:20
Das ist doch kein String, sondern ein Array of strings, Martin.

Hilfreich sind ArrayGetIndex oder die Kombination von Join und Instr.

Bernhard
Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 10:46:35
Bernhard, ich meinte ja auch Cstr( doc.Frage1(0) ).
Titel: Re: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 12:43:45
Mit "cstr" ändert sich irgendwie nichts, die schleife ist nicht true und somit gehr der da auch nicht rein. Ich habe nachgeschaut, in der Kontrollkästchen ist folgendes enthalten:

A|A
B|B
C|C
D|D

Wenn hier Mehrfachwerte angeklickt werden z.B "A" und "D", wird das in der Dokument von diese Feld so abgescpeichert:

"A"
"D"
Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 12:46:08
Schleife, welche Schleife?
Poste mal ein bißchen den Code rundherum.
Titel: Re: Container inhalt abfragen?
Beitrag von: klaussal am 10.07.08 - 12:50:16
Zitat
Schleife, welche Schleife?
Titel: Re: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 12:53:18
Das ist die schleife:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
Dim doc As notesdocument
Set doc = Source.document
Dim a As Integer

If doc.Frage1(0)= "A" and doc.Frage1(0)= "D" then
 a=a+2  'hier möchte ich 2 mal zählen, weil beide Antworten richtig sind
end if

.....
bis Frage10


End Sub
Titel: Re: Container inhalt abfragen?
Beitrag von: koehlerbv am 10.07.08 - 12:55:16
Ich sehe da keine Schleife.

Liest Du überhaupt, was andere hier antworten??

Bernhard
Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 12:59:47
Na bei dem Code würd ich mal eine Fehlerabfrage einbauen, ob doc überhaupt gesetzt ist.

Titel: Re: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 13:03:28
Falscher Ausdruck, mit schleife meine ich :

If doc.Frage1(0)= "A" and doc.Frage1(0)= "D" then
 a=a+2  'hier möchte ich 2 mal zählen, weil beide Antworten richtig sind
end if

Die "IF" Anweisung ist nicht true. Weil die Abfrage nicht Richtig ist.

@m3
Habe ich bereits, bei den Fragen 2- 10 wo nur eine Wert abgefragt wird, funktioniert das, nur bei mehrere
nicht.

If doc.Frage1(0)= "A" then
 a=a+1
end if
Titel: Re: Container inhalt abfragen?
Beitrag von: m3 am 10.07.08 - 13:10:58
Mit "AND" kann es auch nicht funktionieren, da müsstest Du die Werte Frage1(0) und Frage1(1) checken.

Irgendwie fühl ich mich jetzt langsam gefrotzelt. Dauernd taucht neuer Code auf:

If doc.Frage1(0)= "A" or doc.Frage1(0)= "D" then
 a=a+1
end if

If doc.Frage1(0)= "A" and doc.Frage1(0)= "D" then
 a=a+2  'hier möchte ich 2 mal zählen, weil beide Antworten richtig sind
end if

Also was jetzt "AND" oder "OR"? Mit "OR" sollte es funktionieren, mit "AND" wird es SO nicht funktionieren.

Und wenn jetzt nicht der "korrekte" Code und eine brauchbare Antwort kommt, bin ich draußen.  >:(

Titel: Re: Container inhalt abfragen?
Beitrag von: Driri am 10.07.08 - 13:14:41
Diese Abfrage ist so generell nicht zielführend bei Mehrfachwerten.

Zitat
If doc.Frage1(0)= "A" and doc.Frage1(0)= "D" then
 a=a+2  'hier möchte ich 2 mal zählen, weil beide Antworten richtig sind
end if

Wer sagt Dir denn, daß der Wert immer im Element (0) des Arrays enthalten ist ?

Bernhard hat die entscheidenen Tipps schon geliefert.
Titel: Re: Container inhalt abfragen?
Beitrag von: klaussal am 10.07.08 - 13:16:43
Ich kann's nicht mehr mit ansehen:   :'(

Code
Set doc = Source.document
	Dim a As Integer
	
		
	Forall x In doc.Frage1
				
		If x = "A" Then
			a = a+ 1
		End If
		If x = "B" Then
			a = a+ 1
		End If
		If x = "C" Then
			a = a+ 1
		End If
		If x = "D" Then
			a = a+ 1
		End If
	End Forall
Titel: Re: Container inhalt abfragen?
Beitrag von: koehlerbv am 10.07.08 - 13:19:24
Unelegant, Klaus. Wie es als Einzeiler geht, habe ich ja bereits geschrieben. Aber Ozan kümmert das ja nicht ...

Bernhard
Titel: Re: Container inhalt abfragen?
Beitrag von: klaussal am 10.07.08 - 13:28:14
Das weiß ich auch, aber vielleicht versteht er das so besser .....  ;D
Titel: Re: Container inhalt abfragen?
Beitrag von: Ozan am 10.07.08 - 15:39:24
Hallo,

@Bernhard
sry, mein fehler dass ich das nicht erkannt habe, mit "ArrayGetIndex" kann ich ein ergebniss erreichen. Danke!

@klauss
mit diese Anweisung kann ich das auch abfragen, ich habe es jetzt verstanden.

@m3
dauernd tauchen neue Codes auf, ist auch richtig, weil der Kunde sich nicht entscheiden kann, jetzt soll sogar nur einmal gezählt werden wenn "D" oder "A" angekreuzt wird. Also sry dass ich dir nicht den Endcode geben konnte wegen ständige Änderung. Danke für die Mühe.

Gruss

Ozan

Titel: Re: Container inhalt abfragen?
Beitrag von: klaussal am 10.07.08 - 16:06:42
Im Prinzip ist das ja egal, ob man A, B oder C ankreuzt.

Wichtig ist nur, dass Du verstanden hast, wie es geht.
Titel: Re: Container inhalt abfragen?
Beitrag von: thomson666 am 21.07.08 - 10:50:38
vllt. versteh ich das nicht, aber wenn man sich die Werte von der If Bedingung in eine Variable läd z.B.

dim wert1 as string
wert1 = doc.GetItemValue("Feld")(0)

und ich dann

If wert 1 = "A" or wert1 = "B" then

End If

mache dann seh ich im Debugger IMMER gleich was an der Bedingung nicht stimmt.
Bzw.
vllt sogar eine Variable mit
dim awert as variant
awert = doc.GetItemValue("Feld")

und dann gleich vor der if Bedingung mit IsArray prüfen ob es sich überhaupt um ein Mehrfachwertefeld handelt.



Titel: Re: Container inhalt abfragen?
Beitrag von: koehlerbv am 21.07.08 - 10:55:41
awert = doc.GetItemValue("Feld")
und dann gleich vor der if Bedingung mit IsArray prüfen ob es sich überhaupt um ein Mehrfachwertefeld handelt.

Das ist immer ein Array ...

Bernhard
Titel: Re: Container inhalt abfragen?
Beitrag von: thomson666 am 21.07.08 - 11:03:03
ok dann halt diese Abfrage weglassen.