御世話になります。
フォーム F_1_0 在庫品マスター 入庫の登録画面 にあるテキストボックス 入庫日 の値を OKボタン を押すと
フォーム F_1_1 在庫品マスター 入庫の登録画面 の サブフォーム F_1_2 入出庫台帳 クエリ 入庫力用 のテキストボックス 入出庫日 に入るように
マクロの「値の代入」を使って マクロをVBAに変換したのですが VBAでの構文が赤文字になってしまいました。
DoCmd.OpenForm "F_1_1 在庫品マスター 入庫の登録画面", acNormal, "", "[品名ID]=[Forms]![F_1_0 在庫品マスター 入庫の登録画面]![品名ID]", , acNormal
以下が赤文字になってしまいました。
Forms!F_1_1 在庫品マスター 入庫の登録画面![F_1_2 入出庫台帳 クエリ 入庫力用].Form!入出庫日 = Forms!F_1_0 在庫品マスター 入庫の登録画面!入庫日
サブフォームの指定がされていないからでしょうか?
また、サブフォームに新規追加の場合はどのように記述すれば良いのでしょうか?
余談になりますがサブフォームを帳票フォームで表示している場合、新規のレコードを一番上に表示することは可能なのでしょうか?
Forms![F_1_1 在庫品マスター 入庫の登録画面]![F_1_2 入出庫台帳 クエリ 入庫力用].Form!入出庫日
とすることで赤文字でなくなりました。
新規のレコードを一番上に表示することは可能なのでしょうか?
空白を含むオブジェクト名をコード中に記述するには、[]で囲む必要があります。
以下は、回答ではないですが、
以前から気になっていたので、この際アドバイスしておきます。
オブジェクト名に空白を使うのは避けたほうがいいと思います。
コードが読みづらくなりますし、バグやトラブルの原因になりかねません。
また、あまり長すぎるのも読みづらいです。
といって短くしすぎて、意味不明になってもメンテナンスしづらいです。
そのオブジェクトの役割をシンプルかつ明確に表す名前になるように工夫しましょう。
とりあえず空白で区切るのではなく、_(アンダーバー)に変えるだけでも読みやすなります。[]で囲む必要もなくなります。
システムが大きくなるほど改変が大変になりますので、早めに修正しておくことをお勧めします。
例えば、
[F_1_1 在庫品マスター 入庫の登録画面]
は、
F11_入庫の登録_メイン
ぐらいでいいのではないかと思います。
(全体像が分からないのであくまで一例です。このぐらいの長さのオブジェクト名を目指してください、ということです。)
下記を参考にしてください。
ありがとうございます。早速なおします。
リンクしているHPを早速やってみました。オートナンバー型のフィールドがある場合はどうしたらよいのでしょう?
n をつけて非連結のテキストボックスをつくって 数値を入れなかったらエラーが出てしまったのですが・・・。
オートナンバー型のフィールド削除したクエリを使えば大丈夫ですか?
できました。