Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: hmarco am 08.01.03 - 08:28:35

Titel: Aktion bei Feldwertänderung
Beitrag von: hmarco am 08.01.03 - 08:28:35
Hallo und erstmal ein frohes neues Jahr,

ich habe ein Feld namens Kilometerstand.

Wenn ich dieses Feld ändere möchte ich, dass er in ein anderes Feld das heutige Datum rein schreibt und dass Notes in ein anderes Feld den aktuellen Benutzer reinschreibt.

Jetzt habe ich jedoch das Problem, wie ich in einer @If-Anweisung die Bedingung, Wenn Feld "Kilometerstand" geändert wurde dann tue dies, unterbringe.

Kann mir da vielleicht jemand einen Tipp geben.

Mfg Marco
Titel: Re:Aktion bei Feldwertänderung
Beitrag von: klaussal am 08.01.03 - 08:49:41
moin moin,

im postopen-event den km-stand in ein hidden-feld rüberziehen.
bei querysave abfragen, ob sich der km-stand geändert hat. wenn ja, benutzer eintragen, etc...
aber es führen viele wege nach rom. das war mal ein denkansatz auf die schnelle. ;)
Titel: Re:Aktion bei Feldwertänderung
Beitrag von: Axel am 08.01.03 - 12:55:12
Hi,

hier noch eine andere Alternative:

im Declaration-Abschnitt der Maske eine Variable deklarieren.

Diese mit PostOpen-Event mit dem Feldwert füllen und im QuerySave-Event abfragen ob Feldinhalt und Variable unterschiedlich sind, wenn ja, dann die entsprechenden Aktionen auslösen.

Axel
Titel: Re:Aktion bei Feldwertänderung
Beitrag von: hmarco am 17.01.03 - 13:18:35
Hallo,

hatte ein wenig länger gedauert, hatte noch soviel anderen Kram zu tun.  Habe heute übrigens meine Network+-Prüfung bestanden.

Also ich habe ein Feld "Kilometerstand" und das wird im Post-Open so in eine Variable names "kmcopy" kopiert:

Sub Postopen(Source As Notesuidocument)
   Dim doc As NotesDocument
   Set kmcopy = doc.GetFirstItem("Kilometerstand")
End Sub


Die Variabel sind übrigens im Declerations:

Dim kmcopy As NotesItem
Dim kmcopy2 As NotesItem
Dim item As NotesItem


Jedoch sagt er mir dabei immer "Object variable not set", wenn ich ein Dokument öffne.

Jetzt stellt sich mir die Frage wie bei den meisten Anwendern:
Bin ich nicht doch einfach nur zu blöd dazu?!  ;D

Mfg Marco
Titel: Re:Aktion bei Feldwertänderung
Beitrag von: Axel am 17.01.03 - 13:28:06
Hi,

erstmal herzlich Glückwunsch zur bestandenen Prüfung.

Du mußt auch die doc - Variable belegen. Ändere mal den Code im PostOpen-Event wie folgt ab.

Sub Postopen(Source As Notesuidocument)
   Dim doc As NotesDocument

   Set doc = Source.Document
   Set kmcopy = doc.GetFirstItem("Kilometerstand")
End Sub


Axel




Titel: Re:Aktion bei Feldwertänderung
Beitrag von: klaussal am 17.01.03 - 13:36:51
im queropen den kilometerstand in einem versteckten feld sichern und im querysave alten mit neuem kilometerstand vergleichen. wenn geändert wurde, dann benutzer in feld xyz schreiben. ;)
Titel: Re:Aktion bei Feldwertänderung
Beitrag von: hmarco am 17.01.03 - 13:41:01
Hallo Axel,

da hätte ich auch selber drauf kommen müssen. Fürs nächste Mal weiß ich Bescheid.

Sach mal noch 'ne Frage.

Die Variablen kmcopy und kmcopy2 wie kann ich die mit if vergleichen?

ich habe es so gemacht:

If kmcopy <> kmcopy2 Then

Will er jedoch nicht schlucken. Sagt Type Mismatch. Sind jedoch beides Zahlenfelder.

Der Wert vom kmcopy ist ja noch vom PostOpen und der Wert von kmcopy2 wird beim ausführen des Queryclose ausgelesen. Beides sind Zahlenwerte wieso sagt er hierbei wenn ich Speichern will Type Mismatch.

Mfg Marco
Titel: @Kaussal
Beitrag von: hmarco am 17.01.03 - 13:43:59
Hi Kaussal,

ich kann ich alternativ auch noch ausprobieren. Jedoch denke ich, dassichfast fertig bin, wenn dieses If-Statement funktionieren würde. Siehe oben.

Mfg Marco
Titel: Re:Aktion bei Feldwertänderung
Beitrag von: Axel am 17.01.03 - 14:13:02
Hi,

deine beiden Variablen sind vom Typ Item. Die kannst du nicht mit IF vergleichen.

Du mußt die Feldinhalte nehmen. Das muss so aussehen:

Globale Variable:

Dim kmcopy As String

PostOpen-Event:

Sub Postopen(Source As Notesuidocument)
  Dim doc As NotesDocument

  Set doc = Source.Document
  kmcopy = doc.Kilometerstand(0)

End Sub

QueryClose:

...

  Set doc = Source.Document
  If kmcopy <> doc.Kilometerstand(0) Then 'Prüfung der Feldinhalte
      'Wenn unterschiedlich, tu das hier
  Else
      'Wenn nicht, dann lass es
  End If

...


Ich hab's mit Stringvariable, also für Textfeld gemacht. Evt. mußt du den Variablentyp anpassen.

Axel
 








Titel: Re:Aktion bei Feldwertänderung
Beitrag von: hmarco am 21.01.03 - 10:54:56
Hi,

das geht ja. Ich hatte war nur noch einen Overflow,
weil ich Integer verwendet habe, da habe ich dann
zum Spaß mal Double eingetragen und jetzt läuft es.  :D :D :D

Vielen Dank für eure Hilfe.

Mfg Marco