- ベストアンサー
ACCESSのフォームで同じ所属課入力の手間を.
access2000で社員名簿のフォームで所属課名等、同じデータが続く項目が幾つかあるのですが、入力に大変手間いります。何度かQ&Aで見た事がありますが”更新後処理”とか”マクロ”とかで出来るようですが、全くの無知のため初心者向けに教えて頂けないでしょうか。
- みんなの回答 (6)
- 専門家の回答
みんなが選んだベストアンサー
ローテク回答ですが Ctrl + ' (コントロールキーを押しながらシングルクォーテーション)で 直前レコードのフィールドの値が入力できます。 http://www.tsware.jp/tips/tips_317.htm http://www.nurs.or.jp/~ppoy/access/access/acEt023.html
その他の回答 (5)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Public Const conPreviousValue = "^("")" これが、先の回答者の言われるローテクを記号定数化したものです。ですから、Fキーを押した時に SendKeys で出力すれば、キー入力したのと同じ結果を得られるということです。
- chayamati
- ベストアンサー率41% (260/624)
>社員名簿のフォームで所属課名等、同じデータが続く項目が幾つかあるのですが このような事はEXCELでは面倒ですが、ACCESSは簡単に解決できます。 キーワードは、【[リレーションシップ】、【サブフォーム】、【テーブルの正規化】です。 詳しくは検索して調べて下さい。 【課名テーブル】と【社員名簿テーブル】をリレーションシップで結び、 サブフォームのあるふぉーむにします。 【課名テーブル】 ・ID (データ形式:オートナンバー型 主キー) ・課名(データ形式:テキスト型) 【社員名簿テーブル】 ・ID (データ形式:オートナンバー型 主キー) ・社員名(データ形式:テキスト型) ・課名ID(データ形式:数値型) この課名テーブルのIDと社員名簿テーブルの課名IDを リレーションシップで結べば、テーブルの段階で一つの課のもとに 課員の名前を次々に入力できます。 サブフォームのあるフォーム作成はフォームウィザード を使います。 ウィザードの最初に、テーブルのフィールドの入力で 始まります。ここで両方のフィールドを選択するとサブフォームの あるフォームへ導いてくれます。 出来上がった結果的には主フォームとサブフォームの2つの フォームが出来上がります。 ここで主キーのIDはお任せ項目として、フォーム上から除去します。 これの上に部テーブル、下には家族テーブルと拡大もできます。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
補足:{F6}キーに【一つ前のレコードの値】を仕組む。 1、フォームのプロパティを変更。 キーイベントを取得=はい 2、Form_KeyDownイベントコードを追加。 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF1 Case vbKeyF2 Case vbKeyF3 Case vbKeyF4 Case vbKeyF5 Case vbKeyF6 SendKeys conPreviousValue, True KeyCode = 0 Case vbKeyF7 Case vbKeyF8 Case vbKeyF9 Case vbKeyF10 Case vbKeyF11 Case vbKeyF12 Case Else End Select End Sub
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、ACCESSのフォームで同じ所属課入力の手間を省く方法。 A、二つ。 1、ファンクションキーを押せば前値が入力されるように仕組む。 ' ' ショートカットキー ' Public Const conGotoMain = "^(+({HOME}))" Public Const conGotoSub = "{HOME}{UP}{TAB}" Public Const conDefaultValue = "^(%({ }))" Public Const conPreviousValue = "^("")" Public Const conClearField = "+({UP}){DELETE}+({DOWN}){DELETE}" Public Const conRestoreField = "{ESC}" Public Const conNextField = "{TAB}" Public Const conPreviousField = "+({TAB})" Public Const conNextRecord = "^({PGDN})" Public Const conPreviousRecord = "^({PGUP})" Public Const conRequery = "+({F9})" Public Const conNewRecord = "^({+})" Public Const conPullDown = "{F4}" ここに紹介した共通記号定数を利用すれば、フォームアプリケーションで ・{F5}キーを押すと、入力欄に<既定値>が代入される。 ・{F6}キーを押すと、入力欄に<一つ前のレコードの値>が代入される。 ・{F7}キーを押すと、入力欄に<空の値>が代入される。 などの仕組みを簡単に組み込むことができます。 2、既定値を設定する。 Private Sub 商品コード_BeforeUpdate(Cancel As Integer) If Len(Me.商品コード.Value & "") Then Me.商品コード.DefaultValue = Me.商品コード.Value End If End Sub 私は、全てのフォームにFキー=ショートカットを仕組んでいました。 既定値を変更ってのはしてませんでしたね。
補足
有り難うございます。以前ネットで”更新後処理”での解決策があったので、”アクション””アイテム”式”と入力してみたのですが、残念ながらアイテムで”入力が間違っています”となって進められず挫折してしまいました。有り難うございました。やはり今回もわたしには無理なようですのであきらめますお世話になりました。
お礼
貴重な多くの資料有り難うございました。なかなか高度な資料なため、即私には使い切れないですが、少しずつ勉強させて頂きたいと思っています。有り難うございました。今回の質問は、フォームを保存しても、次ページで所属課テーブルのデーターが同じである場合は、未入力で保存、保存後もテーブル上所属課テ-ブルの表示を残して、他の所属者の場合のみ入力する(基本テーブルには未入力データ部分にもデーターが記録されている様にしたいのですが) いろいろとお世話になりました。ありがとうございました。