0

アプリケーション開発を続けていると、別の興味深い問題に遭遇しました。

私の MS Access アプリケーションでは、テキスト ボックスとコマンド ボタンの 2 つのコントロールのみを含むフォームを使用しています。このフォームの名前はHEADER FORM.

HEADER FORM他のさまざまなフォームのヘッダー セクションのサブフォームとして使用されます。

次の図は、サブフォームと、メイン フォームの 1 つでのその使用法を示しています。

ここに画像の説明を入力

今、私が欲しいのは、ユーザーがサブフォームのログアウトボタンをクリックすると、ログアウトアクションが発生し(これは問題なく、私はそれを理解することができます)、その時点で開いているすべてのフォームが閉じられることです/ 降ろす。

次のコードを使用してみましたが、役に立ちませんでした。

Option Compare Database

Private Sub cmdHeaderLogout_Click()
    If (loggedIn = 1) Then
        loggedIn = 0
        DoCmd.Close acForm, Parent.Form
    End If
End Sub

ログアウトボタンをクリックしようとすると、コントロールは上記の DoCmd.Close ステートメントに到達します。そして、次のエラーメッセージを表示した後、実行が停止します:

実行時エラー: 2498。入力した式は、引数の 1 つに対して間違ったデータ型です。

そしてそれはテキストを指しParent.Formます。

親フォームを参照して同じものをアンロードする方法がわかりませんか?

4

1 に答える 1

1

現在のフォームの親の名前を参照する必要があります。つまり、次のとおりです。

DoCmd.Close acForm, Me.Parent.Name

DoCmd.Close の 2 番目の引数は文字列を取ります。

フォーム コレクションをループすることもできます。

FormsCount = Forms.Count - 1

For i = FormsCount To 0 Step -1
    If Forms(i).Name <> Me.Name Then
        DoCmd.Close acForm, Forms(i).Name
    End If
Next
于 2012-11-06T11:52:38.060 に答える