• ベストアンサー

Access データ入力について

Access 初心者です。  初心者ながら必要に迫られデータ入力用システムを作っています。 どのようなものかというと ・作業月日 ・作業名 ・作業行った社員名 ・件数 これらの事項をフォームで入力していきます。今、なんとかフォームの完成まで行き着きました。 ただ、1日に作業員1名が行う作業は1つではないので、今のフォームのままでは、入力のたびに重複する作業月日、作業者名を入力しなければなりません。 以前別の会社だったとき同僚が作ったシステムでは、最初に日付、氏名を1度入力し、あとは作業名や件数のみを入力するというものでした。(説明が上手くできませんが…) 今となっては転職してしまったので、そのシステムの中身をみることができません。 この以前のシステムのように最初に日付、氏名を入力するという方法にはこだわりません。 初心者にでも分かるように教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

たぶん最後に入力されたものを規定値にセットしているんだと思いますね Aさんの分を続けて5件入力、つぎにBさんの分を3件入力 なんて入力の仕方が出来て便利な方法ですが これをやるにはVBAの知識が必要です 初心者にお勧めなのは 2つ目の入力時、上のフィールドに表示されているものと同じものを入力したければ Ctrl+'を押すという方法です これでもずいぶん省力できますよ もうひとつはカーソルのある行をそっくりそのまま 新規レコードにコピーしてしまうボタンを作成する方法です このボタンはVBAの知識がなくてもウィザードが作ってくれます 興味がおありならどれでやりたいかを返事してください

midoriramram
質問者

お礼

回答ありがとうございます。 ExcelでのVBAの知識は少しだけならあります。(初級者レベルですが) >Aさんの分を続けて5件入力、つぎにBさんの分を3件入力 なんて入力の仕方が出来て便利な方法ですが これをやるにはVBAの知識が必要です ↑↑ できればこれでやりたいのですが、無理でしょうか…

その他の回答 (3)

noname#79209
noname#79209
回答No.4

私は以下の方法をよく使います。 そのフォームにフォームのコントロールをクリアするプロシージャを作っておきます。 例: Private Sub subClearForm(Optional paraMode As String = "") If paraMode = "ALL" then Me.txt作業日 = Null Me.txt作業者 = Null End If Me.txt作業名 = Null Me.txt件数 = Null End Sub そして、そのフォームの「開く時」イベントプロシージャの頭に Call subClearForm("ALL") と入れ、 登録ボタンの「クリック時」イベントプロシージャの最後に Call subClearForm("") と入れておけば、 フォームを開いた時は、全ての入力用コントロールがクリアされており、 登録したのちは、作業名と作業件数のみクリアされます。 勿論、フォームの「閉じる」ボタンは別に作っておきます。

midoriramram
質問者

お礼

回答ありがとうございます。 いろいろな方法があるんですね。 今回は別の方の案で解決しましたが、次回参考とさせていただきます。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>ExcelでのVBAの知識は少しだけならあります。(初級者レベルですが) エディタの使い方を知っておられるのなら出来ますよ 同じデータを続けて入れたいフィールドの更新後イベントに '日付時刻型 Private Sub 売上日_AfterUpdate() Me.売上日.DefaultValue = "#" & Me.売上日 & "#" End Sub 'テキスト型 Private Sub 発送NO_AfterUpdate() Me.発送NO.DefaultValue = "'" & Me.発送NO & "'" End Sub '数値型 Private Sub 品名コード_AfterUpdate() Me.品名コード.DefaultValue = Me.品名コード End Sub 表示されている規定値は別のものに書き換えることができます

midoriramram
質問者

お礼

さっそくやってみました。 おかげで私のやりたかったイメージどおりです。 ありがとうございます。

noname#46899
noname#46899
回答No.1

