0

水曜日の朝から...

まず、city_table を正常に表示して選択し、フォームに city_no を入力します。

次に、その値を使用して、同じフォームで city_nm と state_nm を抽出/使用しようとしています。

これを、city_no の (変更された) afterupdate コードとしてコーディングしました。

Private Sub city_no_AfterUpdate()  
Dim got_city_nm, got_state_nm  
got_city_nm = DLookup("[city_nm]", "city_table", "[city_no]" = "city_no")  
got_city_nm = DLookup("city_nm", "city_table", "city_no='" & Me.city_no & "'")  
city_nm = got_city_nm  
got_state_nm = DLookup("[state_nm]", "city_table", "[city_no]" = "city_no")  
got_state_nm = DLookup("state_nm", "city_table", "city_no='" & Me.city_no & "'")  
state_nm = got_state_nm  
seat_no = "XXX"  
End Sub  

最後のステートメント (seat_no に "XXX" を代入) を含め、まだ何も起こりません。

だから私はそれを単純化して、それ自体を試してみました:

Private Sub city_no_AfterUpdate()  
seat_no = "XXX"  
End Sub  

まだ何もありません。シンプルで些細なものが明らかに欠けています。私はすべての助けに感謝します。私は空き時間に個人的なプロジェクトとしてこれに取り組んでおり、Access/VBA を初めて使用しています。このプロジェクトに約 4 時間かかり、公開情報源から学ぼうとしています。

4

1 に答える 1

0

VBA ウィンドウを開き、コードの左マージンをクリックします。余白に赤い点が表示されます。これを「ブレークポイント」と呼びます。フォームを実行して変更を加えると、コードはブレーク ポイントで停止し、その行が黄色で強調表示されます。コードの実行を続行するには、F8 キーを押します。これにより、コード行が一度に 1 行ずつ実行され、何が処理されているかを正確に確認できます。

コードの各行に到達したら、現在および前の行の変数の上にマウスを置いて、アプリケーションが変数と等しいと考えているものを確認します。あなたが考えていることと、アプリが考えていることは、時には 2 つの異なるものであることに気付くかもしれません。

コードが一連の行を飛び越えて End Sub に直接移動する場合は、強調表示された最後の行でエラーが発生しています。

この方法論を使用することは、VBA がどのように機能するかを理解する上で非常に重要です。私は 20 年間それを使ってきましたが、何が悪いのか分からないときは今でもこれをやっています。これがあなた自身の質問に答えるのに役立つかどうかを確認してください。そうでない場合は、少なくとも正しく機能していないコード行を特定し、戻ってそれについて具体的な質問をすることができることを願っています.

編集:コードをざっと見てみると、何か疑問に思うことがあります。City_No は NUMBER ですか、それとも TEXT ですか? NUMBER の場合、変数を囲む一重引用符を削除する必要があるためです。テキストには一重引用符が必要ですが、数字は必要ありません。

さらに編集:次のようなものがもっと必要だと思います:

Private Sub city_no_AfterUpdate()  
Dim got_city_nm, got_state_nm  
got_city_nm = DLookup("city_nm", "city_table", "city_no='" & Me.city_no & "'")  
Me.city_nm.Value = got_city_nm  
got_state_nm = DLookup("state_nm", "city_table", "city_no='" & Me.city_no & "'")  
Me.state_nm.Value = got_state_nm  
seat_no = "XXX"  
End Sub 

コントロール (つまり、テキスト ボックス) の値を入力しようとしている場合は、"Me" で参照する必要があります。(同じフォーム上にある場合) または "Forms!MyFormName." (別のフォームにある場合)。

于 2013-07-10T12:37:32.180 に答える