- PR -

日付け型の扱いについて(SQLServer2000 Access2000、Access2003)

1
投稿者投稿内容
なぼな
ベテラン
会議室デビュー日: 2004/08/04
投稿数: 61
投稿日時: 2006-11-13 17:47
お世話になっております。
クライアントのオフィスをMS OFFICE2000からMS OFFICE2003へバージョンアップした際に
発生している現象です。
どなたか、ご存知の方いらっしゃいましたらご教授お願いします。

環境:
 Server OS : WinNT
 Database  : SQLServer2000
クライアントOS : Win2000かXP

クライアントのDBへのフロントエンドはADPを使用しています。
現在OFFICEの移行期間で、OFFICE2000からOFFICE2003へ徐々に
OFFICEをバージョンアップ中です。

SQLServer2000のテーブルに日付型を設定してあります。
当初このテーブルの日付け型項目に時間だけを格納するように
プログラムしました。
その当時はOFFICE2000でのアクセスがフロントエンドで、
日付け型の日付けには何も設定せずに、時間だけ設定して
データを更新していました。
ADP側でテーブルに格納された値を見ると、日付けは表示されず
時間だけ表示されています。

ここ最近からはじめたOFFICE2003へのバージョンアップ作業で、
OFFICE2003ユーザから日付け型の項目が表示されるところが、
「1889年12月30日の設定した時間になってるよ」
といわれ見てみると確かにそのように表示されています。
どうも、いったんOFFICE2000で保存した日付け未設定の項目を
OFFICE2003で見ると日付けが上記のように見えてしまいます。
OFFICE2000で見る分には日付けは表示されずに、意図としている
形になります。

そこで、OFFICE2003でレコードを生成し、そのレコードを
OFFICE2000で見てみました。
すると同様のことがおきています。
どうも設定するときのフロントエンドで、参照するときの
状態が変わってしまうという現象がおきています。

プログラムレベルで更新できる最近のものは手作業でなんとかなりますが、
既存データについてはどうしたものか悩み中です。
どのたか、解決された方、もしくは方法をご存知の方
いらっしゃいましたらご教授お願いしいます。

99ri
大ベテラン
会議室デビュー日: 2006/09/09
投稿数: 129
投稿日時: 2006-11-14 07:08
クライアント Access 時刻のみ入力
DBサーバ SQLServer2000 DateTime型
DBサーバ側では時刻がAcsessで入力した時刻、
日付が1889年12月30日で全行登録されていると思います

日付時刻から時刻のみ扱うように明示変換指定すれば解決するのでは?

Access2000で検証した内容(ADPではない、アクセスの新規DB)
1.Access2000でdatetime型のカラムをもつテーブル作成
2.時刻のみ入力
3.クエリ作成 datetime型を抽出
  抽出項目の表示に対しプロパティ書式なし、yyyy
4.yyyy書式指定では1899 1889でなく1899となりました


[ メッセージ編集済み 編集者: 99ri 編集日時 2006-11-14 07:14 ]
Contour
会議室デビュー日: 2006/11/18
投稿数: 1
投稿日時: 2006-11-18 14:36
はじめまして。
私もなぼなさんと同じ悩みを抱えており、便乗させていただきます。

当方
Server:Windows 2000 Server
Database:MSDE 2000
クライアント:Windows 2000 or XP
で運用しています。

Access2000から起動したADP(連結コントロールのテキストボックス)を使って、datetime型フィールドに時刻のみを入力すると
内部的には1899-12-30日付で書き込まれるようです。

Access2003から起動したADP(連結コントロールのテキストボックス)を使って、同じフィールドに時刻のみを入力すると
内部的には1900-01-01日付で書き込まれるようです。

結果、
Access2000ADP上のコントロール等では、
2000ADPで入力されたレコード:hh:mm:ss
2003ADPで入力されたレコード:1900-01-01 hh:mm:ss

Access2003ADP上のコントロール等では、
2000ADPで入力されたレコード:1899-12-30 hh:mm:ss
2003ADPで入力されたレコード:hh:mm:ss
と表示されています。

(ADPファイルは2000形式でも2002-2003形式でも同じ)

この仕様の違いについて、どなたか情報のありかをご存知の方はいらっしゃらないでしょうか?
またはこの仕様の違いを回避する方法をご存知の方。
最近ずっとネット上を検索しているのですが、なかなかひっかかりません。
よろしくお願いします。


なお、Access2003でもローカルMDBの日付時刻型フィールドに時刻のみを入力すると
内部的には1899-12-30で格納されるようです。
1

スキルアップ/キャリアアップ(JOB@IT)