【Access2010】桁数バラバラの日付を統一

このQ&Aのポイント
  • Access2010において、桁数がバラバラの日付データを統一する方法について解説します。
  • 毎日インポートされる日付データ(csvファイル)において、日付の桁数が異なる場合があり、インポート作業が複雑になります。桁数が違っても同じクエリーで数字8桁に統一する方法を紹介します。
  • 桁数ごとにインポートし、桁数ごとの更新クエリーを実行することで、日付データを数字8桁に統一することができます。また、日付型への更新クエリーを使用することで、日付のフォーマットも統一することができます。
回答を見る
  • ベストアンサー

【Access2010】桁数バラバラの日付を統一

添付画像のような日付データ(ピリオド区切り)があります。 データ(csvファイル)は原則毎日インポートしているので、日付の異なるデータが混在することはほとんどありませんが、まれに多忙・有休などで数日間インポートしなかった場合は混在してしまいます。 その場合は、csvファイルをコピーして桁数ごとにインポート→桁数ごとの更新クエリーを実行し数字8桁にする→更新クエリーで日付型にしています。  <例1:「***.*.*」の場合(日付更新用へ)>   桁数ごとの更新クエリー    → Left$([日付],4) & "0" & Mid$([日付],6,1) & "0" & Right([日付],1)  <例2:「***.**.**」の場合(日付更新用へ)>   桁数ごとの更新クエリー    → Left$([日付],4) & Mid$([日付],6,2) & Right([日付],2)  <共通>   日付型への更新クエリー    → Left$([日付更新用],4) & "/" & Mid$([日付更新用],5,2) & "/" & Right$([日付更新用],2) 実行すべき桁数ごとの更新クエリーを間違えるとインポート作業からやり直さなければならず、非常に面倒です。 桁数が違っても同じクエリーで数字8桁にする方法はありませんか?フィールド・クエリーの追加はいくらでも可能です。

  • KO1014
  • お礼率97% (536/551)

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

  • ベストアンサー
  • panacon
  • ベストアンサー率31% (214/679)
回答No.2

テキストインポート定義で、日付を日付型に登録し、日付のままインポートしたほうが簡単と思います。 日付更新用フィールドは、テキスト型のようですが、これを日付型にして書式yyyy/mm/ddで見せれば良いと思います。

KO1014
質問者

お礼

ご回答ありがとうございました。 お気づきかと思いますが、まずは誤記の訂正をさせて下さい。 「***.*.*」→「****.*.*」、「***.**.**」→「****.**.**」、Right→Right$ >日付を日付型に登録し、日付のままインポート テキストのインポート/エクスポートで変換の種類を「区切り記号付きインポート」にして「日付」フィールドを日付型にするとインポートできなかったのです。 しかし、このご回答を見てふと思い出しました。 このAccessは元々97形式でした。97の場合、データ内容によっては一旦すべてテキスト型じゃないとインポートできないものもあり、今回のような面倒なクエリーを組んでいました。 2010だと「保存済みのインポート操作」機能があるので、フィールドを日付型(S)にしてこの機能で取り込んだところ、見事****/**/**で取り込まれました。 「保存済みのインポート操作」はフィールドの追加・削除をすると再度インポート操作保存をする必要があるのであまり使用していなかったのですが、今回はこれで対応しておきます。 これでクエリーとマクロの数を減らすことができました。ありがとうございました。

その他の回答 (1)

noname#232800
noname#232800
回答No.1

全銀協・・じゃないな、全国テェーンストアフォーマット・・・ 年:right("000" & 日付年,4) ←言語によって書式が違うが この際、CSVを使わない方法っていうか、社内であればWEBと連携して、係員がスマートホストでログイン、打鍵・・・フォーマットが分からないので、なんとも。 しかし、right$("00" & 日付月,2)ではどうです?

KO1014
質問者

お礼

ご回答ありがとうございました。 お気づきかと思いますが、まずは誤記の訂正をさせて下さい。 「***.*.*」→「****.*.*」、「***.**.**」→「****.**.**」、Right→Right$ このAccessは自分しか使用しないので連携などはできません。

関連するQ&A

  • ACCESSでの桁数のあわせ方

    EXCELで (1)ERPソフトからの抽出データと (2)手入力で管理しているデータ をACCESSで取り込んで、加工をします。 それぞれ入力方法が (1)のERPからのデータは必ず10桁(0000012345とか0000000123)で (2)は有効分(12345とか123) となっていますのでACCESSへ、インポートする際に 桁数が異なってしまい、クエリーで結び付けられません。 そこで、(2)のデータを(1)のように必ず10桁にして 桁数あわせに0が入るといった方法、つまり12345なら0000012345、123なら0000000123と変換させる 方法はありませんでしょうか。 出来れば、(2)をACESSで取り込んでからACCESSで処理をしたいです。

  • 【Access97】和暦日付について

    書類送付案内状をAccess97にて作成しておりますが、Access97では日付を和暦表記にできないらしく、以下のような数式を設定して強引に和暦表記させています。 -------------------------------------------------------------------------------------  [クエリー] 日付: Date$()        西暦: Left$([日付],4)  [レポート] ="平成" & ([西暦]-1988) & "年" & Mid$([日付],6,2) & "月" & Right$([日付],2) & "日"  [結果] 2009/4/16の場合 → 平成21年04月16日 ------------------------------------------------------------------------------------- 但し、実際の発送日は案内状を印刷した翌日になってしまうので、本当は「平成21年04月17日」にしたいのです。 そこで質問です。  (1)どのように+1日を入れ込むのでしょうか?(土・日・祝日を挟む場合は+数字を都度加工します)  (2)これ以外にもっと簡単な数式はありますか? ご回答をお待ちしております。

  • 【Access97】指定した桁数で区切りたい

    txtファイルをAccessへインポートした後、項目毎に区切るためにMid関数を使用していますが、全角文字を2桁として認識してくれず区切り位置がおかしくなってしまいます。 同様の作業をExcelでやっても同じでした(添付画像参照、データは一部項目のみ抜粋)。 項目数=30個、桁数=一行につき255桁(固定)、1つのtxtファイル内のデータ行=200行以上、そのtxtファイル数が数十個あるので毎回Excelの『区切り位置指定ウィザード』を使用するのも大変です。 何とかAccessの更新クエリーで作業したいのですが、指定した位置で区切る方法、もしくは全角文字を2桁として認識させる方法はありませんか?

  • データの桁数を揃える関数をご教示下さい。

    データの桁数を揃える関数をご教示下さい。 セルの内容自体を同じ桁数の文字列としたいです。 また、桁数を揃える場合に、桁数の少ない場合には、 末尾に0を追加し、桁数を揃えたいです。 ex) 10桁と11桁と12桁の数字が混在 ⇒12桁に統一 120004561234(12)⇒120004561234(そのまま) 12000457131(11)⇒1200045713100(末尾に0を追加) 1200000562(10)⇒120000056200(末尾に00を追加) 以上、ご回答をよろしくお願いします。

  • ACCESS2007で質問があります宜しくお願いします

    フィールド内の二桁または一桁の数字の下一桁の数字のみを呼び出す場合はどのようにすれば良いのでしょうか? 例えば フィールド1 12 5 20 2 の場合、下一桁の数字の 2 5 0 2 を呼び出したいのですが、 クエリでMIDやLEFT関数を仕様しても二桁の数字は可能ですが一桁の数字は呼び出せません。素人なので説明も下手ですがご教授お願いしまます  

  • ACCESS2007についてご教授お願いします

    フィールド内の一桁またま二桁の数字の下一桁の数字が何かを調べる場合にどのようにすれば良いのでしょうか 例えば フィールド1 12  5 20  7  8 19 と言う数字がある場合に下一桁の数字だけ 2 5 0 7 8 9 と言う具合に調べる事が出来ますか? クエリでMIDやLEFT関数を仕様してもうまくいきません 素人なので説明も下手ですが宜しくお願いします

  • アクセスのデータ型えらーについて

    いつも助けて頂きありがとうございます。 今回は日付型のエラーについて質問があります。 dateserial関数を使って8ケタ数字を日付に変換したのですが、クエリやフィルタでの抽出の時にエラーになってしまいます。 受付日は8ケタの数字型(長整数)になっています。 dateserial(left([受付日],4),mid([受付日],5,2)+1,1) これを日付でたとえば #2011/1/1#等で抽出しようとすると型が一致しないエラーが出てしまいます。 isdate(dateserial(left([受付日],4),mid([受付日],5,2)+1,1) を見ると-1で日付としては認識しているとは思うのですが。 何が原因か、ご助言お願いします。 )

  • EXCELの関数でデータの桁数を揃える

    桁数が1桁と2桁の混在したデータがあります。 (0,1,10,22,3,5) 機械的に入るデータなので結果を桁数を揃えたいと思っています。 (00,01,10,22,03,05) 関数などを組み合わせて桁数を揃えることは可能でしょうか?

  • Access 日付データのテーブル上での不具合

    Access 日付データのテーブル上での不具合 OS:Windows10 Access:2013 ⇒ Office365 お世話になっております。 現在クライアントのデータベースをクリーニングしております。 日付型フィールド(フィールド名:日付)に見た目上日付が入っているのですが、 連結フォーム上に表示するとデータによって不具合が生じます。 例) テーブル格納データ:2019/11/05 フォーム上のテキストデータ:令01年11月(フォーム上は和暦年月表示) 同じテキストボックス(表形式)なのに、クリックした時の反応がデータによって違います。 あるデータは「2019/11/05」に戻るのに対して不具合があるデータは「令01年11月」のままです。 テーブルで直修正をするとそのデータはクリック時に「2019/11/05」に戻ります。 見た目上は同じでも格納データは型が違うようです。 いちいち不具合のあるデータを探して手で修正するわけにもいかないで、検索して見つけた情報を基に コード等で変換をしているのですが、改善されません。 <試したこと> (1)更新クエリ format関数による変換(Format([日付],"yyyy/mm/dd")) (2)コードで変換   Dim h_date As String   Dim h_date_true As Date If Not IsNull([日付]) Then h_date = Left([日付], 4) & Mid$([日付], 6, 2) & Right([日付], 2) h_date_true = DateSerial(Left(h_date, 4), Mid(h_date, 5, 2), Right(h_date, 2)) h_date_true = CDate(Format(h_date_true, "@@@@\/@@\/@@")) End If   レコードセット![西暦] = h_date_true この連結フォーム上で修正フィールドのデータを更新する仕様です。 クエリやレコードセット等でデータをそろえるために何か良い方法はございますでしょうか。

  • エクセル 文字列の日付を日付書式に変換

    文章の中に混じっている日付を切り出しました。しかし書式を変更しても日付になってくれません。そこでこれをDate関数で日付化しようとしたのですが、”日”の部分が切り取れません。 例 1/1/2001 1/10/2001 12/29/2001 このように桁がバラバラなので、Left,Right,Mid関数とDate関数に組み込んでみましたが、日の部分を指定する方法がわかりません。 =DATE(RIGHT(A1,4),MID(A1,FIND("/",A1)+1,????) ????に何を入れたらいいでしょうか。

専門家に質問してみよう