Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Demian am 25.02.07 - 09:46:23

Titel: Verständnisproblem
Beitrag von: Demian am 25.02.07 - 09:46:23
Moin,moin,

wieso funktioniert untenstehender Code auch ohne call doc.save(true,false)???Werden im Backend gesetzte Flags automatisch gespeichert?


Code
Sub Click(Source As Button)
	'****************************************************************************************
	'Diese Prozedur ändert das Flag "verliehen" auf 0, und öffnet das aktuelle Dokument erneut,damit die 
                'Felder in der Maske bearbeitbar sind.
                '****************************************************************************************
	'Allgemein
	Dim work As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim s As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim ID As String
	'*****************************************************************************************
	
	Set uidoc = work.CurrentDocument
	Set doc = uidoc.Document
	
	ID = doc.NoteID
	
	doc.verliehen = "0"
	
	'Call doc.Save(True,False)	
	Call uidoc.Close(True)
	
	Set db = s.CurrentDatabase
	Set doc = db.GetDocumentByID(ID)
	Call work.EditDocument(True,doc)	
End Sub


Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: m3 am 25.02.07 - 13:18:53
SaveOptions Feld auf "1" gesetzt?
Titel: Re: Verständnisproblem
Beitrag von: Demian am 25.02.07 - 18:22:32
Moin Martin,

nicht bewusst per Code. Wenn man sich die vorhandenen Flags des Dokuments in den Eigenschaften ansieht, ist SaveOptions auch nicht vorhanden.

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 25.02.07 - 18:38:48
Irgendwas musst Du aber anstellen, denn das pure NotesDocument.ItemName = "wert" speichert garantiert nichts.

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 25.02.07 - 22:27:35
Hallo,

im Queryopen der Maske habe ich folgende Formel :
@If(VerwendetVon != "";@SetField("Verliehen";"1");@SetField("Verliehen";"0"))

Das Feld "VerwendetVon" ist aber zu dem Zeitpunkt, wo o.g. Code ausgeführt wird <> "", also wird Verliehen ja auf 1 gesetzt.

Hatte in der Maske noch das Feld für das Flag mit Vorgabewert "0". Habe das Feld jetzt gelöscht, aber es geht immer noch ohne Speichern.

Bin etwas ratlos.

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 25.02.07 - 23:25:31
Da uns Deine Datenbank nicht vorliegt, musst Du selber weitersuchen. Dein
doc.verliehen = "0"
ohne Call doc.Save speichert auf jeden Fall nichts.

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 26.02.07 - 00:12:09
werde dann mal weitersuchen...
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 26.02.07 - 00:19:19
Dir wird nichts anderes übrigbleiben ...

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Tode am 26.02.07 - 18:41:19
also: Ich behaupte, dass Du zwar den im Backend gesetzten Wert siehst, dieser aber nicht wirklich gespeichert ist.
Verlässt Du das Dokument, ohne es erneut zu speichern, dann ist beim nächsten öffnen des Dokuments der Wert wieder weg.

Das Problem ist in Script: Du kriegst es durch Deine "Neu- Zuweisung" nicht wirklich hin, dass doc ein neues Objekt referenziert.

Ob das ein "bug" ist oder ein "feature" will ich gar nicht beurteilen, aber wenn Du mal mit dem Debugger durchgehst, wirst Du sehen, dass das Item "verliehen" immer mit "0" befüllt bleibt.

Kommentiere mal die zeile work.Edit... aus, und Du wirst sehen, dass gar nix gespeichert ist, wenn Du das doc manuell wieder öffnest...

Gruß
Tode
Titel: Re: Verständnisproblem
Beitrag von: Demian am 26.02.07 - 19:34:14
Moin Tode,

