3

私は深刻なトラブルに巻き込まれるだけのプログラミングを知っています。毎回同じことを行う関数を実行したいデータベースを構築しています。唯一の問題は、ボタンがさまざまなフォームに表示されることです。パブリック関数を使用する必要があることはわかっています。関数を 1 つのフォームでプライベート サブとして機能させることができましたが、それをモジュールに移動してパブリック関数にすると、エラーが発生しました。値のない式を入力したと表示されます。問題は、最初のフォーム (Various Forms) と 2 番目のフォーム (Log-Memo Line Form) の間のリンクであると思われます。

各フォームの共通リンクは HL# (The Transaction ID#) です。HLCtrl は、1 つのフォーム (さまざまな親フォーム) 上のテキスト ボックス コントロールを参照します。[HL#] は、[Log-Memo Line] フォーム内のテキスト ボックス コントロールを指します。私のもう 1 つの問題は、HLCtrl コントロールが異なる形式で異なる名前を持っていることです。コントロールの名前を同じ名前に変更する必要がありますか?

これがコードです

Public Function Memo_Line()
On Error GoTo Memo_Line_Err

    Call saver
    DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLCtrl & "'", , acNormal
    Call ClipBoard_SetData([Forms]![Log-Memo Line]![Memo])
    MsgBox ([Form_Log-Memo Line].[Memo] & "---- copied to Clipboard."), vbInformation, "Clipboard Details"
    DoCmd.Close acForm, "Log-Memo Line"

Memo_Line_Exit:
    Exit Function

Memo_Line_Err:
    MsgBox Error$
    Resume Memo_Line_Exit

End Function
4

1 に答える 1

1

この行にあると思います DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLCtrl & "'", , acNormal

フォームを開き、HL# = に従ってフィルタリングしていますHLCtrl。がフォームの 1 つのコントロールであると仮定するとHLctrl(フォームが開いていて、これが機能するには値がそこにある必要があります)、関数にパラメーターとして渡すか、常にこれを呼び出す場合は、フォームhlctrlが開いhlctrlているときの機能は、 その名前全体で参照できます。[Forms]![yourFormThatYouWantToSelectaHLNumber]![hlctrl]

コントロールを含むフォームからこのコードを呼び出した場合HLctrl、完全な名前を使用する必要はなく、単にHLCtrlまたはMe.HLctrl. フォーム オブジェクトの外側にあるパブリック関数から呼び出しているため、HLCTRL を探すフォームを指定する必要があります。

お気に入り DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & [Forms]![yourFormName]![HLCtrl] & "'", , acNormal

また、数値の場合は、おそらくシングル クォーテーションで囲む必要はありません。

于 2013-05-15T19:53:43.510 に答える