Autor Thema: Probleme mit editierbare Spalten und Werte Aktualsieren  (Gelesen 1406 mal)

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Hallo zusammen!

Erst mal will ich mich bei allen bedanken, die dazu beigetragen haben, dass das Forum mit vielen nützlichen Informationen und Tipps befüllt ist.

ich arbeite nicht so lange mit lotus notes und habe (bis jetzt) immer eine Lösung für meine Probleme gefunden. (Danke euch)

Leider habe ich noch ein Paar Probleme, die für die Experten unter euch keine sind. ich habe vorher stundenlange im Forum gesucht aber leider ohne Erfolg.

Ich arbeite mit dem Notes Domino Designer 6.5.1

Also... mein erstes Problem ist wie folgt:

ich habe eine Ansicht erstellt. Diese enthält eine Spalte, die man editieren kann und ggf. ein neuen Eintrag einfügen kann.
Den Code in der Option "InViewEdit" habe ich mir aus der Notes Hilfe geholt und mir eingepasst.

Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
  REM Define variables
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim caret As String
   
  REM Get the CaretNoteID - exit if it does not point at a document
   caret = Source.CaretNoteID
   If caret = "0" Then Exit Sub
   
  REM Get the current database and document
   Set db = Source.View.Parent
   Set doc = db.GetDocumentByID(caret)
   
  REM Select the request type
   Select Case Requesttype
      
   Case QUERY_REQUEST
  REM Reserved - do not use in Release 6.0
      
   Case VALIDATE_REQUEST
  REM Cause validation error if user tries to exit column with no value
      If Fulltrim(Columnvalue(0)) = "" Then
         Messagebox "You must enter a value",, "No value in column"
         Continue = False
      End If
      
   Case SAVE_REQUEST
  REM Write the edited column view entries back to the document
      For i = 0 To Ubound(Colprogname) Step 1
         Call doc.ReplaceItemValue(Colprogname(i), Columnvalue(i))
      Next
    REM Save(force, createResponse, markRead)
      Call doc.Save(True, True, True)
      
   Case NEWENTRY_REQUEST
  REM Create document and create "Form" item
  REM Write column values to the new document
      Set doc = New NotesDocument(db)
      Call doc.ReplaceItemValue("Form", "Module")
      For i = 0 To Ubound(Colprogname) Step 1
         Call doc.ReplaceItemValue(Colprogname(i), Columnvalue(i))
      Next
    REM Save(force, createResponse, markRead)
      Call doc.Save(True, True, True)
      
   End Select
   
End Sub



Soweit ist alles gut und funktioniert.

Aber wenn ich einen Feld direkt in der Ansicht ändern möchte und den wert Lösche und doch den vorgang abbrechen möchte (aus irgendein Grund) geht das gar nicht und den Alten Wert bekomme ich auch nicht zurück ??!!

ich habe den Code an der Stelle



Case VALIDATE_REQUEST
  REM Cause validation error if user tries to exit column with no value
      If Fulltrim(Columnvalue(0)) = "" Then
         Messagebox "You must enter a value",, "No value in column"
         Continue = False
      End If


von "Continue = False" --> in "Continue = True" geändert, ich bekomme zwar die Meldungen angezeigt und ich kann auch weiter gehen aber den Wert in der Feld wird gelöscht und es bleibt leer?!
 
Gibt es vielleicht einen Weg, den Alten wert wieder reinzuschreiben oder vielleicht eine möglichkeit abzubrechen und die Datenbank zu schließen ohne den Wert zu löschen ?! ???


meine zweite Problem hängt auch vom ersten ab:

ich habe eine Maske erstellt und in der Maske habe ich ein editierbares Feld "Dialog List" eingebaut. in das feld hole ich die Werte aus der oben genannte Ansicht mittels den Code: @DbColumn("":"nocache";"";"Module";1).

Wenn jetzt der Admin (der allein die Rechte hat, einen Eintrag in der Ansicht zu ändern bzw. zu löschen) einen Eintrag ändert soll auch die Werte, die schon in  der Dokumente gespeicherte sind entsprechen geändert werden bzw. beim Löschen eine Eintrag eine Fehle Meldung erscheinen, falls der Wert noch in einen Dokument existiert.

ich hoffe ich könnte das Problem so gut wie möglich schildern und mir jemanden helfen kann :-\

Vielen Dank nochmal

Gruss
Salih

« Letzte Änderung: 29.10.06 - 23:04:19 von Sweety »

botschi

  • Gast
Re: Probleme mit editierbare Spalten und Werte Aktualsieren
« Antwort #1 am: 30.10.06 - 08:58:40 »
Erstmal dazu:
"Gibt es vielleicht einen Weg, den Alten wert wieder reinzuschreiben oder vielleicht eine möglichkeit abzubrechen und die Datenbank zu schließen ohne den Wert zu löschen ?!"

BEVOR der User den Wert aus der Spalte ändert, einfach den alten Wert auf eine Variable schreiben.
Das kannst Du in einer der der Cases machen, such Dir das beste dafür aus. Dann prüfst Du im "Case VALIDATE_REQUEST" den neuen Wert des User und wenn dieser Dir nicht gefällt, setzt Du continue auf false. So wird der Wert nicht in das Dokument geschrieben und die Datenbank muss auch nicht zu.