sämtliche Felder in der Maske lassen sich aber nur bearbeiten, wenn Verliehen = 0 ist. Bevor die Aktion losläuft, ist Verliehen aber definitiv 1, weil sich keins der Felder bearbeiten lässt, wenn man in den Bearbeitungsmodus geht.

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 26.02.07 - 20:17:28
Was nun: Verliehen = 0 oder Verliegen = "0"? Und was steht tatsächlich im Item Verliehen? Und hierzu nicht das Dokument öffnen - nicht, dass Du da auch noch ein cfd-Feld hineingebastelt hast ... Mittlerweile geht es ja immer mehr durcheinander in diesem Thread hier ...

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 26.02.07 - 21:01:48
was ist ein cfd-Feld? "0" steht im Feld. Wenn ich mir in ner Aktion mittels msgbox doc.verliehen(0) (doc =ins Backend geholten uidoc)

 
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 26.02.07 - 21:06:26
cfd = computed when displayed.

Und Du sollst das nicht im Frontend machen! Schau Dir das Item im zweiten Reiter der Dokumenteigenschaften an - ohne das Dokument zu öffnen.

Ich befürchte, Du hast noch an ganz einer anderen Stelle einen oder mehrere Denkfehler (was ja nicht schlimm ist in der Lernphase!). Wir kommen schon dahinter  ;)

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 26.02.07 - 21:19:01
Hallo Bernhard,

da steht im Flag Verliehen

Feldname: Verliehen
Datentyp: Text
Datenlänge: 1 Byte
Seq.-Num.: 17
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"1"

Also ist ja die eins drin bevor ich es öffne.

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 26.02.07 - 21:27:03
Und wenn Du jetzt noch die anderen Fakten (Formeln etc.) offenbarst, kommen wir sicherlich auch weiter. Keiner weiss hier, was Du da treibst ... Das einfachste wäre wohl, Du stellst die DB hier ein. Sonst wird das nix, da Du irgendwie sehr sparsam mit Infos bist ...

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 26.02.07 - 22:01:05
wird wohl das Beste sein...anbei die Datenbank.

Das Ganze findet in der Maske "Messgeräte" statt. Habe ein Testdokument drin. Mit der Aktion (unbenannt) wird der aktuelle Wert von Verliehen angezeigt.

Gruß
Demian

Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 26.02.07 - 23:47:47
Ich habe mir die Datenbank jetzt mal angeschaut. Das sollten jetzt auch mal die "jüngeren" Forumsmitglieder tun (die noch nicht so viel Hilfe-Beiträge geleistet haben) und die Unstimmigkeiten zusammentragen.

Ich gebe mal ein paar Tipps:
- Frontend versus Backend
- QuerySave-Event ...
- weiteres ...

Jetzt bin ich mal gespannt, wie die Community abseits der bekannten Beitragslieferanten arbeitet. Ich mag jedenfalls nicht ... Hierfür braucht es wirklich keinen Professional.

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 27.02.07 - 07:30:40
Jaja, reibs mir nur schön unter die Nase, was ich für ein Laie bin  :P

Habe mir das Querysave der Maske nochmal angeschaut, werde aber trotzdem nicht schlau.

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: DerAndre am 27.02.07 - 08:05:39
Ich biete

FelderAbfragenUndSetzen.

Titel: Re: Verständnisproblem
Beitrag von: Demian am 27.02.07 - 08:50:30
Moin,moin,

das Querysave wird doch aber bei der Aktion "Daten ändern" gar nicht ausgeführt? Habe mir das jetzt im Debugger nochmal angeschaut, und das Flag verliehen wird zwar auf "0" gesetzt, hat jedoch nach dem Call work.EditDocument(True,doc)   wieder den Wert 1. Also wurde wie ihr ja schon gesagt habt der wert nicht gespeichert. Wieso lassen sich aber die Felder dann aber trotzdem bearbeiten????????

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: m3 am 27.02.07 - 09:45:59
Ich habe mir die Datenbank jetzt mal angeschaut. Das sollten jetzt auch mal die "jüngeren" Forumsmitglieder tun (die noch nicht so viel Hilfe-Beiträge geleistet haben) und die Unstimmigkeiten zusammentragen.
Du pist ein pöser Pursche! ;)

Darf ich mitspielen oder gehöre ich schon zu den "bekannten Beitragslieferanten"?  :D
Titel: Re: Verständnisproblem
Beitrag von: Demian am 27.02.07 - 12:18:12
Wenns nach mir geht, können auch die bekannten Lieferanten ihre Statements abgeben  ;D
Titel: Re: Verständnisproblem
Beitrag von: DerAndre am 28.02.07 - 09:45:33
So hab nochmal a bisserl was geschaut.

