>

이전에이 질문을하고 @Torsten Link는 사용자가 다른 문서를 선택하지 못하도록 문서를 필터링 할 것을 제안합니다. 기본적으로보기가 있으며이보기에는 PFStatus로 설정 한 Faulty Status별로 문서 정렬 목록이 있습니다. 따라서사용하지 않음,Spoilt찾을 수 없음의 3 가지 상태가 있습니다. 따라서 사용자가이 세 가지 상태 중 하나만 선택하고 혼용 할 수 없도록 필터링하고 싶습니다.

그래서 아래 코드를 사용하여 필터링하려고 시도했지만 아무 일도 일어나지 않았습니다.

Set doc = dc.GetFirstDocument()
    If (doc.PFStatus(0) = "Obsolete" And doc.PFStatus(0) = "Spoilt" And doc.PFStatus(0) = "Not Found") Then
        Messagebox"Please choose either one Write Off selection!"
        Exit Sub
    Elseif (doc.PFStatus(0) = "Obsolete" And doc.PFStatus(0) = "Spoilt") Then
        Msgbox"Please choose only one Write Off selection!"
        Exit Sub
    Elseif (doc.PFStatus(0) = "Obsolete" And doc.PFStatus(0) = "Not Found") Then
        Msgbox"Please choose only one Write Off selection!"
        Exit Sub
    Elseif (doc.PFStatus(0) = "Spoilt" And doc.PFStatus(0) = "Not Found") Then
        Msgbox"Please choose only one Write Off selection!"
        Exit Sub
    Else
        'Some code...
    End If

그래서 문서 선택을 어떻게 필터링 할 수 있습니까? 코드를 잘못 넣었습니까? 정말 감사합니다. 감사합니다. :)

질문 업데이트

아래의 뷰 이름은 "WriteOff"입니다. 그리고 새로운 배치를 만들 수있는 버튼이 있습니다. 따라서 사용자가 Faulty Status가 혼합 된 배치를 만들지 못하게하고 싶습니다.

  • 답변 # 1

    이 작업을 수행하는 방법에 대한 샘플을 만들었습니다

    최상의 코드를 버튼에 넣는 것이 아니라 코드를 넣을 에이전트를 만드는 것입니다. 이와 같이 코드를 디버깅하는 동안보기를 새로 고칠 필요가 없습니다.

    '에이전트 목록 선택'을 트리거로 설정하고 대상 = 없음으로 설정하십시오.

    다음 공식을 사용하여보기에서 단추를 작성하십시오 (에이전트 이름으로 '배치 프로세스'를 대체하십시오) :

    @Command([ToolsRunMacro];"(batch process)")
    
    

    다음은 선택된 문서에서 pfstatus가 동일한 지 확인하는 방법에 대한 에이전트 코드의 예입니다.

    Option Public
    Option Declare
    Sub Initialize
    Dim col As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim vwUI As NotesUIView
    Dim ws As New NotesUIWorkspace
    Dim session As New NotesSession
    Dim dbcurrent As NotesDatabase
    Set dbCurrent = session.currentdatabase
    'Use vwui.documents to keep documents selected if the agent runs. 
    'Like this, a user can deselect a faulty document.
    'Don't forget to deselect all docs at the end of your code  
    Set vwui = ws.Currentview
    Set col = vwui.Documents
    'If a user did not 'select' a document (eg V marker before the docline), but merely positioned on a document,
    'you need to create a single doc collection based on the caretnoteid (= id of selected document)
    If col.count = 0 And vwui.caretnoteid <> "" Then
        Set doc = dbCurrent.Getdocumentbyid(vwui.caretnoteid)
        Set col = dbCurrent.createdocumentcollection()
        Call col.Adddocument(doc)
    End If
    'Get status from first document to get status to compare against
    Dim statusRef As String
    Set doc = col.getfirstdocument
    If doc Is Nothing Then Exit Sub 'avoid error when no doc is selected
    statusRef = doc.pfStatus(0)
    'loop other selected documents to compare status
    Set doc = col.getNextDocument(doc)
    While Not doc Is Nothing
        If doc.pfStatus(0) <> statusRef Then
            'A document with another status is selected, so do not continue
            Msgbox"Please choose only one Write Off selection!"
            Exit sub
        End If
        Set doc = col.getNextDocument(doc)
    Wend
    'If code gets here, you can loop all documents again to do you batch processing
    'Reset doc to first doc in selected collection
    Set doc = col.getfirstdocument()
    While Not doc Is Nothing
    '... some code to run on current doc in the loop ...
        Set doc = col.getNextDocument(doc)
    Wend
    
    'Deselect documents at the end of your code
    Call vwui.Deselectall()
    End Sub
    
    

  • 답변 # 2

    PFPF가 다중 값 필드입니까? 그렇지 않으면 프로그래밍 방식으로 둘 이상의 값을 설정하지 않는 한 둘 이상의 값을 가질 수 없습니다. 아니면 확인란 필드입니까?

    보기에서 여러 범주의 문서를 선택하지 못하게하면 가장 좋을 것이라고 생각합니다. https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_ONSELECT_EVENT.html

    을 참조하십시오. <시간>

    IMHO는 사용자가 상태 필드를 직접 입력해서는 안됩니다. 사용자가 일부 기능을 수행하고 그 동안 상태를 변경하도록 안내하는 버튼이 있어야합니다.

관련 자료

  • 이전 Outlook VBA - outlook vba - 두 언어 언어 간을 전환하는 방법
  • 다음 django - get_or_create 필터를 사용하여 동일한 매개 변수를 확인하면 0 개의 객체를 다시 조정하면 객체의 여러 값이 존재한다는 오류가 반환됩니다