• ベストアンサー

accessについて(初心者)

会社で必要なのでaccessの勉強を始めたばかりです。 本を購入して勉強しているのですが具体的にどうすれば良いのか分かりません。  もともと作成されていたものを変更したいのですが、テーブルでフィールド名「年月日」とされていて、「○○○○/○○/○○」 と入力していたものを「年」「月」「日」と別々に入力するにはどのようにしたらよいのでしょうか?  どのように質問して良いかもわからないので、意味がわからなかったらすみません(>.<)

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

  • ベストアンサー
noname#22222
noname#22222
回答No.5

s_husky です。 <年月を固定して日付のみを分離入力するには?>という質問の答えです。 1、フォームに非連結で[年月]を配置します。 2、フォームに非連結で[年月日入力欄]を配置します。 3、フォームに連結で[年月日]を配置します。<非表示で可> ・[年月日入力欄]の初期値が[年月]であれば質問者の要求を満たします。 ・[年月日入力欄]で日付へカーソルが移動すれば質問者の要求を満たします。 ・また、既存レコードと新規レコードで各コントロールの整合性を取る必要があります。 この場合、フォームのコードは次のように書けばよいと思います。 Option Compare Database Option Explicit Private Sub Form_Current()   If Me.NewRecord Then     Me.年月日入力欄 = Me.年月   Else     Me.年月日入力欄 = Me.年月日   End If End Sub Private Sub 年月日入力欄_AfterUpdate()   Me.年月日 = Me.年月日入力欄 End Sub Private Sub 年月日入力欄_GotFocus()   If Len(Me.年月日入力欄 & "") = 0 Then     Me.年月日入力欄 = Me.年月     SendKeys "{F2}", True   ElseIf Len(Me.年月日入力欄 & "") = 8 Then     SendKeys "{F2}", True   End If End Sub

その他の回答 (5)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.6

>入力のところだけ分けるということはできないですか フォーム上で日・時間を別々に入力したいという事で 簡単に出来ます。 フォーム上にテキストボックスを3つ配置します。例えば年月を表示するコントロールを年月、日をDay1という名前とします。他にフォーム上に年月日というテーブルの年月日のフィールドをコントロールソースとするテキストボックスがあるとします。 年月のプロパティで書式をyyyy/mmとしてデータのコントロールソースに =Format(Date(),"yyyy/mm") とします。これで年月には今月の2006/03が自動で表示されるようになります。 日のDay1のプロパティの更新後処理のイベントにコードビルダで Private Sub Day1_AfterUpdate() Me!年月日 = CDate(Me!年月 & "/" & Day1) End Sub のようにします。 これで日にちにあたるDay1に数字を入力しEnterキーで確定させれば年月日に日付を代入入力できます。 間違った日付(例えば2006/03/35になるような)を入力すると型の不一致のエラーになります。エラートラップが必要になりますが入力する日にちを間違えないようにすればこれだけで入力できます。 開始時間・終了時間は従来通り(年月日と一緒にではなく別々のフィールドで保存)のフィールドでフォーム上で入力すれば良いと思います。

tiriritokero
質問者

お礼

ありがとうございました(^^) ゆっくり考えないとまだわからないのでしっかり理解しながらがんばりたいと思います!

noname#22222
noname#22222
回答No.4

s_husky です。 しりきれトンボでした。 ******************* 入力フォームのコード ******************* Option Compare Database Option Explicit Private Sub 月_AfterUpdate()   年月日更新 2 End Sub Private Sub 日_AfterUpdate()   年月日更新 3 End Sub Private Sub 年_AfterUpdate()   年月日更新 1 End Sub Public Sub 年月日更新(ByVal I As Integer) On Error GoTo Err_年月日更新   Me.年月日 = CDate(Me.年 & "/" & Me.月 & "/" & Me.日)   Me.Refresh Exit_年月日更新:   Exit Sub Err_年月日更新:   MsgBox "不正な年月日が入力されました"   If I = 1 Then     Me.年.SetFocus   ElseIf I = 2 Then     Me.月.SetFocus   Else     Me.日.SetFocus   End If   SendKeys "{UP}", False   SendKeys "{ESC}", False   Resume Exit_年月日更新 End Sub ※ただし、補足を読めば、個別入力の必要は全くなさそうですね! ※単に、「入力の初期設定をしたいが?」という質問ですね! ※あーっ!シンド!というところです。

noname#22222
noname#22222
回答No.3

<出来るならば考え直すべきです!> ※思ったよりコードが煩雑です。 ※思ったより経験が必要です。 という事を踏まえて... 1、入力フォームに非連結タイプのテキストボックスを配置します。 ・名前は<年><月><日>と仮定します。 2、フォームのロード時、新規レコード発生時の<年><月><日>の初期値設定が必要です。 3、<年>だけ更新されても<年月日>が更新されるように<年月日更新関数>を用意します。 4、<年月日>更新時エラーが発生した場合、<年><月><日>のどれかにカーソルを戻す仕掛けをします。 5、<年月日>を更新してもフォームに反映されないケースもあるというAccess固有の不具合対策も行います。 以上を完璧に行う限りで分離が可能です。 ******************* [年]のプロパティ ******************* 書式=0000 規定値==Format([年月日],"yyyy") ******************* [月]のプロパティ ******************* 書式=00 規定値==Format([年月日],"mm") ******************* [日]のプロパティ ******************* 書式=00 規定値==Format([年月日],"dd") ******************* [熱月日]のプロパティ ******************* コントロールソース=年月日 書式=yyyy/mm/dd 規定値=Now() ******************* 入力フォームのコード ******************* Option Compare Database Option Explicit Private Sub 月_AfterUpdate()   年月日更新 2 End Sub

tiriritokero
質問者

お礼

ご返答ありがとうございました(^^) 難しそうなのでじっくり理解しながらしてみようと思います。また質問することがあると思いますので、その時はよろしくお願いします<(_ _)>

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>フィールド名「年月日」とされていて「○○○○/○○/○○」と入力していたものを「年」「月」「日」と別々に入力するにはどのようにしたらよいのでしょうか テーブルのフィールドの変更ということで良いのでしょうか? mdbを開きデータベースウィンドウのテーブルからその変更したいテーブルを選び右クリックでデザインビューをクリックしデザインビューで開きます。 フィールドに行を挿入するか一番したに新たに追加しフィールド名を年と月と日を順に作ります。データ型は日付で書式に年はyyyy、月はmm、日はddとすれば別々に入力できる様になります。または年・月・日のデータ型を長整数型にしても入力出来ますが入力規則等で日付に該当するような縛りを入れておかないと入力ミスの元になりかねません。 フォームで入力を行っているのであればフォームに年・月・日の各コントロールを新たに配置すれば入力できます。 各フィールドが出来たら年月日のフィールドを削除しても良いですが年・月・日の各フィールドから年月日を作成する事もできます。 用途に合わせての事だと思いますが年・月・日を別々に保存して管理するより通常は年月日で管理する方が多いと思います。

tiriritokero
質問者

補足

ご回答ありがとうございます。 年月日を分けて入力したいというのが、スケジュールの管理で利用しており、今までは社員コード、年月日、仕事内容、開始時間、終了時間をテーブルですべて手入力していたものを1人ごとに ・社員コード ・仕事内容 ・○○○○年○○月 まで確定させて、あとは日にちと時間を入力するだけにするように変更したいのです。 説明が足りなくてさらにわかりにくくてすみません・・・(>_<、)入力のところだけ分けるということはできないですか?

noname#254177
noname#254177
回答No.1

フィルードの書式を yy mm dd の3つに分けてください。 現状のデータはクエリーを作成して、 今の日付のデータを3つに区分して、テーブルに置き換えれば、使用できるはずです。

tiriritokero
質問者

補足

さっそくご回答ありがとうございます(><) 大変申し訳ないのですが、勉強3日目なのでもう少しだけ詳しく説明してもらっても良いでしょうか(>_<、) フィールドの書式を3つに分けるというのはどうしたらいいですか?

