2016-12-21 5 views
0

私はlotusscriptでクラスを学習しています。この問題は解決方法がわからないことがわかりました。クラスを使用して値フィールドを変更する

フィールドを読み込むクラスがあります。このフィールドの値によって、クラスのメソッドを他に変更する必要があります。この方法は、私はフィールドが初期値「Borrador」とEstadoと呼ばれているフォームにStatus

コードクラス

%REM 
    Library c_LlamadaCandente 
    Created 28-nov-2016 by David Bernabe Palanco/ES/HPH 
    Description: Comments for Library 
%END REM 
Option Public 
Option Declare 


%REM 
    Class c_LlamadaCandente 
    Description: Comments for Class 
%END REM 
Class LlamadaCandente 

    ' Declare the parameters 
    Private m_datStart As Variant 
    Private m_datFinal As Variant 
    Private m_strClaim As String 
    Private m_strGroupClaim As String 
    Private m_strStatus As String 

    ' Constructor 
    Public Sub New (dateStart, group, status) 
     me.m_datStart = dateStart 
     me.m_strGroupClaim = group 
     me.m_strStatus = status 
    End Sub 

    ' Calculate the person who has to answer the form 
    Public Function Responsable As String 
     Dim group As String 

     group = me.m_strGroupClaim 

     Select Case group 
     Case "Autos 1" 
      Responsable = "user 1" 
     Case "Autos 2" 
      Responsable = "user 2" 
     Case "Particulares 1" 
      Responsable = "user 3" 
     Case "Particulares 2" 
      Responsable = "user 4" 
     Case "Empresas 1" 
      Responsable = "user 5" 
     Case "Empresas 2" 
      Responsable = "user 6" 
     Case "Personales" 
      Responsable = "user 7" 
     Case "Lesiones" 
      Responsable = "user 8" 
     Case Else 
      Responsable = "user 9" 
     End Select 
    End Function 

    ' Change the status field 
    Public Function Status As String   

     Select Case me.m_strStatus 
     Case "Borrador" 
      Status = "Pendiente" 
     Case "Pendiente" 
      Status = "Finalizado" 
     Case Else 
      Status = "Sin estado" 
     End Select 

    End Function 

End Class 

フォーム

であり、このコード

と湖底

バトムコード

Sub Click(Source As Button) 

    ' We create new object from Llamadas Candentes and then we instanciate it with the parametres 
    Dim llamada As New LlamadaCandente(doc.FechaSolicitud(0), doc.LlcGrupo(0), doc.Estado(0)) 

    llamada.Status 

    Call uidoc.Save 
    Call uidoc.Close 

End Sub 

問題

私はllamada.Statusを呼び出すと、私は本当にdoc.Estadoを変更したいと考えていますが、それは動作しません。だから、私はbuttomをクリックしてフィールドの新しい値は "Pendiente"を持っていますが、フォームが閉じているときは、値として "Borrador"が始まります。

いずれかをお勧めしますか?

答えて

3

NotesDocumentオブジェクトには値を変更するためのメソッドがあります。 LlamadaCandenteオブジェクトのプロパティを変更していますが、ドキュメントオブジェクトの値を変更する必要があります。

一つの簡単な解決策は、あなたのクリックハンドラでこれを追加することです:

doc.ReplaceItemValue("Status", llamada.Status) 

または

uidoc.FieldSetText("Status", llamada.Status) 
+0

おかげでたくさん。 '.ReplaceItemValue'と' .FieldSetText'を使うと不正なかっこでエラーが出るので、私は 'doc.Estado = llamada.Status'を使っています。 – David

+1

コールコマンドを使用しないと不正なカッコエラーが発生します。 _doc.ReplaceItemValue "Status"、llamada.Status_または_Call doc.ReplaceItemValue( "Status"、llamada.Status)_ –

+0

また、 'doc.Estado = llamada.Status()'を使うこともできます。 'Public Function Status As String 'を' Public Property Status as String'に変更してから 'doc.Estado = llamada.Status'を使うと、関数ではなくプロパティのように扱われるためです。 – JSmart523

関連する問題