Mit ist noch was aufgefallen.

Schau dir in der Hilfe mal genau an, was dort zu 'Eingabe Aktiviert' zu lesen steht.
Titel: Re: Verständnisproblem
Beitrag von: Demian am 28.02.07 - 10:55:01
Hallo Andre,

wenn du auf die 1 und 0 anspielst. Das weiß ich schon, aber in den Feldern Typ, Name Seriennummer usw. funktioniert es auch mit @if(@isnewdoc). Oder meinst du was anderes?

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: DerAndre am 28.02.07 - 11:00:21
Ich meinte diesen kleinen Satz:

 "Eingabe aktiviert" funktioniert nur, wenn der Feldstil auf "Betriebssystem" gesetzt ist.

Argh, wieder die 7...  ::)

Steht der auch in der 7er Hilfe?
Titel: Re: Verständnisproblem
Beitrag von: Otto am 28.02.07 - 12:03:57
es hängt IMHO an den @Formeln im Queryopen:
@setfield hat dieselben Auswirkungen wie wenn man mit Script den Feldwert im Backend ändert _und_ mit doc.save(..) speichert.

Gruß
Otto
Titel: Re: Verständnisproblem
Beitrag von: Demian am 28.02.07 - 17:07:53
Hallo Otto,

hatte ich auch gedacht. Wenn ich die Formel aber raus hole, lassen sich die Felder trotzdem bearbeiten (Aktion Daten ändern)

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 28.02.07 - 17:12:27
@SetField speichert im UI-Kontext keine Daten. Ottos HO trügt.

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Otto am 01.03.07 - 13:32:38
@ Demian:


@bernhard:
Vorschlag für Deine Memomaske: schreib doch mal ins Queryopen
"@SetField("Subject";"wird eh nicht gespeichert")"
- und dann schau Dir Deine Mails 2x an  ;-)

Gruß
Otto
Titel: Re: Verständnisproblem
Beitrag von: koehlerbv am 01.03.07 - 13:44:54
Na, das brauch ich mir nur einmal anzuschauen, um zu sehen, dass Du Recht hast. Wieder was gelernt.

Zwei weitere Beobachtungen:
- Der im QueryOpen per @SetField eingefügte Inhalt wird im Frontend erstmal nicht dargestellt.
- Unter R5 funktioniert das nicht - die neue 6er Engine zeigt wieder mal ein anderes Verhalten.

M.E. nach ist das Verhalten der 6er Engine falsch (allein schon aus Kompatibilitätsgründen).

Auf jeden Fall aber danke für die Korrektur meines falschen Statements.

Bernhard
Titel: Re: Verständnisproblem
Beitrag von: Demian am 01.03.07 - 13:55:27
Hallo Otto,

vielen Dank für deinen Tipp. Hide-When würde bedeuten, dass ich diese Felder auch alle 2 x anlegen muss, weil man sie ja sehen soll. Aber halt nichts eingeben.

Mit Input-Enabled-Formel meinst du sowas wie:

@if(@isnewdoc;"1";"0")????

Bin so langsam am Verzweifeln. Das Gescheiteste wäre, die Maske nochmal komplett neu zu erstellen. Aber dann würde ich wahrscheinlich wieder genauso vorgehen.

Gruß
Demian
Titel: Re: Verständnisproblem
Beitrag von: DerAndre am 01.03.07 - 14:06:55
Du könntest es auch über einen Zugriffskontrollierten Abschnitt regeln.

Mit den 2 Feldern bist Du immer auf der sicheren Seite.

Warum wird das Feld eigentlich erst beim Öffnen gesetzt?
Titel: Re: Verständnisproblem
Beitrag von: Otto am 01.03.07 - 14:33:46
Hallo Demian:

Du hast z.B. ein Feld a) 'AusgeliehenAm' und ein Feld b)'AusgeliehenAm_1'.
Hide-When = 'Absatz verbergen ...':
a) @If(VerwendetVon = "") | @If(@IsNewDoc) | @If(Verliehen = "1")
b) @If(AusgeliehenAm = "" | Verliehen = "0" )
(btw kann man sich die @if übrigens auch hier sparen)