Zu dem zweiten problem kann ich nur sagen, dass die Vorgehensweise dafür nicht sehr schön ist. Der Admin entfernt einen Wert aus einer Liste und muss dann alle Doks ändern, die diesen alten Wert haben? Was soll denn anstatt des alten Werts da rein? Das kannst Du im Postsave des Doks machen, das der Admin ändert. Oder einen periodischen Agenten der nachts die Aufgabe ausführt, so muss der Admin beim Speichern nicht warten, bis alle Doks geändert wurden.
Aber einen Schönheitspreis bekommst Du dafür sicher nicht....

Gruss, Matthias

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: Probleme mit editierbare Spalten und Werte Aktualsieren
« Antwort #2 am: 01.11.06 - 10:52:04 »
Als erste danke für den Tipp und die schnelle Antwort, ich werde es gleich ausprobieren, wie ich das realisieren kann. ;)

Bezüglich meine zweites Problem Vielleicht habe ich mich nicht klar genug ausgedrückt ...ich versuche es noch einmal....

Also ..folgendes:

In der Datenbank werden Dokumente erstellt. Jedes Dokument soll ein bestimmtes Modul haben. Die Liste alle Module (die in eine separate Ansicht steht) soll aber nur von dem Abteilungsleiter gepflegt werden. Das Heißt nur er hat (bekommt) die rechte in der Liste was zu ändern, zu löschen oder hinzuzufügen. Alle anderen user sollen die Möglichkeit haben durch einen Feld in der Maske einen Wert aus der Modul List auszuwählen. Soweit ist die Idee.

Meine Frage war, wie bekomme ich das hin, dass wenn der Abteilungsleiter einen Modul in der Liste geändert hat z.b von „Test1“ in „Test2“ oder gelöscht hat (da das Modul nicht mehr vorhanden ist), dass zugleich auch alle Dokumente, die den Modul „Test1“ haben aktualisiert werden und den Modul „Test2“ bekommen. Oder zu mindest wenn der User das Dokument wieder öffnet und ändert, dass er durch eine Meldung aufmerksam gemacht wird, das der ausgewählte Modul nicht mehr in der Liste existiert und einen anderen Wert ausgewählt werden soll.

Vielen Dank nochmal.

Gruß
Salih

botschi

  • Gast
Re: Probleme mit editierbare Spalten und Werte Aktualsieren
« Antwort #3 am: 01.11.06 - 11:20:31 »
In der Datenbank werden Dokumente erstellt. Jedes Dokument soll ein bestimmtes Modul haben. Die Liste alle Module (die in eine separate Ansicht steht) soll aber nur von dem Abteilungsleiter gepflegt werden. Das Heißt nur er hat (bekommt) die rechte in der Liste was zu ändern, zu löschen oder hinzuzufügen. Alle anderen user sollen die Möglichkeit haben durch einen Feld in der Maske einen Wert aus der Modul List auszuwählen. Soweit ist die Idee.
Dagegen spricht auch nix.

Meine Frage war, wie bekomme ich das hin, dass wenn der Abteilungsleiter einen Modul in der Liste geändert hat z.b von „Test1“ in „Test2“ oder gelöscht hat (da das Modul nicht mehr vorhanden ist), dass zugleich auch alle Dokumente, die den Modul „Test1“ haben aktualisiert werden und den Modul „Test2“ bekommen.
Das ist meiner Meinung nach nicht gut gelöst.
Wenn ein Wert sich ändert, könnte man sicher die Doks auf diesen neuen Wert ändern, aber wie und wann? Wenn Der User den Wert ändert, sollen gleich alle Doks geändert werden? Wie lange soll der arme User denn warten? Wenn Du die anderen Doks im Hintergrund änderst und ein anderer Anwender hat eines der Doks zur Bearbeitung geöffnet, dann gibts mitunter einen Speicherkonflikt. Also das sollte man sich gut überlegen, wann und wie man alle anderen Doks ändert.
Was machst Du aber, wenn der Wert vom Leiter gelöscht wird? Sollen die Werte aus den Doks auch gelöscht werden? Was soll stattdessen rein? Wenn man den Wert einfach löscht, was ergeben sich in anderen Doks für Folgefehler?

Oder zu mindest wenn der User das Dokument wieder öffnet und ändert, dass er durch eine Meldung aufmerksam gemacht wird, das der ausgewählte Modul nicht mehr in der Liste existiert und einen anderen Wert ausgewählt werden soll.
Das ist schon etwas anderes, das kannst Du relativ einfach lösen. Beim Öffnen des Doks oder bei Wechseln in den Bearbeitungsmodus kannst Du ein @dbcolumn auf die Ansicht machen, in der die Werte vorrätig sind. Dann prüfen, ob der Wert in dem Dok in der Liste des @DBcolumn ist und dann Meldung ausgeben oder nicht.

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: Probleme mit editierbare Spalten und Werte Aktualsieren
« Antwort #4 am: 01.11.06 - 11:31:12 »

Alles Klar...Dank nochmal für den Tipp..

ich werde versuchen eine Lösung hinzubekommen und werde mich nochmal melden falls es geklappt hat.

Gruß
Salih

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz