みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【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桁にする方法はありませんか?フィールド・クエリーの追加はいくらでも可能です。

投稿日時 - 2018-01-29 12:05:32

QNo.9423464

困ってます

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

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

投稿日時 - 2018-01-29 12:47:39

お礼

ご回答ありがとうございました。

お気づきかと思いますが、まずは誤記の訂正をさせて下さい。
「***.*.*」→「****.*.*」、「***.**.**」→「****.**.**」、Right→Right$

>日付を日付型に登録し、日付のままインポート
テキストのインポート/エクスポートで変換の種類を「区切り記号付きインポート」にして「日付」フィールドを日付型にするとインポートできなかったのです。

しかし、このご回答を見てふと思い出しました。
このAccessは元々97形式でした。97の場合、データ内容によっては一旦すべてテキスト型じゃないとインポートできないものもあり、今回のような面倒なクエリーを組んでいました。
2010だと「保存済みのインポート操作」機能があるので、フィールドを日付型(S)にしてこの機能で取り込んだところ、見事****/**/**で取り込まれました。
「保存済みのインポート操作」はフィールドの追加・削除をすると再度インポート操作保存をする必要があるのであまり使用していなかったのですが、今回はこれで対応しておきます。

これでクエリーとマクロの数を減らすことができました。ありがとうございました。

投稿日時 - 2018-01-29 15:18:49

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

全銀協・・じゃないな、全国テェーンストアフォーマット・・・
年:right("000" & 日付年,4) ←言語によって書式が違うが

この際、CSVを使わない方法っていうか、社内であればWEBと連携して、係員がスマートホストでログイン、打鍵・・・フォーマットが分からないので、なんとも。

しかし、right$("00" & 日付月,2)ではどうです?

投稿日時 - 2018-01-29 12:45:07

お礼

ご回答ありがとうございました。

お気づきかと思いますが、まずは誤記の訂正をさせて下さい。
「***.*.*」→「****.*.*」、「***.**.**」→「****.**.**」、Right→Right$

このAccessは自分しか使用しないので連携などはできません。

投稿日時 - 2018-01-29 15:18:27

あなたにオススメの質問