Autor Thema: Inviewedit - Nach dem Ändern des 1. Wertes muss Dokument neu gesucht werden.  (Gelesen 1863 mal)

Offline mwue

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Weiblich
Hallo liebes Forum,

ich habe eine sortierte Ansicht "editierbar" gemacht:

Die Spalten haben die Eigenschaft "bearbeitbar".

Ins Inviewedit Event habe ich folgenden Code gestellt:

Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
   
''code for modifying only the company column and not adding new documents from view.
   
   
   Const QUERY_REQUEST = 1       ' used when the user enters the editable column
   Const VALIDATE_REQUEST = 2     ' used when the user exits the editable column
   Const SAVE_REQUEST = 3      ' saves after validation for an existing view entry
   Const NEWENTRY_REQUEST = 4   ' after validation when the user makes a new entry in a view
   Dim COLUMN_FEATURE As String
   Dim FIELD_FEATURE As String
   
  ' Editable column
   COLUMN_FEATURE =  ColProgName(0)      ' programmatic name of column--see advanced tab
   FIELD_FEATURE = ColProgName(0)         ' field name
   
   'Msgbox COLUMN_FEATURE,, "Spaltenname"
   
   Dim ws As New NotesUIWorkspace
   
   Dim db As NotesDatabase
   Dim view As NotesView
   
   Set db = ws.CurrentDatabase.Database
   If (Source.CaretNoteID = "0") Then Exit Sub
   Set note = db.GetDocumentByID(Source.CaretNoteID)      ' The Notes ID of the document currently highlighted (that is, at the caret location) in a view
   If (note Is Nothing) Then   Exit Sub
   
   If (RequestType = QUERY_REQUEST) Then
      If(note.HasItem(FIELD_FEATURE)) Then
         Columnvalue(0) = note.GetItemValue(FIELD_FEATURE)    'Get the current (original) value to put in Edit box
      Else
         Continue = False                'This doc does not contain the required field; ignore it
      End If
      
   Elseif (RequestType =  VALIDATE_REQUEST) Then
      Continue = True                  'Accept any user input
      
   Elseif (RequestType = SAVE_REQUEST) Then
      Call note.ReplaceItemValue (FIELD_FEATURE, ColumnValue(0))      'assumes that value stored in ColumnValue(0) is the value that goes with that column.
      Call note.Save(True, True, True)
      Set doc = note
      Call Source.SelectDocument(doc)
      
   Elseif (RequestType = NEWENTRY_REQUEST) Then
      REM Create document and create "Form" item
  REM Write column values to the new document
      Set doc = New NotesDocument(db)
      Call doc.ReplaceItemValue("Form", "Lexikon")
      Call doc.ReplaceItemValue("wortdeutsch", "")
      Call doc.ReplaceItemValue("wortenglisch", "")
      Call doc.ReplaceItemValue("wortfranz", "")
      Call doc.ReplaceItemValue("wortschwedisch", "")
      Call doc.ReplaceItemValue("wortspanisch", "")
      Call doc.ReplaceItemValue("wortnorwegisch", "")
      Call doc.Save( False, True )
      
      Call doc.ReplaceItemValue(Colprogname(0), Columnvalue(0))
      
    REM Save(force, createResponse, markRead)
      Call doc.Save(True, True, True)   
      Set view = Source.View
      Call view.Refresh()
      
      Call Source.SelectDocument(doc)
      
   End If
   
End Sub

Soweit funktioniert auch alles wunderbar. Nur habe ich ein Problem: Wenn ich den Wert in der ersten Spalte ändere, ist das Dokument erstmal "weg", d.h. es wird woanders einsortiert (die erste Spalte ist sortiert) und der Cursor bleibt aber an der alten Stelle stehen.

Nun habe ich versucht, Lotus Notes mit

Call Source.SelectDocument(doc)

dazu zu bringen, das geänderte Dokument (doc) wieder auszuwählen, aber leider funktioniert das nicht.  ???

Habt Ihr eine Idee dazu ?

Viele Grüße

Marion

Vielen Dank für Eure Hilfe !

Ich wünsche noch einen schönen Tag !

Viele Grüße

Marion

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Hast Du autorefresh in der Ansicht aktiviert? bzw. mal probiert ob das View.refresh() benötigt wird?
Ansonsten musst Du die Ansicht umstellen....
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline mwue

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Weiblich
Hallo Urs,

erst mal vielen Dank für Deine Antwort.  :)

also Autorefresh ist drin (Ansichtseigenschaften --> 5. Reiter, Aktualisieren = Automatisch - das ist es doch oder ?). Das view.refresh() habe ich auch schon drin (4. Zeile von unten).

Umstellen möchte ich die Ansicht auch nicht, da es sich um ein Lexikon handelt und sonst nicht so leicht in der ersten Spalte gesucht werden kann.  :-:

??

Grüßle

Marion
Vielen Dank für Eure Hilfe !

Ich wünsche noch einen schönen Tag !

Viele Grüße

Marion

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
mach mal am Ende ein
   NotesUIWorkSpace.ViewRefresh
dies sollte die Ansicht neu aufbauen
Gruß
Dirk

Offline mwue

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Weiblich
Hallo zusammen,

vielen Dank für Eure Tipps.

Ich habe meinen Fehler entdeckt. Ich hatte das view.refresh() zwar drin, aber an der falschen Stelle. Dann brauche ich ws.viewrefresh nicht mehr, was mich allerdings schon erstaunt.

Also hier gehört es hin:

Elseif (RequestType = SAVE_REQUEST) Then
      Call note.ReplaceItemValue (FIELD_FEATURE, ColumnValue(0))
         
                                Call note.Save(True, True, True)
      Set doc = note
      Set view = Source.View
      Call view.Refresh()
      'Call ws.ViewRefresh
      Call Source.SelectDocument(doc)
      

Ohne Eure Hilfe hätte ich sicher schon aufgegeben.

 :)

Noch ein schönes Wochenende !

Marion
Vielen Dank für Eure Hilfe !

Ich wünsche noch einen schönen Tag !

Viele Grüße

Marion

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz