• ベストアンサー

access日付チェックの方法

出来合いの簡易なaccessVBAのプログラムを使用しています。日付が「平成14年1月25日」の形がフォームの標準形なのですが、誤って「01月25日」と入れると入力されたものがおかしくなってしまいます。 そこで、フォームで「01月25日」や「11月05日」のような数値を入れて次のフォームに移ろうとするとメッセージを出すか勝手に修正するかの方法をとりたいのですが、VBAの超初心者にも簡単な方法を教えていただけないでしょうか。 #「フォーム」とは文字・数値を入力するボックスのこと。(正式名称がすぐに思い出せず。(-_-; ) #社内では、他のプログラムではほとんど「2001/01/25」のように「0」が入るので間違いやすい。

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

  • ベストアンサー
  • SpeedKing
  • ベストアンサー率50% (6/12)
回答No.2

Accessのフォーム上のテキストボックスでは、書式および定型入力で簡単に入力形式を設定できます。ご質問の対応方法として、該当するテキストボックスのプロパティシートの「書式」の項に「ggge\年m月d日」と記載することで上記のように「01月25日」や「11月05日」を入力しても「平成14年1月25日」の形式に自動変換されます。 これは、年、月、日にテキストボックスを分けた場合も同様です。 ちなみに、日付formatにおいて、y、m、dの1文字は1桁の場合には1文字に2桁の場合には2文字に表示されます。 但し、これらはユーザー側の認識を容易にするもので、データベース上は基準日付(何時だったかは忘れました)からのシリアル値を持っているだけに過ぎないため、事後の処理(他のシステムとのデータ交換等)においては、共通のフォーマットを使用することで対応できます。

s-holmes
質問者

お礼

その後、コードを素人ながらに調べたところ、「明細伝票」への更新の際のSQLの「02/02/25」の形を「2002/02/25」の形式に変更したら正常になりました。 #良い勉強の機会になりました。

s-holmes
質問者

補足

#補足としては、入力すると2つのテーブルに書き込まれるようで、「01月」のように入れても「伝票テーブル」の日付は問題なく、「伝票明細」のみテーブルの日付がおかしく(例 2001年が2025年になるなど)なるようです。 その部分のコードは下記となっているようです。 Private Sub 伝票日付_AfterUpdate() On Error Resume Next Dim strSQL As String strSQL = "update T伝票明細 set 日付 = #" & 伝票日付 _ & "#,月度 = " & Format(伝票日付, "yyyymm") & " where 伝票番号 = " & 伝票番号 DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings True End Sub

その他の回答 (1)

回答No.1

1.お使いのMicrosoftAccessのバージョンは? 2.その作者は、そのプログラムのカスタマイズを許可していますか? 3.mdbファイルですか? 4.[年][月][日]は、それぞれ独立した3つのテキストボックス(フォームとは呼びません)になっていますか? 5.(上記4で独立していない場合)  年月日を1つのテキストボックスに入力するとき、元号や年月日などのテキストも入力していますか? 6.(上記5で入力していない場合)  入力しなくても年月日の文字が出てきますか?  元号は表示されますか?  入力は西暦ですか和暦ですか? 以上について、補足をお願いします。

s-holmes
質問者

お礼

その後、コードを素人ながらに調べたところ、「明細伝票」への更新の際のSQLの「02/02/25」の形を「2002/02/25」の形式に変更したら正常になりました。 #良い勉強の機会になりました。

s-holmes
質問者

補足

回答ありがとうございました。 >1.お使いのMicrosoftAccessのバージョンは? access2000です。 >2.その作者は、そのプログラムのカスタマイズを許可していますか? 書籍の付録で、自由にいじることができます。 >3.mdbファイルですか? mdbファイルです。 >4.[年][月][日]は、それぞれ独立した3つのテキストボックス(フォームとは呼びません)になっていますか? まとめて一つのテキストボックスとなっています。 >5.(上記4で独立していない場合) >年月日を1つのテキストボックスに入力するとき、元号や年月日などのテキストも入力していますか? 初期数値を変更したい時のみ、変更して使います。 >6.(上記5で入力していない場合) >入力しなくても年月日の文字が出てきますか? でて来ます。 >元号は表示されますか? 自動的に表示されます。 >入力は西暦ですか和暦ですか? 和暦です。 #補足としては、入力すると2つのテーブルに書き込まれるようで、「01月」のように入れても「伝票テーブル」の日付は問題なく、「伝票明細」のみテーブルの日付がおかしく(例 2001年が2025年になるなど)なるようです。

関連するQ&A

  • エクセルVBA テキストボックス 日付表示

    エクセルVBAにて入力用フォームを開いたときに フォーム内にあるテキストボックスに今日の日付が 自動で表示されるようにしたいのですが どの様に書き込めば宜しいでしょうか? また、2008.09.05 平成20年9月5日などの 日付形式の変更はどの様に書き込むのでしょうか?

  • 日付のチェックなのですが

    日付の入力チェックについて教えてください。 アクセス2000のVBでプログラムを作っているのですが、 二つのテキストボックスがあり日付をFrom、Toで入力してもらい その入力された期間が1ヶ月以上だったらエラーとしたいのですがいい方法はないでしょうか? 入力形式は2001/01/01という形です。 月またがりの一ヶ月以内(2001/01/31~2001/02/10等)はエラーとはしません。 すみませんがどなたか良い方法をご存知でしたら教えて下さると助かります。 よろしくお願いします。

  • Accessフォームで日付入力

    【Access2013 VBA】 日付のフィールドをフォームから入力スル場合に そのフィールドにカーソルを移動した時、普通は、右端に四角い日付入力用のマークが出て、それをクリックするとカレンダーが表示され、そこから選択することが可能ですが、 このマークが出るフィールドと出ないフィールドがあります。 何故なのかよく分かりません。 その設定方法などがあるのであれば、教えて頂きたいです。 画面の設定方法、そして、VBAでもやり方があるのであれば・・・ よろしくお願いします。

  • エクセル日付データーの一致方法?

    エクセルVBAにて、 元データーに日付形式(2007/8/1~2007/8/31)で 作成されているセルを  入力用フォームのテキストボックス1で日付入力 (入力書式は8/6のようにスラッシュで入力希望)してループ処理にて 一致した日付の隣のセルにテキストボックス2で入力した 数値を入力したいのですが どのようなコードもしくは設定を行えばよろしいでしょうか?

  • アクセス日付時刻の自動入力について。

    アクセス2000を使用しています。 日付入力を自動的に本日の日付で入力出来るように、 =Date()としたのですが、これに、時間もつけるようにしたいのと、表示を、平成**年**月**日**時**分としたいのですが、どのようにすればよいのでしょうか?? ちなみにVBAはむずかしくて使用出来ません。

  • Accessで日付と金額を自動入力する方法

    Access2003/2007で会費集金記録を作っています。 フォームでの入力作業を簡単にするために悩んでいます。 会員ごとの単票形式のフォームを作り、下記のように入力フィールドを作成しました。 メインフォーム:[会員ID] [会員名] [会費額] サブフォーム:[会員ID] [入金確認] [入金日] [入金額] ※[入金確認]はチェックボックス サブフォームの[入金確認]をクリックしてオンにすると、[入金日]にその日の日付、 [入金額]にメインフォームの[会費額]の数値が自動的に入るようにすることはできますでしょうか? 毎月数千件の日付や金額を都度入力しており、なんとか自動化したいのです。 会費の入金日はバラバラなので、次にフォームを開いたときに、すでに入力済みの日付が更新されるとまずいのと、会員によって分割入金の方がおられるので、場合によって、自動入力された金額を修正することがあります。 クリック時のイベントプロシージャに構文を入力する方法で、どなたお教えいただけませんでしょうか。

  • EXCEL 入力された日付のチェック

    EXCELのある列に、日付が「2006/5/26」という形式で入力されます。 ですが、入力間違いで、本来ない年月日を入力した場合、エラーとしたいのですが、どのようにするのが、一番効率よいでしょうか。 VBAでプログラムを記述していますので、VBAの記述で教えて頂けますでしょうか。 よろしくお願いします。

  • アクセス チェックボックス入力日付表示方法

    アクセス初心者で悩んでいます。 いまアクセスフォームでデータ表を作成しているのですが、その中でチェック欄があり、その欄のチェックを押した日付を別フィールドに表示させるため手動で入力を行い、それをクエリに反映させていました。これをVBAか何かでチェック欄をつけたら現在日付を自動で表示させれないでしょうか?

  • Access上にある日付をコピーしたい場合

    Access2000のユーザーです。 初心者に近い為理解が遅いかもしれませんがよろしくお願いします。 お尋ねしたいのは、コピーの方法です。 データの入力フォームを作っており、フォームヘッダーに日付を入力させ、同じ日付で何度も違う得意先のデータを入力する為最初に入力した日付を各レコードにコピーさせたいと思います。 マクロで値の代入を使ってコピーができないかとやってみましたが日付フィールドには日付が入っていませんでした。マクロではなくVBAでないと無理であれば初挑戦してみたいと思いますが、どの様に記述すればよいのかさっぱり・・・といった状態です。 このような説明で伝わるか不安ですが、よろしくお願いします。

  • アクセスで日付をシリアル値にして使いたい

    アクセス初心者です 日付を入力時に自動でシリアル値を表示したいのですが、VBAなどを使わずに表示させる方法はありませんか? 例 日付         シリアル値 2016年1月2日      42371 みたいな感じです 宜しくお願いいたします