2009-04-14 1 views
1

てチェックインの列を更新する:私は、ドキュメントのチェックインには、 ドキュメントライブラリ内の列を更新するには、次のイベントハンドラコードを書かれているイベントハンドラ

Select Case listEvent.Type 

Case SPListEventType.CheckIn 

    sLog = sLog + "Newest Item is Checked-out" + vbCrLf 
    Dim ApproveStatusBoolean As Boolean = True 

    For Each oField In oItem.Fields 
    If (oItem("ApproveStatus") = "Rejected") Then 
     ApproveStatusBoolean = False ' Old document for re-review 
     Exit For 
    End If 
    Next 

    If (ApproveStatusBoolean = False) Then 
    oItem("ApproveStatus") = "Submitted" 
    oItem.Update() 

    SmtpMail.Send(objMailMesg) 
    End If 
End Select 

私はApproverStatus列を取得していることがわかりますドキュメントライブラリの ドキュメントをチェックインした場合に更新されましたが、「 あなたがチェックインするまであなたの変更を見ることができません」と約束したときに ドキュメントをドキュメント内にチェックインしても起こりません。 。

私は内部からもチェックインすると、カラムを取得する方法が間違っているかどうかを教えてください。

、または私はそのプロンプトをオフにすることができます任意の方法です。

答えて

1

最初にすべきことは、両方のケースで同じイベントが発生することをバリエーション化することです。私はいくつかのデバッグ文をログファイルに書き込むことでこれをやっていますが、私はまた学校のようなものです。私がそのコードをデバッグしようとすると、信号対雑音比を上げるために、SMTPメール・ステートメントのようなコードの大部分を外すことになります。

これが処理されると根本原因を突き止めることができます

+0

はい、どのようなイベントを使用していますか? http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spitemeventreceiver_members.aspx –

+0

問題は、 "SmtpMail.Send(objMailMesg)"の呼び出しが両方の場合に機能していることです。だから私たちは、 "oItem(" ApproveStatus ")=" Submitted "という呼び出しを想定しています。 oItem.Update()" 呼び出されています。論理的な誤りの場合を除外することができます。 –

0

コードに問題がある可能性があります。以下を試してください...

​​

また、オフィス以外の文書またはオフィス2003文書を使用する場合は、別の結果が生じることもあります。これらもテストする必要があります。 Office 2007のドキュメントで同期イベントを使用すると、イベントが呼び出される可能性がありますが、その後はoverwritten by the old value stored within the office documentとなります。

関連する問題