普通はサブフォームを利用します。 http://office.microsoft.com/ja-jp/access/HA100986741041.aspx#subformbasics サブフォームを利用するためには通常、メインテーブルとして日付と氏名の入ったテーブル、サブテーブル(詳細テーブル)として日付、氏名、作業名、件数の入ったテーブルを作成し、リレーションを組みます。このあたりはリレーショナルデータベースの基本的な使い方なので、Accessを使うなら勉強しておいたほうがいいと思います。 その後の計算等がどう絡んでくるのかが不明ですが、特に複雑な集計をすることがなく、一日に行う作業数に限りがあるのなら、最大数分だけ各項目を作れば簡単でしょう。

参考URL:
http://office.microsoft.com/ja-jp/access/HA012242471041.aspx
midoriramram
質問者

お礼

回答ありがとうございます。 まだまだ勉強不足です、紹介していただいたサイトも十分理解するのに時間がかかりそうです。 

関連するQ&A

  • ■緊急■Access2002 単票形式のフォームでデータが入力できない!

    お願いします。 単票形式のフォームにある入力項目は以下の通りです。 売上ID(オートナンバー) 氏名(テキスト型) 商品名(テキスト型) 数量(数値型) 売上日(日付型) フォームを開いて、新しいレコードを入力する際に、 氏名と商品名は入力できるのですが、 数量、売上日が入力できません。 フォーカスは移動するのですが、、、、 原因がわからず困っています。 どうかよろしくお願いいたします!

  • Accessで日付から曜日を自動で入力させる

    表題の通りですが、Accessで以下のような事は可能でしょうか? 1.フィールド1に日付を入力(例;2002/5/17) 2.フィールド2に日付・曜日を自動的に入力   (例;5月17日(金)) 入力作業は基本的に、入力用のフォームをつくって そこで行っています。

  • MSアクセスで最後に入力したところから始めるには

    アクセス初心者です。 アクセス2000を使用しています。 「日付」と「記録」を入力するテーブルを作成し、 入力用のフォームは作成しました。 ところがフォームを開くと、毎回1番最初に入力したレコードが表示されます。 最後に入力したレコードから始めるには、どうしたらいいのか教えてもらいたくて質問しました。 よろしくお願いします。

  • 予約データの入力

    エクセルで縦横共に日付が入った表があり、縦は現在、横は2か月先~の日付が入っています。 例えば6月4日に8月3日の予約が3件入った場合、セルE7に3と入力します。 ここで、縦で使用するのは当日の行だけなのですが、横には2か月先~の列が並んでおり(半年ほど)、入力する箇所も不規則なので、入力箇所にセルで移動するのを省くために、フォームかシート上の決まった箇所に入力すれば、指定した予約日に件数が入力されるようにしたいと思っています。 VBAを使用する事になるかと思われますが、私のVBAのレベルが低い物で全く想像つきません。 (私のレベルはネット等で検索して見つけたコードを自分用に置き換えて使っている程度で、自作は本当に簡単なものしか出来ません。) 一応分かりにくいかもしれませんがイメージの画像を添付しておきます。 上が表で、下にあるのが入力部分になっています。 現在日付は=TODAY()で出力し、予約日・件数は毎回入力、移行ボタンを押せば上の表に飛ぶといった具合です。 よろしくお願いいたします。

  • Accessで=date()を入力しても数日前の日付が出てきてしまう

    Accessでフォームにて簡易的なものを作成しています(コマンドボタン2つの簡素なもの) その一番下に会社名とファイルを開いた日付を入れたいのですが、日付だけは日付のみのテーブルを作成し、そこから値を取得してます。 規定値には"=date()"を入力しています。 ところが、フォームに表示される日付が2日前の日付になっており本日の日付になっていません。 テーブルを確認すると、一番上には2日前の日付が、その下には本日の日付が出ています。 フォームにファイルを開いた日の日付を入れる方法を教えていただけませんでしょうか??テーブル作成するという方法以外でも有効な方法があればぜひお願いいたします。ACCESSの勉強をはじめてまだ3日の初心者です。 よろしくお願いいたします。

  • Accessのフォーム上での数式

    入力するフォームのテキストボックスに、『今日の日付』で入力した件数を表示させたいのですが、どのように式を入れればよろしいですか? 今は、クエリで今日の日付をカウントして、フォーム上ではサブフォームで表示させています。これではちょっと恥ずかしいので。 よろしくお願いいたします。

  • ACCESS2000のフォームからの入力でデータが上書きされる

    書類の受付簿を作成しました。 ユーザー1件ごとに受付日を入れると 規則性無く、時々入力したはずの日付が 前のレコードに書き込まれてしまいます。 内容としては【テーブル】 ユーザーテーブル(約2000件) 受付簿テーブル(3種類をそれぞれmm/ddで) ユーザーでは無くなった退会テーブル(Yes/No) 3つのテーブルで管理しています。 【クエリー】 日付入力をするためにクエリーを1つ作成 しました。上記3つのテーブルの合体させたもの。 それぞれのテーブルはユーザーIDでリレーションし ました。 【フォーム1】→これで入力するとおかしくなる ユーザーIDで検索し、ユーザー名が表示されたら 3項目ある受付枠に日付を入力する画面 フォームビューで作成 【フォーム2】 同じクエリーをデータシートビューで表示させ 検索機能なしで、直接ユーザーIDの該当枠に入力 する画面 を作成しました。フォームビューで作成したフォーム 1で入力したときに、どういう規則性があるか まったく判らないのですが、1件前のユーザーIDに セットされ、入力したはずの部分は空欄になって しまいます。 また、この現象に関連するのでしょうが、すでに入力 されていた日付が、消えてしまう現象もおきます。 何が原因でこのような現象になっているか、まったく 検討がつきません。どこら辺を、チェックしたら 良いか、回答をお待ちしています。

  • Accessのエラーメッセージについて

    アクセス初心者です。 仕事に必要なため、ネットや本を見ながらなんとかシステムを作成しています。 どのようなものかというと テーブルAとテーブルBがあり Aには社員IDと社員名 Bには社員別の作業件数を入れています。 クエリには社員ID、社員名、件数が出ます。(テーブルAの社員IDとテーブルBの社員IDをリレーションシップでつなぎました) フォームから入力するのですが、フォームの社員名のところ『#Name?』と出て、社員名が出てきません。『このコントロールのコントロールソースが無効です』というエラーメッセージが出ました。 クリックすると『指定したフィールドがフィールドリストに存在しません』と出ています。これはどういう意味ですか? でもクエリには社員名は反映してちゃんと出ているので、何が悪いのかわかりません。 初心者なのでなるべく分かりやすく教えていただければ助かります。

  • ACCESSのデータ印刷方法

    アクセス初心者です。今回初めてデータ,クエリ,レポートと一通りどうにか作成しました(フォームは使っていません)。しかし,日々データを入力するにあたって,その日入力した伝票分のデータだけを印刷したいと思っても印刷のたびに全部のレポートが印刷されてしまいます。 こちらでどなたかが以前に質問されていないかと思い探したところ 質問No.981237:ACCESS最終データだけ印刷できるレポート という私が求めているのと同じような質問をされていらっしゃる方がありました。 しかし,その回答を読んでも初心者の私にはどのようにすればよいのか分かりません。 この質問者の方はチェックボックスが解決策になったようですが,チェックボックスの設定方(作成法)が分かりませんでした。 フィールド名「発注日」に入力してある発注日の日付を選択してその日のデータだけを印刷できるのが希望です。 どうぞよろしくご指導ください。

  • アクセス フォームで同じ日にちを自動で入力させるには

    こんばんは。 アクセスで次のようなテーブルを作りました。 日   コード   工数(分) 5/2   12345    30 5/2   15555    20 5/2   13456    50 5/3   13545    100 このデータをフォームから入力させたいのですが、 同じ日付を何度も入力させるのが大変なので、 5/2  コード 工数     コード 工数 1度入力しただけで、次のレコードにも同じ日付が入るようにしたいのです。 また、5/2を一つのレコード。 5/3を次のレコードと認識してくれ、画面が切り替わるようにしたいのですが、アクセスではどのようにすれば良いのでしょうか。 (コードは月により変化します。) 宜しくお願い致します。

専門家に質問してみよう