ネットワークサーバ上のMDBからサーバの日付時刻を取得したいのですが
クライアントPCの日付時刻が取得されてしまいます。
サーバ日付時刻を取得する方法はあるのでしょうか?
サーバ上のMDBにテーブルを追加し、次の項目を設定します。
日付1 日付/時刻型 規定値に「Date()」を設定
日付2 日付/時刻型 規定値に「Time()」を設定
日付3 日付/時刻型 規定値に「Now()」を設定
クライアントPCから、ネットワークサーバー上のMDBを起動して、
作成したテーブルを開くと、クライアントPCの日付時刻が
表示されます。
MDB:Access2000
サーバ:Windows 2008サーバ
ちなみにMDBはクライアントで作成しネットワークサーバへ保存しました。
MDB作成クライアント:Windows Vista
Dim WshShell, outShell, resultMsg
Set WshShell = CreateObject("WScript.Shell")
Set outShell = WshShell.Exec("NET TIME \\SERVERNAME")
resultMsg = outShell.StdOut.ReadLine
とすればresultMsgに
\\SERVERNAME の現在の時刻は 2009/05/13 7:46 です
といった感じの文字列が入りますので必要な部分を切り出してください。
--
TAKAHASHI Hisanori
ご回答ありがとうございます。
サーバー日付取れました。
MDBからというより、直接サーバの日付の取得になるのですね。
Oracleのように Sysdate From Dual で取れると思っていたので
ちょっとびっくりです。
2828Johnny
"TAKAHASHI Hisanori" からの元のメッセージ:
MDBはクライアントで読み込まれてクライアントでアクセスが実行されます。
ですから、アクセスそのものがサーバーで実行されているものではないので
MDBが応えると言う事はないです。
アクセスの場合、サーバはファイル置き場と言うだけのものになります。
Oracleと同じものと考えるとしたらSQLサーバになりますね。
こちらはサーバで稼動しているので応えてくれます。
--
TAKAHASHI Hisanori
ありがとうございます、
なるほど、クライアントで動作するから、クライアントPCの日付時刻に
なるわけですね。
SQLサーバーも検討したのですが、実行環境が固定できない(お客様のH/W環境により)
ため手軽なMDBを使用することになりました。
日付時刻を取得する理由ですが、テーブル更新のタイムスタンプを
チェックするためなのですが、実際に試したところクライアントのOS
によってフォーマットが違いますね。
Win XP:年月日 時分
Win Vista:年月日 時分秒
タイムスタンプチェックなので時分秒までが理想なのですが
おそらくクライアントはほとんどがXPになる予定です。(複数客先のため)
… 困りました Oo。
テーブルの更新をしたときにMDBを上書き保存して
FileDateTime(FILENAME)関数でMDBファイルのタイムスタンプを
取得すればいかがでしょう。
--
TAKAHASHI Hisanori
サーバーでNTPサーバを動作させておいてクライアントの時刻を同期し
クライアント側で時刻を取得する手もあります。
net time /setsntp:SERVERNAME
WindowsでNTPサーバー構築
http://d.hatena.ne.jp/hidepon_mory/20071106/1207896724
--
TAKAHASHI Hisanori
> テーブルの更新をしたときにMDBを上書き保存して
> FileDateTime(FILENAME)関数でMDBファイルのタイムスタンプを
> 取得すればいかがでしょう。
MDBファイル自体の更新日付ってことですか?
とすると、特にMDBにこだわらず、テキストファイルの更新でもいいですね。
2828Johnny
TAKAHASHI Hisanoriさま
ありがとうございます、
なるほど、サーバのレジストリ変更とファイアウォールの設定ですね。
お客様の壁に穴開ける訳にもいきませんので、次の方法で解決します。
1.ネットワークサーバ上にあるMDBのフォルダに、クライアント端末番号.txtファイルを作成
2.作成したファイルの作成日を取得
3.作成したテキストファイルを削除
いろいろな提案頂きましてありがとうございました、
また新たな提案がありましたら追記をお願いします。
2828Johnny