none
Access2003で2つのフォームを連動させていたがAccess2013にしたら動かなくなってしまった RRS feed

  • 質問

  • Access2003で2つのフォームを連動させていました。

    メインフォーム→F_固定費

    サブフォーム→subF_固定費

    F_固定費のレコード移動時のイベントプロシージャは以下のとおり。

    Private Sub Form_Current()
    Dim strcond As Variant
    strcond = "固定費ID = Forms!F_固定費!固定費ID"

    If IsLoaded("F_固定費") Then
        Forms![sabF_固定費].FilterOn = True
        Forms![sabF_固定費].Filter = strcond

    End If

    End Sub

    以上のとおりで問題なく動いていましたがAccess2013にしたところ、

    動かなくなってしまいました。

    正確に言うと、フォームを開いてから初回のレコード移動に限りサブフォームが固定費IDを

    取得していますが2回目以降の移動は全く動きません。

    非常に困っておりますので、どなたかご教授願います。

    2015年1月9日 7:51

すべての返信

  • Access2003で作って、2013へ変換してみたわけではありませんので、全く同一の再現性かどうかはわかりませんが
        Forms![sabF_固定費].FilterOn = True
        Forms![sabF_固定費].Filter = strcond
    これを、
        me![サブフォームのコントロール名].form.FilterOn=True
        me![サブフォームのコントロール名].form.Filter=strcond

    と修正すると動くと思います。とりあえず確認してみてください。

    また、今後フォームを作るときには、このようなやり方はあまり良いやり方ではないと思います。
    親フォームのデザイン画面でサブフォームのプロパティを2か所設定します。
    "リンク子フィールド"および"リンク親フィールド"プロパティに、それぞれの固定費IDのフィールド名をセットします。
    もし、サブフォームにそのフィールドがない場合は、非表示としてそのフィールドを追加してやればOKです。
    これだけです。Form_Currentのプロシジャは必要ありません。

    お試しください。


    Shigeru Murai / SIMOZ

    2015年1月9日 8:35