Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Access 2013)
コンボボックスに値が出ない
投稿日時: 18/01/06 09:47:44
投稿者: yamasho

お世話になります。
 
単票形式のフォームの中に、表形式のサブフォームがあります。
それぞれ作業テーブルを使っていて、親となるフォームとサブフォームの
連結の設定はしていません。
 
サブフォームの方に「検索ヨミ」というコンボボックスがあります。
値集合ソースは「T_企業マスター」というテーブルで、
コンボボックスには下のような項目を表示させています。
 
・検索ヨミ
・企業名
・企業ID(連結列)
 
またサブフォームに企業名という非連結のテキストボックスがあります。
企業名は検索ヨミの更新後処理でセットしています。
 
コンボボックス「検索ヨミ」の連結列は「企業ID」になっています。
コンボボックスにカーソルがあるときに「F1」を押すと、
企業マスターの新規登録画面が開きます。
 
新規登録画面で入力し、登録ボタンを押すとマスターに登録し、
呼び出し元のコンボボックス「検索ヨミ」に
新規登録された企業ID(連結列なので)と企業名をセットし、
新規登録画面を閉じます。
 
そのときにコンボボックス「検索ヨミ」に検索ヨミを表示させたいのですが、
空白のままです。
 
また企業名がサブフォームのすべてレコードが新規登録された
企業名になってしまいます。
 
そこでサブフォームのレコードソースを、
T_企業マスターとINNER JOINさせて
テキストボックス「企業名」を連結にしましたが、
今度は
「このフィールドを変更する前に、まずレコードを保存してください。」
となってしまいます。
 
どうすればいいでしょうか?
 
 
 
 

回答
投稿日時: 18/01/06 16:13:02
投稿者: hatena
投稿者のウェブサイトに移動

> またサブフォームに企業名という非連結のテキストボックスがあります。
> 企業名は検索ヨミの更新後処理でセットしています。
 
ここが間違ってます。
帳票フォーム(表形式)の場合は非連結の場合、すべてのレコードの表示が同じになります。
連結してないので、当然の結果ですね。
 
> そこでサブフォームのレコードソースを、
> T_企業マスターとINNER JOINさせて
> テキストボックス「企業名」を連結にしましたが、
> 今度は
> 「このフィールドを変更する前に、まずレコードを保存してください。」
> となってしまいます。
 
JOIN させるのはいいですが、
代入するのは、企業ID の方だけです。
そうすればリンクした企業名が自動で表示されます。
オートルックアップクエリという機能です。
この場合、企業名テキストボックスの「編集ロック」を「はい」にしておいて、ユーザーが勝手に編集できないようにしておきます。編集するとマスターの方が変更されてまずいことになるので。
 
ただ、コンボボックスを使用しているなら、Joinしなくても、企業名のテキストボックスを下記のように設定するだけで企業名が表示できます。
 
コントロールソース =[コンボボックス名].Column(1)
 
.Column(1) というのはコンボボックスのリストの2列目の値という意味です。
1列目は .Column(0) です。
 
この方法はよく使いますので、ぜひマスターしておきましょう。

回答
投稿日時: 18/01/06 16:17:55
投稿者: hatena
投稿者のウェブサイトに移動

補足です。
 
新規登録画面で入力した後、
 
コンボボックスを再クエリした後、登録された企業ID を代入してださい。
企業名を代入する必用はありません。
 
 

With Forms!フォーム名!コンボボックス名
    .Rquery
    .Value = Me.企業ID
End With

投稿日時: 18/01/09 11:04:36
投稿者: yamasho

hatena様
 
いつもお世話になっております。
まだ試してはいないのですが、
なんとかできそうです。
 
ありがとうございました。
 
コンボボックスを再クエリできるのは知りませんでした。
勉強になりました。