Domino 9 und frühere Versionen > Entwicklung

Prüfen von Einträgen in Ansicht

(1/4) > >>

KnoJo:
Hallo

Ich habe eine Maske in der User eine Bewertung abgeben. es gibt mehrere themen die zu bewerten sind. dies wird dann gespeichert und in einer ansicht angezeigt.
nun will ich, dass kein thema doppelt von einem user bewertet werden kann.
versucht er das kommt beim speichern eine fehlermeldung.
das wollte ich folgendermaßen realisieren:
beim speichern prüft er in der ansicht ob zum jeweiligen thema der username bereits drin steht der das dokument gerade speichern will.
zunächst hatte ich folgende formel dafür:

@IF
(@IsError(@Contains(thema;@DbLookup("":"NoCache";"";"Ansicht";Thema;1))
&
@Contains(@Name([CN];@UserName);@DbLookup("":"NoCache";"";"Ansicht";Thema;2)));

@SetField("Saveoptions";"1") | @Command([FileSave]) | @Command([FileCloseWindow]);

@Prompt([Ok];"Fehlermeldung";"Sie haben bereits eine Bewertung abgegeben"))




als ich es getestet habe, ging es so wie ich es wollte. ich hab eine bewertung abgegeben und gespeichert. geb ich fürs gleiche thema ein zweites mal eine bewertung ab, kam die gewünschte fehlermeldung.
wenn nun aber jetzt ein anderer user für das thema eine bewertung abgegeben hat, kann ich keine mehr abgeben. es kommt die fehlermeldung.
versteh leider nicht warum das so ist  :(
bitte um hilfe ^^

klaussal:
Ich hab's im Querysave einer Maske mal so gelöst:


--- Code: ---Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument, docSearch As NotesDocument
Dim dc As NotesDocumentCollection
Dim view As NotesView
Dim key As String

Set db = session.currentDatabase
Set uidoc = ws.currentDocument
Set doc = uidoc.document
Set view = db.getView("abgestimmt")

key =  doc.laser(0)

Set docSearch = view.GetDocumentByKey (key )
If Not (docSearch Is Nothing) Then
Messagebox  key + " , Sie haben schon abgestimmt !"
continue = False
Exit Sub
End If
--- Ende Code ---

KnoJo:
was ist doc.laser(0)?

klaussal:
ein Leser-Feld  ;D

KnoJo:
da ich 2 kriterien hab (thema und  username) brauch ich 2 keys.
in der hilfe hab ich gelesen, dass man auch einen array nehmen kann.
hab dann dein script genommen und ein wenig umgeändert:


--- Code: ---Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim docSearch As NotesDocument
Dim dc As NotesDocumentCollection
Dim view As NotesView
Dim key(1 To 2) As String

Set db = session.currentDatabase
Set uidoc = ws.currentDocument
Set doc = uidoc.document
Set view = db.getView("Auswertung")

key(1)=uidoc.FieldGetText("thema")
key(2)=uidoc.FieldGetText("name")

Set docSearch = view.GetDocumentByKey( key )
If Not (docSearch Is Nothing) Then
Messagebox   "Sie haben schon abgestimmt !"
continue = False
Exit Sub
End If

End Sub

--- Ende Code ---

bei Set docSearch = view.GetDocumentByKey( key ) kommt aber eine fehlermeldung: too many keys
bei der ansicht ist in der ersten spalte das thema und in der zweiten der name.
sortiert hab ichs nach kategorie.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln