Hallo,
dieser Code steht bei mir in einer Ansicht - InViewEdit Mode:
On Error Goto Errorhaendler
''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
' Editable columns
fieldName(0) = "work_plan_device_percent"
fieldName(1) = "work_plan_setup_time"
fieldName(2) = "device_piece"
fieldName(3) = "work_plan_time_piece"
fieldName(4) = "work_plan_follow_nr"
Dim ws As New NotesUIWorkspace
Dim note As NotesDocument
Dim db As NotesDatabase
Dim i As Integer
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
'Abfrage Wert: DEVICE_PIECE vor Änderungen
Dim var_device_piece As Integer
var_device_piece = note.device_piece(0)
If (RequestType = QUERY_REQUEST) Then
Continue = True
Elseif (RequestType = VALIDATE_REQUEST) Then
For i = 0 To 4
If(note.HasItem(fieldName(i))) And ColProgname(0) = fieldName(i) Then
fieldValue(i) = ColumnValue(0)
If i = 0 Or i=1 Or i=2 Or i=3 Or i=4 Then
If Not Isnumeric(fieldValue(i)) Then
Msgbox "Bitte Zahl eingeben."
Continue = False
Exit Sub
End If
End If
End If
Next
Continue = True 'Accept any user input
Elseif (RequestType = SAVE_REQUEST) Then
For i = 0 To 4
If fieldValue(i) <> "" Then
If Isnumeric(fieldValue(i)) Then
Call note.ReplaceItemValue(fieldName(i), Cdbl(fieldValue(i)))
Else
Call note.ReplaceItemValue(fieldName(i), fieldValue(i))
End If
fieldvalue(i) = ""
End If
Next
If var_device_piece = 0 Then
note.device_piece_compare = note.device_piece(0)
Goto Forward
Else
If note.device_piece(0) <> note.device_piece_compare(0) Then
note.device_piece_compare_value = 1
note.device_piece_compare = note.device_piece(0)
End If
End If
'note.device_piece_compare = note.device_piece(0)
'-------------------------------------------------------------------------------------------------------------------------
Forward:
Call note.ComputeWithForm(True,True)
Call note.Save(True, True, True)
End If
Exit Sub
----------------------------------------------
Diese Ansicht ist bei mir in einer Maske als eingebettete Ansicht eingebunden ,4 Spalten sind editierbar.
Jetzt ist folgendes Problem:
1. Wenn ich z.B.: 5 Dokumente in der eingebetteten Ansicht habe. Im 3 Dokument eine Spalte verändere, mit Enter bestätige und dann das Hauptdokument speichere, steht der Wert den ich verändert habe wieder auf 0.
2. In einem Dokument in der Ansicht etwas ändere, das Dokument mit Enter verlasse, das nächste Dokument verändere dann schreibt er mir teilweise den alten Wert in ein anderes Dokument.
Mit anderen Worten, er speichert sich teilweise die Einträge im Cash oder sonst irgendwo und setzt die dann unkontrolliert in eine Spalte der eingebetteten Ansicht, warum?
Ich habe mal die im Code fett markierte Zeile eingefügt, das der Feldinhalt geleert wird, bringt aber auch nichts.
Hat jemand schon mal das Problem gehabt bzw. einen Ansatz wie ich das Problem lösen könnte?
Mfg Horst