mit 'Input Enabled' meinte ich 'Eingabe aktiviert' :
a)@if(AusgeliehenAm = "")
b)@if(AusgeliehenAm = "") (Unfug, da 'berechnet zur Ansicht' - wahrscheinlich C&P-Fehler)

zeigt eigentlich recht gut, wie man sich das Leben unnötig schwer machen kann.

Ich denke dass Du Dir z.B. die 'berechnet zur Anzeige' - Felder schenken kannst.
Der Unterschied in den versch. Techniken liegt vom Aussehen her darin, dass die 'Eingabe inaktvierten' Felder matt hinterlegt erscheinen.

Gruß
Otto
Titel: Re: Verständnisproblem
Beitrag von: Demian am 01.03.07 - 14:42:53
Hallo,

@André: Welches Feld meinst du?

@Otto: Habe ja deswegen berechnet zur Anzeige, damit sie den eingebenen Wert anzeigen, er sich jedoch nicht ändern lässt. Was ist ein C&P-Fehler????

Habe doch in den berechneten Feldern nur Hide-When-Formeln und keine bei Eingabe aktiviert????

Gruß
Demian

Titel: Re: Verständnisproblem
Beitrag von: Otto am 01.03.07 - 15:08:26
Zitat
Habe ja deswegen berechnet zur Anzeige, damit sie den eingebenen Wert anzeigen, er sich jedoch nicht ändern lässt.

das Ergebnis erhältst Du doch bereits mit der  inaktvierten Eingabe

Zitat
Was ist ein C&P-Fehler????
copy&paste-Fehler:
Du kopierst ein Feld und Notes macht beim einfügen Feld_1 draus.
Du veränders ein paar Eigenschaften, vergisst aber dabei ein paar andere  :o

Gruß
Otto
Titel: Re: Verständnisproblem
Beitrag von: Demian am 01.03.07 - 16:30:57
achso, ja das kommt vor  ;D

Werde mir das heute abend mal zu Gemüte führen und würde mich morgen wieder melden.

Gruß
Demian


PS: Bin arbeitsbedingt noch nicht dazu gekommen. Aber sobald es geht, werde ich mir das wirklich nochmal ansehen und mich dann melden!!!!!
Titel: Re: Verständnisproblem
Beitrag von: Demian am 08.03.07 - 18:44:09
Moin,moin,

wenn auch verspätet habe ich mir das doch noch mal zu Gemüte geführt und bin immer noch nicht schlauer.

Die Formel: @If(VerwendetVon != "";@SetField("Verliehen";"1");@SetField("Verliehen";"0")) im Queryopen der Maske habe ich rausgeholt, aber die Aktion "Daten ändern" funktioniert immer noch ohne doc.save(true,false)...

Also, die Maske zeigt ja folgende Felder an:

Typ = nur bearbeitbar, wenn neues Dokument
Name = siehe Typ
Seriennummer = siehe Typ
KalibriertAm = nur bearbeitbar, nach Aktion "Daten ändern"
VerwendetVon = nur bearbeitbar, wenn VerwendetVon = ""
AusgeliehenAm = wird zukünftig im Exiting von VerwendetVon automatisch auf das aktuelle Datum gesetzt
BenoetigtBis = nur bearbeitbar, wenn Verliehen != "1"
Baustelle = nur bearbeitbar, wenn Verliehen != "1"
Sonstiges = nur bearbeitbar, wenn Verliehen != "1"

Was stimmt also an meinen Formeln nicht, bzw. welche Formeln müsste ich verwenden? Es ist ja nicht so, dass es nicht so funktioniert, wie ich es will, nur das mit der Aktion "Daten ändern" ohne doc.save(true,false) irritiert mich ziemlich!!!! Habe die Aktion Schritt für Schritt mal im minimierten Debugger durchlaufen lassen. So wie es aussieht zieht die Zeile Call uidoc.Close(True) gar nicht. Das Dokument wird weiterhin angezeigt????

Gruß
Demian