2011-01-13 78 views
1

フォームに実行時エラー '2501'があります。誰にもなぜこれが起こり、どのように修正するのかというアイデアはありますか?実行時エラー '2501'

報告書は、このコードによって呼び出されます。

Private Sub Command92_Click() 
    DoCmd.SetWarnings Off 
    ''# get current reqid and version number 
    DoCmd.OpenQuery "NewReqVersion", acViewNormal 

    Dim NewReqID As Integer 
    Dim NewVerID As Integer 

    NewReqID = Me.Text58 
    NewVerID = Me.Version + 1 
    [Forms]![UWReviewForm].[StatusID] = 99 
    On Error Resume Next 
    **DoCmd.Save acForm, "UWReviewForm"** 

    DoCmd.OpenForm "NewReqVersionForm", acNormal 
    DoCmd.GoToRecord acDataForm, "NewReqVersionForm", acLast 
End Sub 

Private Sub StatusID_Change() 
    Me.LastModifiedTimeStamp = Now() 
End Sub 
+1

"On Error Resume Next"を取り除く - それはごくまれにしか使用しないでください。どのコードがNewReqVersionFormのロード時またはオープン時に実行されますか? – Fionnuala

+0

外部とエラーハンドラを使用しないでください。 –

+0

'DoCmd.Save acForm'はフォームに表示されるデータではなく、フォームのデザインを保存するので、その行は何も役に立たないように見えます。そのフォームのデータに変更を保存する場合は、 'Forms!UWReviewForm.Dirty = False'を使用します。 –

答えて

2

データベースに問題がある場合は、エラー2501がOpenFormを呼んで発生する可能性があります。 「破損からの回復」および「症状:フォームまたはレポートを開くことができません」の下のリンクの手順を試してください。?私の場合は

MS Access - Recovering from corruption

0

、私は別のAccessデータベースだった外部データソースにリンクされたテーブルを、持っていました。そのデータベースアプリケーションをデータベースコンポーネントとUIコンポーネントに分割し、その変更を元に戻すことにしました。行のどこかで、これが元のAccessアプリケーションと外部Accessデータソースの間のリンクに壊れていました。元のAccessアプリケーションでリンクテーブルを開こうとするとこれを確認でき、エラーが発生しました。

私の解決方法は、Accessアプリケーションからリンクテーブルを削除し、もう一度インポートすることでした。その後、私の問題は解決しました。これまでにオープンできなかったフォームは、この外部データソースを含むクエリに基づいていました。