関連するQ&A

  • Access 初心者です。

    Accessを初めて1か月の超初心者です。 本を見たり、ネットで調べたりしてある程度使える様にはなりましたが、どうしても分からないので質問させて頂きました。 会社の出勤予定表を作成したいのですが、 テーブルで、 1、日付テーブル(ID・日付の2フィールドで日付のフィールドには4年分くらいの日付をexcelからインポートしました。 2、社員テーブル(社員ID・性・住所・・・など) は、あります。 やりたい事は、 (1)縦に社員名、横に日付を、出勤日に○を入力する様にフォームをつくりたい。 (2)それを年月を入力して1か月分のみ抽出したい。 です。 出勤予定表単体なら、社員名・年月・1日~31日のフィールドを作ればいけるのですが、ほかのクエリで顧客数と必要社員数が月検索で一覧表示出来るクエリがあるので、そこに日ごとの社員数の過不足が出るようにしたいので、、、 簡単なことかもしれませんが、全くわかりません。 出勤テーブルをどのように作れば良いか? 日付テーブル・社員テーブル・出勤テーブルをどのようにつなげれば良いか? ご教授お願い致します。

  • ACCESSの「s_GUID」等の意味

    お世話になっております。 会社で古いACCESSのファイルを使っています(多分、ACCESS2003以前に作成したもの)。 このファイルにあるテーブルに「s_GUID」、「s_Lineage」、および 「s_Generation」といった フィールドがありますが、このフィールドの意味がさっぱり分かりません。 これらのフィールドの意味を教えてください。 このファイルにあるテーブルを変更(追加登録)する必要があるのですが、これらの フィールドの意味が分からないため、テーブルを変更した場合に不具合が発生するの ではないかと危惧しております。 ACCESSについては初心者のため教示願いたい次第です。 よろしくお願いします。

  • Access2000について教えてください。

    OS:Windows2000 Access2000 はじめまして。 Accessで困っていることがあります。 テーブルに直接データを入力しているのですが 会社名フィールドを選び 次に社員名フィールドを選びたいのですが 全会社の社員がリストされ選ぶのに苦労しています。 テーブルなので無理は利かないと思いますが ご存知の方、いらっしゃいましたら教えてください。

  • ACCESS2003のテーブル入力について

    いつもこちらでお世話になっております。よろしくお願いいたします。 マイクロソフトアクセス2003にて、No.と項目名という2つのフィールドから成り立つテーブルがあります。 そのテーブルにはあらかじめデータがはいっています。 新規にそのテーブルに追加する項目が出来たとき、新規入力用のフォームを作成しました。 その時のNo.のフィールドなのですが、自動的にもともとあるテーブルの番号に無いものを規定値として表示させておくようにするには、どのようにしたらよいでしょうか? 例) 1、2、3、5があれば、4を 1、2、3、4があれば5を よろしくおねがいします。 もうひとつ質問なのですが、納品書を入力していくデーターを作成しているのですが、納品書のテーブルがあり、リレーションで項目や会社名などを関連テーブルとしています。 あらかじめ会社名や項目名のテーブルに入力されていない新規の会社の納品書を打ち込む場合、納品書テーブル入力フォームに、入力しただけで、項目名のテーブルや会社名のテーブルに追加されていく方法はありますでしょうか?

  • Accessでフィールドを追加したい

    Accessであるシステムを作成しているのですが、いくつか不明な点があるのでアドバイスをお願いします。 「社員情報」をいうテーブルがあり、初期の状態で「社員番号」「氏名」「入社年月日」「年齢」とフィールドがあります。 このテーブルを基にフォーム「社員情報入力」も作ってあります。 ここで新たに、社員情報テーブルに「生年月日」「連絡先」など、フィールドを追加したいのですが・・・以下のような条件があるので、どうしていいのかわからず困っています。 【条件】 ・フィールド追加用のフォーム(新規フィールド名を入力させる)を作り、そこからフィールドを追加させる。(直接テーブルはいじらせないため) ・追加したフィールドを社員情報入力フォームに反映(表示)させたい ・追加したフィールドをレポートにも反映(表示)させたい このような条件でフィールドの追加は無理なのでしょうか? アドバイスや参考になるページを教えてください。 よろしくお願いします。

  • Accessでメイン、サブホームが作れません

    Accessで(1)顧客テーブル フィールド名 顧客コード(キー)        顧客名     (2)販売記録テーブル フィールド名 顧客コード        商品        レジNO     (3)レジテーブル フィールド名 レジNO(  キー)        年月日    でメインに顧客名をサブホームに年月日と商品を表示するメイン、サブフォームを作成したいのですがどのようにしたらいいのでしょうか?

  • アクセスで

    アクセスでフォームが5つあるとします。(フォーム名は、1,2,3,4,5とします。)フォームにはすべて"開始年月日"と"終了年月日"の項目があり、5つのクエリの検索をそれぞれ入力する様になっています。 又、テーブル1があり、このテーブルは毎日データが追加されていきますが(1日50ほど)、追加されたデータは、その日のデータでは無く、2日前の物の場合もあれば、休みを挟んだりすると5日前の物の場合もあります。そのデータ自体の"年月日"フィールドがあります。 まず全てのフォームの"終了年月日"の項目の既定値をテーブル1の"年月日にする事"はできますか? そしてフォーム1で"開始年月日"と"終了年月日"を入力し確定した時に、その他のフォームを開くとフォーム1で入力した"開始年月日"と"終了年月日"が入力された状態にしたいのです。これは、フォーム1で"開始、終了年月日"を入力した場合だけでなく、どのフォームで"開始、終了年月日"を入力した場合でも、その他のフォームを開くと同じ"開始、終了年月日"がまず入力された状態になっていて変更し確定した場合は、他のフォームの"開始、終了年月日"も変更されているという様にしたいのです。 説明がうまくできなくてすいませんが、誰か教えて頂けないでしょうか?よろしくお願いします。

  • ACCESSの超初心者です。

    ACCESSの超初心者です。 ACCESS2000のクエリについての質問です。 担当者テーブル(多)対会社テーブル(1) 担当者テーブルの会社コードと会社テーブルの会社コードで連結したクエリ。 このクエリで会社テーブル内の会社名は参照だけで変更不可にしたいのですが 変更できてしまいます。 変更不可にする設定があれば、教えてください。

  • access 2007 のフォームの日付について

    access 2007 のフォームの日付について こんにちは さっそくですが質問させていただきます 立山秀利さん著の「ツボとコツがゼッタイにわかる本」で access2007の勉強をはじめたのですが、 二つのテーブル、 「注文履歴」  【フィールド:注文ID(主キー)、商品コード、個数】と、 「商品マスター」【フィールド:商品コード(主キー)、商品名、単価】を作成し、 商品コードを結合フィールドとして、リレーションを作ったのですが、 注文履歴のテーブルに、フィールド「日付(受注した年月日、書式は日付s )」を追加して、 作成→フォーム→その他のフォーム→フォームウィザードで、 この二つのテーブルから、by注文履歴のフォームを作成したのですが、 注文履歴のテーブルでは正しく日付が表示されていたのですが、 フォームの日付では#が十個ぐらいならんで、表示されてしまいました フォームでも日付が正しく表示されるようにするには、どのようにすればよいのか どなたか、回答していただけないでしょうか よろしくお願いします

  • アクセス2010の操作について

    こんばんは! アクセス2010を勉強しておりますが、さまざまの本を読んでもインターネットで検索しても、なかなか基本を理解できず又周囲にも質問できる人がいなく困っております。 以下の内容について数点の質問をさせて頂きますのでご指導をお願いいたします。 作成内容。 社員の成果を入力できるフォームを作成したく、保存したいデータは社員名、社員コード、成果です。社員名は、コンボボックスから選択を行いたい。(できれば社員名を表示すると、自動的に社員コードも表示したいのですが)以下の方法で作成したのですが、うまくできません(質問項目は下段です) ~作成の流れ~ 〇テーブルを作成・・・以下の2つのテーブルを作成し社員データを予め入力。 ・社員マスタ・・・・・・(フィールドは2つ)  「社員名」(テキスト型)  「社員コード」(テキスト型) ※主キー ・入力テーブル・・・・(フィールドは3つ)  「ID」(オートナンバー型)  「社員コード」(テキスト型)  「成果」(テキスト型) ※主キー 〇「社員マスタ」「入力テーブル」の2つのテーブルからクエリを作成。  ・社員コード同士を結合線で結ぶ(自動的に結ばれます)    (フィールド)  ID            社員名     社員コード   成果  (テーブル)   入力テーブル   社員マスタ  社員マスタ   入力テーブル 〇作成したクエリを基にフォームを作成  社員名をコンボボックスから選択できるように変更(値集合ソース→社員マスタ)  社員名をコンボボックスから選択し、社員コードを入力。成果を入力しようとすると。  入力できません。 (質問です)  (1)成果を入力するためにキーボードを押すと、文字が出ずにエラーメッセージ「レコードを追加でき ません。テーブル"入力テーブル"の結合キーがレコードセットにありません」と表示されますがなぜ でしょうか?  (2)、(1)でエラーメッセージが出ても保存を押すと、新規入力画面のコンボボックスに先ほどの入力 内容が追加されてしまうがなぜでしょうか?  (3)クエリとリレーションシップの使い分けの判断は?(今回はクエリから結合線で結びましたが、リレ ーションシップでも似たような事ができます)  (4)入力テーブルのフィールドは上記の3つでよろしいのでしょうか?  (5)このようなものを作成する時の手順を教えて頂けると非常に助かります。 よろしくお願いいたします。  

専門家に質問してみよう