Autor Thema: InViewEdit - Frage  (Gelesen 2365 mal)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
InViewEdit - Frage
« am: 28.04.05 - 15:45:58 »
Hallo,

habe eine Ansicht in der ich die Spalten Editierbar gemacht habe, folgender Code im Modul Inviewedit:

Sub Inviewedit(Source As Notesuiview, Requesttype As Integer, Colprogname As Variant, Columnvalue As Variant, Continue As Variant)
   On Error Goto errhandler
   ''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
   
   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
         End If
         
      Next
      Call note.ComputeWithForm(True, True)
      Call note.Save(True, True, True)
      
   Elseif (RequestType = NEWENTRY_REQUEST) Then
      Set note = New NotesDocument( db )
      note.Form = "FormlessRequest"
      note.Status = 2
      Call note.ComputeWithForm( False, False )   
      Call note.Save(True, True, True)
      
   End If
   
   Exit Sub
errhandler:
   Msgbox Error, 16, "Ansicht $pmworkplan -> Modul: Inviewedit" & Chr$(13) & "Line: " & Erl()
   Exit Sub
End Sub
---------------------------------------------------------------------------------------------

Meine Frage:
Ich möchte gerne, wenn in einer Spalte in der Ansicht ein Wert eingetragen wird das er mir in dieses Dokument in 2 weiteren Feldern auch etwas einträgt.
Diese Felder werden nicht in der Ansicht angezeigt!

Ist das überhaupt möglich? Wenn ja, ic habe da leider keinen Ansatz wie man es lösen könnte!

Danke im vorhinein für eure Hilfe!

Mfg Horst

P.S.: Diesen Code habe ich aus der Hilfe!
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: InViewEdit - Frage
« Antwort #1 am: 28.04.05 - 16:51:49 »
Hi,

ohne jetzt den Code im Einzelnen durchgegegangen zu sein, müsste das ohne grosse Probleme machbar sein. Du hast doch mit der Variablen note Zugriff auf das entsprechende Dokument, somit auf auf alle Felder.

Ich denke mal bei SAVE:REQUEST könnte man z.B. so was machen.
...
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
         End If
         
      Next
      note.Feldname = "Irgendwas"
      Call note.ComputeWithForm(True, True)
      Call note.Save(True, True, True)
...


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: InViewEdit - Frage
« Antwort #2 am: 29.04.05 - 09:16:01 »
Hallo Axel,

jetzt habe ich folgenden Code hinzugefügt, der ist fett dargestellt:
.......
Dim var_device_piece As Integer
   var_device_piece = note.device_piece(0)


.....

   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
         End If
      Next
      
      Abfrage:Wenn der Wert vorher von DEVICE_PIECE sic geändert hat, unterschiedlich dann 1 in COMPARE_VALUE                        If var_device_piece > 0  And note.device_piece_compare(0) <> note.device_piece(0) Then
         note.device_piece_compare_value = 1      
      End If
      note.device_piece_compare = note.device_piece(0)
      '-------------------------------------------------------------------------------------------------------------------------
      
      Call note.ComputeWithForm(False, False)
      Call note.Save(True, True, True)
      ...............

Funktioniert teilweise:
Ich kann in der Asicht das erste Dokument bearbeiten über die Ansicht, die Werte werden auch gespeichert bzw. geschrieben.
Wenn ich versuche das 2, 3 oder 5 Dokument in der Ansicht zu bearbeiten kommt ein Fehler:
Type mismatch in Zeile (sie ist kursiv dargestellt)!

Hast Du da eine Idee? Danke vorerst!
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: InViewEdit - Frage
« Antwort #3 am: 29.04.05 - 09:38:38 »
Hallo,

habe den Code so umgebaut, jetzt kann ich jedes Dokument bearbeiten in der Ansicht und die Werte werden auch richtig genommen!

      'Abfrage:Wenn der Wert vorher von DEVICE_PIECE sic geändert hat, unterschiedlich dann 1 in COMPARE_VALUE
      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(False, False)

Mfg und Danke für eure Hilfe!!!
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz