Autor Thema: Prüfen von Einträgen in Ansicht  (Gelesen 2941 mal)

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Prüfen von Einträgen in Ansicht
« am: 09.11.05 - 10:31:58 »
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

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #1 am: 09.11.05 - 10:37:20 »
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

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #2 am: 09.11.05 - 10:44:03 »
was ist doc.laser(0)?

klaussal

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #3 am: 09.11.05 - 10:47:53 »
ein Leser-Feld  ;D

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #4 am: 09.11.05 - 11:40:10 »
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

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.

klaussal

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #5 am: 09.11.05 - 11:51:07 »
Ich hoffe, Du hast die Hilfe auch komplett gelesen:
Zitat
...view of the current database, which categorizes documents by category and, within each category, by author.

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #6 am: 09.11.05 - 12:03:01 »
sorry, versteh ich jetzt nich  ???

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Prüfen von Einträgen in Ansicht
« Antwort #7 am: 09.11.05 - 12:06:25 »
Wenn für das Modul (hier: Deine Maske) nicht Option Base 1 angegeben hast, dann gilt der Defaultwert 0. Du solltest dann Dein Array key auch entsprechend definieren:
Dim key (0 to 1) As String.

Nur so wegen Ordnung und Sauberkeit im Schlachthaus ...

Bernhard

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #8 am: 09.11.05 - 12:08:33 »
geht auch nicht. hab ich schon ausprobiert

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Prüfen von Einträgen in Ansicht
« Antwort #9 am: 09.11.05 - 12:10:21 »
Ist eigentlich auch Spalte 2 sortiert ? Die Fehlermeldung deutet darauf hin, dass sie das nicht ist.

Bernhard

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #10 am: 09.11.05 - 12:25:27 »
nein sie war nicht sortiert  ;)
jetzt sind wir da wo ich mit meiner formelsprache am anfang war  ;D
wenn bereits einer ein thema bewertet hat, kann ich es nicht mehr bewerten.

klaussal

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #11 am: 09.11.05 - 12:34:08 »
Also von vorne:
- was sagt der Debugger ?
- ist der key richtig gefüllt ?
- ist die Ansicht ok ?

etc
etc

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #12 am: 09.11.05 - 12:37:42 »
ok habs jetzt *freu*
hab die erste spalte aufsteigend sortiert, ohne kategorisierung.
nun scheint es zu gehn :)

thx ^^

klaussal

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #13 am: 09.11.05 - 12:48:12 »
Das steht alles in der Hilfe + hatte ich in einem früheren Beitrag bereits erwähnt (Zitat aus der Hilfe).

Wer lesen kann ist eindeutig im Vorteil  ;)

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #14 am: 09.11.05 - 13:03:03 »
kann nich so gut englisch. und das zitat hab ich nichtmal zur hälfte verstanden ;D

klaussal

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #15 am: 09.11.05 - 13:11:50 »
In der EDV arbeiten und dann kein Englisch können ?
Auf lange Sicht gesehen, wirst Du das wohl lernen müssen, sonst wird das nix  :P Viel Literatur gibt's halt nur auf amerikanisch.

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #16 am: 09.11.05 - 13:41:50 »
ich sag nicht, dass ich keins kann.
sondern nur, dass meins für das zitat nicht ausgereicht hat um es vollständig und richtig zu verstehen...

klaussal

  • Gast
Re: Prüfen von Einträgen in Ansicht
« Antwort #17 am: 09.11.05 - 13:50:08 »
Also: üben , üben, üben  ;D

Offline KnoJo

  • Frischling
  • *
  • Beiträge: 28
Re: Prüfen von Einträgen in Ansicht
« Antwort #18 am: 09.11.05 - 14:24:01 »
ja ok ok...
aber ich bin noch nicht fertig hier.
am anfang hatte ich ja formel sprache und da hatte ich noch diesen befehl:
Code
@Contains(@Name([CN];@UserName);@DbLookup("":"NoCache";"";"(Ansicht2)";"Grupp1";2))

ansicht2 enthält 2 spalten. in der ersten steht grupp1, grupp2 usw. in der 2 eine text liste mit mehreren usernamen.
ziel ist es zu prüfen ob der user in einer bestimmten gruppe ist.
funktioniert hat das schon aber wie mach ich das jetzt in lotus script?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Prüfen von Einträgen in Ansicht
« Antwort #19 am: 09.11.05 - 14:28:01 »
Für LS bräuchtest Du die 2. Spalte gar nicht:
NotesView.GetDocumentByKey (<gruppenname>)
Dann mit ArrayGetIndex das Feld prüfen, in dem die Mitglieder stehen - fertig.

Bernhard

PS: Wenn Du uns ein paar Grossbuchstaben an den passenden Stellen spendierst, würden sich Deine Texte auch besser lesen lassen. Danke im voraus.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz