アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access95 Version7を使っています。

DateDiff関数を使って日数を出したいのですが、
テーブルにあるデータは”テキスト型”になっています。
これを”日付/時刻型”に変換するには、どうすれば良いのでしょうか?

データ例:20010520

というように、8桁で入っています。

宜しくお願いします・・・。

A 回答 (4件)

dim nowdata as Date


dim strBuff as String

strBuff=format("yyyy/mm/dd","20010520")
とformat関数を使用して、
nowdate=CDate(strBuff)
とDate型に変換ではだめですか?
VBで操作するときは、私は上記のようにしています。

これくらいはやってると怒られるかもしれませんが、こういう質問の
時はどこまで考えたか書いた方がいいかと思います。

この回答への補足

早速のお返事、ありがとうございます。

聞き方がおおざっぱすぎました。すみません・・・。

私がためしてみた方法は、プロパティの”定型入力”とかいじれば変換できるのだろうか?とかいったレベルです。
でも、これだと表示が変わるだけなんですね。

あちこちのサイトなども覗いたのですが、どうしても分かりませんでした。

教えて頂いたコードは、”モジュール”に記入すべきものなのでしょうか?
(この質問でお察し頂ける通り、Access初心者です)
モジュールがよく分からないので、もう少し詳しく教えて頂ければありがたいのですが。

ちなみに、変換したいデータのフィールド名は、
「受注日」「納期予定」「納品日」
などです。

補足日時:2001/07/19 13:29
    • good
    • 0

クエリーで


= DateSerial(Mid([あるデータ],1,4),Mid([あるデータ],5,2),Mid([あるデータ],7,2))
ではどうでしょう。

この回答への補足

お返事ありがとうございます。

[あるデータ]に特定の8桁の数字をあてはめた場合は、これでうまく動きました!

でも、フィールド名を入れることで、そのフィールドの全データを変換することはできないのでしょうか?
同一クエリー内にあるフィールド名を[あるデータ]に代入してみましたが、#Errorになってしまいました。

補足日時:2001/07/19 13:39
    • good
    • 0

テーブル定義の型を変更したいという事でしょうか?


それでしたら無理です。
もちろん、テーブルの張り替えを行えばできますが。
もう一つテーブルを作って、クエリーで型を変換して落として、元のテーブルを削除して新しい方をリネームすれば大丈夫だと思います。
    • good
    • 0

ANo.2 の続きです。

自分でやるとうまく日付になるんですが・・・その後、演算もできます。

>#Errorになってしまいました

受注日とか日付が未入力のレコードでエラーが起きていませんか?これぐらいしか思いつきませんでした。

例えば、クエリーで受注日を日付にしたいときは、受注日ymdというフィールドを
IIf(Len([受注日])=8,DateSerial(Mid([受注日],1,4),Mid([受注日],5,2),Mid([受注日],7,2)),0)
のように定義して下さい。8桁の文字列しか日付にしません。
これで、DateDiffで日数等を計算する時、両方の日付が未入力の場合は0日になりますが、どちらかの日付に未入力があれば同様の判定が必要でしょう。

また、全体が分かりませんが、[テーブル1]![受注日]のようにしてみたら・・・どうでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!