- 締切済み
access 現在のレコードが先頭から何番目?
お世話になります access97ですがそれ以降のバージョンとしても回答でも助かります テーブルAを基に作成したフォームがあり、テーブルAの各データに対応するフォームとなっています テーブルのレコードが例えば3番目のデータを表示するフォームであれば そのフォームのテキストボックスに 3 と 表示されるようにしたいのですが、 あらかじめ用意されている関数には なさそうです エクセルではmatch関数などあるようですがaccessではVBAで作成しないとならないでしょうか もしそうだとしましたら どのようなコードになりますか 例えば学生さんの履修科目の試験の成績を入力したテーブルがあるとして 各学生さんに対応するフォームが1枚ずつできるイメージです 各人のID番号を先に作成して それをフォームに表示するのではなくて テーブルのなかの第何番目かの数値をフォームに表示したいのですが どのようにしたら よいものでしょうか フォームの下のほうにレコードカウントが アクセスには デフォルトでありますが その数字を 自動的に フォーム上に表示したいというわけです 要は新規に入力するデータが 第何番目かを自動的に判別して 新しい帳票フォームの あるテキストに自動で表示したいというわけです わかりにくくて すみませんが お知恵をお貸しくださいませ 宜しくお願い致します
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
回答№4で定義したテーブルのプロパティーは 全てフォームのプロパティーに反映されます。 従って 【T履歴】をレコードソースとして帳票形式のフォームを作成します この時【ID】がオートナンバ型であればフォーム上から削除しても 運用上差しさわりがありません。
- chayamati
- ベストアンサー率41% (260/624)
コメントありがとうございます。 次にテーブルとリレーションシップです 【M学生】のデザインビュー ・氏名:インデックスプロパティーシートで重複無しに 同姓同名の時は氏名と名前の間に空白を入れる ・誕生日:datedif()関数で年齢計算 ・フリガナ:コンボボックスの並び順に利用 フリガナのプロパティーで設定しておくと入力は不要 【T履修履歴】のデザインビュー ・学生ID:データ型を数値→長整数型 【M学生】をルックアップ定義 添付図参照 【③ルックアップのタグ】→【コンボボックス】 →【右端の…印】でクエリビルダが起動 ★リレーションシップ 【データベースツール】→【リレーションシップ】 これでリレーションシップ画面になり、画面クリックから テーブルを表示して、リレーションを組みますが リレーションシップ全て1:∞の参照整合にします。 ※参照整合が成立しないときは重複したレコードの 相手のレコードも重複することになり、 大変なレコードに肥大化します
- chayamati
- ベストアンサー率41% (260/624)
回答№は早とちりでした。ゴメン >各人のID番号を先に作成してテーブルのなかの第何番目かの 数値をフォームに表示したいのですが アクセスにはデフォルトでありますが その数字を自動的にフォーム上に表示したいというわけです 要は新規に入力するデータが 第何番目かを自動的に判別して 新しい帳票フォームの あるテキストに自動で表示したいというわけです ★ID番号はシステムの規定値のオートナンバー型のコードと思いますが、 これはリストの順を表すものではありません レコードの追加の都度ユニークな自然数が割り当てられ、 レコードの削除のとき飛び番が発生します。 ※リストの順は読順、コード順、ID順等別に定義します。 Excelの入力規則のリストのツールは【コンボボックス】です。 テーブル設計時にルックアップで 【コンボボックス】を定義します。 Excelでは枚のSheatで作成しますが、 Access複数のテーブルで設計します ★今回は【M学生】、【M履修科目】のマスターテーブルと 【T履修履歴】のトランザクションテーブルで作成します。 添付図左がテーブル間の関係のリレーションシップ、と 【T履修履歴】のルックアップ定義です リスト行数が16行(規定値)ですが自分は32行にしています。 【T履修履歴】をレコードソースとしてフォームを作成すると 【学生ID】【履修科目ID】【優良可不可】がコンボボックスに なります 専門用語を使い過ぎましたが、ご遠慮なく補足質問を下さい
- chayamati
- ベストアンサー率41% (260/624)
- kkkkkm
- ベストアンサー率66% (1733/2603)
イベントプロシージャ(VBA)でフォームのレコード移動時にするとしたら テキスト1が表示したいテキストボックスとして Private Sub Form_Current() Me.テキスト1.Value = Me.CurrentRecord End Sub で試してみてください。
お礼
誠に、有り難うございました 試みたく存じ上げます
お礼
有り難うございました。とても わかりやすかったです