- ベストアンサー
Accessについてです。
アクセスのフォームで、番号を入力したらその番号の項目まで自動で入るように作りたいのですが、どうすればいいのでしょうか・・。(番号、項目はテーブルに入っている情報です) 1 保育園 2 幼稚園 3 小学校 とあって、1を入力すれば 別の枠に保育園と自動的に表示されるようにしたいのです。どなたか分かる方いましたらお願いします。初心者の質問ですいません。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
はっきり言って初心者にはちょっと難しいと思います。本気でやるにはVBAの知識がいると思います。 一番簡単なのは番号を入れるところをコンボボックスにして、そこで番号を入力するなり、プルダウンで選ぶなりしたらもう一つのテキストフィールドに名称が表示するようにするのなら簡単かもしれません。 コンボボックス 名前:comb1(何でもいいです) 列数:2 値集合タイプ:テーブル/クエリ 値集合ソース:(データが入っているテーブル名) 列幅:0.5cm;2.0cm(見えれば適当でいいです) 連結列:1 テキストフィールド 名前:何でもいいです。 コントロールソース:=[comb1].column(1)・・・ここはコンボボックスで設定した名称と一致させてください。 これは元となるデータの1列目に数字が入っていて、2列目に名称が入っている場合です。テキストフィールドで指定しているのはcomb1の2列目を表示しろということです。コンボボックスに数字を入れるなり、選択するなりすればテキストフィールドに「保育園」、「幼稚園」など選んだものの名称が表示されるはずです。
その他の回答 (2)
<学校> ID 種別 1 保育園 2 幼稚園 3 小学校 というテーブルを仮定します。 フォームに、 [学校_ID] [学校_種別] という非連結のテキストボックスを配置します。 次に、 [学校_種別].コントロールソース=ADOLookup("種別","学校","ID=" & [学校_ID]) を設定します。 さて、ここまで仕掛けると、[学校_ID] が更新された時に [学校_種別] をリクエリーするだけ。 Private Sub 学校_ID_AfterUpdate() If Len(Me.学校_ID & "") > 0 Then Me.学校_種別.Requery End If End Sub これで、「[学校_ID]に1を入力すれば [学校_種別]に保育園と自動的に表示される」ようになります。 なお、ADOLookup 関数は自作する必要があります。 DLookup 関数でも構いませんが、こちらが3倍速で動作します。 Public Function ADOLookup(ByVal strField As String, _ ByVal strTable As String, _ Optional ByVal strWhere As String = "", _ Optional ByVal ReturnValue = Null) As Variant On Error GoTo Err_ADOLookup Dim DataValue Dim strQuerySQL As String Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset strQuerySQL = "SELECT " & strField & " FROM " & strTable If Len(strWhere) > 0 Then strQuerySQL = strQuerySQL & " WHERE " & strWhere End If With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then .MoveFirst DataValue = .Fields(0) End If End With Exit_ADOLookup: On Error Resume Next rst.Close Set rst = Nothing ADOLookup = Nz(DataValue, ReturnValue) Exit Function Err_ADOLookup: MsgBox "SELECT 文の実行時にエラーが発生しました。(ADOLookup)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_ADOLookup End Function
- CHRONOS_0
- ベストアンサー率54% (457/838)
番号 項目 ----------- 1 保育園 2 幼稚園 3 小学校 こういうテーブルがあるとき 他のテーブルからこのテーブルを参照させるときには 番号だけを参照キーとして取り込むことになります 「項目」フィールドを取り込んではいけません 従って、他のテーブルから作ったフォームで >番号を入力したらその番号の項目まで自動で入るように作りたい この様なことをする必要がありません(してはいけません) この辺データベースの大事な基本です >別の枠に保育園と自動的に表示されるようにしたい 表示だけと言うことなら話は別です 方法はいろいろありますが、 2つのテーブルを番号で結合したクエリをフォームのソースにしてもいいですね この様なクエリをルックアップクエリといいます Accessで用意している方法は 他のテーブルをテーブルデザインビューで開き 番号フィールドのデータ型でルックアップウィザードを選び 表示させるテーブルに番号、項目のテーブルを選び 格納するフィールドに番号、表示させるフィールドに項目を選ぶというものです この場愛他のテーブルに格納される値は番号ですが表示と操作は項目で行えるようになります