- 締切済み
Accessテーブルのデータ型を変更したい
Access95 Version7を使っています。 DateDiff関数を使って日数を出したいのですが、 テーブルにあるデータは”テキスト型”になっています。 これを”日付/時刻型”に変換するには、どうすれば良いのでしょうか? データ例:20010520 というように、8桁で入っています。 宜しくお願いします・・・。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nishi6
- ベストアンサー率67% (869/1280)
ANo.2 の続きです。自分でやるとうまく日付になるんですが・・・その後、演算もできます。 >#Errorになってしまいました 受注日とか日付が未入力のレコードでエラーが起きていませんか?これぐらいしか思いつきませんでした。 例えば、クエリーで受注日を日付にしたいときは、受注日ymdというフィールドを IIf(Len([受注日])=8,DateSerial(Mid([受注日],1,4),Mid([受注日],5,2),Mid([受注日],7,2)),0) のように定義して下さい。8桁の文字列しか日付にしません。 これで、DateDiffで日数等を計算する時、両方の日付が未入力の場合は0日になりますが、どちらかの日付に未入力があれば同様の判定が必要でしょう。 また、全体が分かりませんが、[テーブル1]![受注日]のようにしてみたら・・・どうでしょう。
- pussyfoot
- ベストアンサー率28% (39/138)
テーブル定義の型を変更したいという事でしょうか? それでしたら無理です。 もちろん、テーブルの張り替えを行えばできますが。 もう一つテーブルを作って、クエリーで型を変換して落として、元のテーブルを削除して新しい方をリネームすれば大丈夫だと思います。
- nishi6
- ベストアンサー率67% (869/1280)
クエリーで = DateSerial(Mid([あるデータ],1,4),Mid([あるデータ],5,2),Mid([あるデータ],7,2)) ではどうでしょう。
- zerosix
- ベストアンサー率31% (47/149)
dim nowdata as Date dim strBuff as String strBuff=format("yyyy/mm/dd","20010520") とformat関数を使用して、 nowdate=CDate(strBuff) とDate型に変換ではだめですか? VBで操作するときは、私は上記のようにしています。 これくらいはやってると怒られるかもしれませんが、こういう質問の 時はどこまで考えたか書いた方がいいかと思います。
補足
早速のお返事、ありがとうございます。 聞き方がおおざっぱすぎました。すみません・・・。 私がためしてみた方法は、プロパティの”定型入力”とかいじれば変換できるのだろうか?とかいったレベルです。 でも、これだと表示が変わるだけなんですね。 あちこちのサイトなども覗いたのですが、どうしても分かりませんでした。 教えて頂いたコードは、”モジュール”に記入すべきものなのでしょうか? (この質問でお察し頂ける通り、Access初心者です) モジュールがよく分からないので、もう少し詳しく教えて頂ければありがたいのですが。 ちなみに、変換したいデータのフィールド名は、 「受注日」「納期予定」「納品日」 などです。
補足
お返事ありがとうございます。 [あるデータ]に特定の8桁の数字をあてはめた場合は、これでうまく動きました! でも、フィールド名を入れることで、そのフィールドの全データを変換することはできないのでしょうか? 同一クエリー内にあるフィールド名を[あるデータ]に代入してみましたが、#Errorになってしまいました。