• 締切済み

SQLサーバーの日付を取得 - Excel VBAにて -

お世話になります。 EXCELのVBAで、 SQLサーバーのシステム日付を取得することは可能でしょうか? コマンドを教えていただきたいのですが。 クライアントPCのシステム日付は、 Biosの電池切れ?等で時々正常でない場合があります。 その問題を解決するため、都度サーバー日付を取得することが できれば、と考えています。 よろしくお願いします。

みんなの回答

  • wingtodo
  • ベストアンサー率56% (9/16)
回答No.4

MicrosoftSQLサーバーでしたら システム日付は SELECT GETDATE() で取得できます。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

こんにちは、SQLサーバと繋いでいるのでしたら、 SQLが、使えますよね。 select now() でも、実行しては、いかがでしょか。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

例えば、WSHを使って以下のようにして、NET TIMEの結果を得ることができます。 後は、適当に切り出せば良いと思います。 ---------------------------------------------------------------- Public Sub test() Dim WshShell, oExec, result Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("NET TIME \\SERVERNAME") Do While oExec.Status = 0 '実行終了まで待つ Loop result = oExec.StdOut.ReadLine MsgBox result End Sub

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

EXCEL VBAからというより、 システム日付は、PC全体でも(ファイル管理など)重要なので 起動時に時刻合わせするようにした方がいいかと思います。 Windows系のサーバーの場合 NET TIME \\SERVERNAME /SET のようなコマンドを実行するバッチを作成して、スタートアップで実行するような感じにしておけば良いと思います。

nao_ton_v
質問者

補足

ありがとうございます。 おっしゃることはよくわかります。私も同じことを考えましたが、対象PCが200台~という状況なので現実的に難しいですね。 VBAにて、取得する方法を募集させていただいております。

関連するQ&A

  • 日付が上手く取得できないです

    $row['date'] で吐き出してます。 この吐き出したデータの最大値を取得したいです。 5/5 5/10 5/20 なら5/20を取りたいわけです。 しかし、この日付。max()で正常な最大値が取得できないです。SQLのORDER BYなら日付でも判別しますが なにか方法はないですか?? あくまでも一度全部の日付をだしたいので、SQLで最大値をとるのでは、ちょっと違ってしまうです。

    • ベストアンサー
    • PHP
  • SQL Server にファイルを登録、取得したいのですが

    よろしくお願いします。 現在グループウェアのようなシステムを作っているのですが SQL Serverにファイルを登録したり、そのデータからファイルを 作成したいのですが、方法が見つからず困っています。 画像の登録と取得は出来るようになったのですが、エクセルや ワード、PDFなどのデータをSQL Serverに登録して そのデータから、エクセルなどのデータを作成したいと考えて いるのですが・・・ 画像が出来るならこちらも、程度の知識なので、出来るか どうかも分かりません。 出来ると非常にありがたいので、ご存知の方がおられましたら 是非ご教授お願い致します。 環境  Windows XP VB6 SP6 SQL Server 8 もし、不可能であれば、何か代替アイデアがあれば、そちらも 同時にお願いできれば幸いです。

  • SQL Serverからのvarchar型のデータ取得データ長

    PearのDBを使いSQLサーバーから「varchar(8000)」で宣言したフィールドからデータを取得すると255バイトで切られます(実際にはもっと長いデータが入っている)。”$db->tableinfo(テーブル)”でテーブルの情報をみると問題のフィールドの長さが「[len]=>255」となっています。 何とかサーバー上の型通りの長さのデータを取り出すことはできないでしょうか? 環境は以下の通りです。 ●サーバー OS: WindowsXP SQL Server Ver.: SQL Server 2000の8.0 Developer Edition ●クライアント1 OS: FedoraCore4 PHP Ver.: 5.0.4 FreeTDS Ver.: 0.63 ●クライアント2 OS: WindowsXP PHP Ver.: 5.0.5 ※クライアント1、2のDBはそれぞれバンドルされているPearを実行インストールしました。 サーバー⇔クライアント1 サーバー⇔クライアント2 共に長さ255で切られる。 AccessでODBC経由で取得した場合はデータ長255以上で取得できました。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • SQL SERVER2005の不具合情報

    SQL SERVER2005(9.00.3042.00)を使用していますが、 Excel VBAからのINSERT文やUPDATE文をたまに実行してくれないときがあります。 毎回だったらExcel VBA側のバグだと思うのですが、 たまにしか発生しないのでSQL SERVER側の不具合ではないかと疑っています。 SQL SERVER2005の不具合情報、パッチ情報が掲載されているサイト等がありましたら教えてください。 同様の経験がある方がいらっしゃいましたら情報を下さい。 よろしくお願いします。

  • AccessでSQL-Server接続先を取得

    Access2007(VBA)でシステム開発をしています。 「システム環境設定」という機能があり、そのフォームに、SQL-Server2008 で接続可能な接続先(接続文字列のDataSourceに指定する内容)の一覧を、コンボボックスにプルダウンリストとして表示する必要があります。 接続先を取得する方法をご存じでしたら教えていただけますでしょうか。 よろしくお願い致します。

  • エクセルVBAでSQLサーバーの値を編集したい

    エクセルVBAでSQLサーバーの値を編集したい 「エクセルVBAとSQLサーバーを接続し、SQLサーバー上の、指定したテーブルのセル(?)番地の内容を、エクセルのセルに入力されたものに変更し、上書きする」プログラムを作成しています。 エクセルVBA→SQLサーバーへの接続は初めてです。 以下の文で、SQLサーバーに接続する所までは進みました。 ここから先、「SQLサーバー上の、指定したテーブルのセル(?)番地の内容を、エクセルのセルに入力されたものに変更し、上書きする」の部分は、SQL文の形式でコーディングしなければいけないのでしょうか? 当方、SQL文を記述した事が無いため、例えば 'アクセスのテーブル名.range("A2").value = Sheets("test").range("A2").value のようにコーディングできると楽なのですが... 目的のプログラムを作成するのに手がかりになりそうな方法や、ヒントとなるwebサイトがありましたらお教え下さい。 Dim con As New ADODB.Connection Dim connectionString As String Dim sDBSever As String Dim sDBName As String Dim sLoginID As String Dim sPassWD As String sDBSever = "(local)\SQLEXPRESS" sDBName = "DBName" sLoginID = "id" sPassWD = "pass" '接続文字列 connectionString = "Provider=Sqloledb;Data Source=" & sDBSever _ & ";Initial Catalog=" & sDBName _ & ";Connect Timeout=15" _ & ";user id=" & sLoginID _ & ";password=" & sPassWD _ & "" On Error GoTo Err_DBConnectOpen '接続 con.Open connectionString

  • SQL Server 2005 Expressでbcpを行うとエラーになる

    お世話になります。 SQL Server 2005 Expressを使用しています。 ローカルにあるdbをbcpを使って、エクスポートしていますが、 エラーが表示されて、エクスポートできません。 どなたかお分かりになる方はいらっしゃらないでしょうか? よろしくお願いいたします。 試したことは、下記のエラーがあるように、 スタートから、[SQL Server 2005]→[構成ツール]→[SQL Server 構成マネージャ]を起動し、 その中で、SQL Server 2005 ネットワーク構成から、SQLEXPRESSのプロトコルを参照し、名前つきパイプとTCP/IPを"有効"に変更し、 サービスを再起動 →かわりなし [bcpの実行命令]コマンドプロンプトから実行 bcp db1.dbo.test out D:\work\test.txt -T [エラー] SQLState = 08001, NativeError = 2 Error = [Microsoft][SQL Native Client]名前付きパイプのプロバイダ:SQL Serverへの接続を開けませんでした[2]. SQLState = HYT00, NativeError = 0 Error = [Microsoft][SQL Native Client]ログイン タイムアウトが時間切れになりました SQLState = 08001, NativeError = 2 Error = [Microsoft][SQL Native Client]サーバーへの接続確立時にエラーが発生しました。接続先がSQL Server 2005である場合は、規定の設定ではSQL Serverがリモート接続を許可していないことが原因である可能性があります。

  • ExcelVBAでSQLサーバの日付時刻型参照

    Excel/VBA(Excel2003)で開発しています。 SQL Server上のデータをSQLで参照する際、WHERE条件句に日付を範囲指定するのですが、 全く無視され、全日付のデータが読まれてしまいます。   ・SQL Server上のデータテーブル:MEISAI       日付項目名:伝票日付 (データ型 = 日付/時刻, サイズ = 8)   ・範囲指定もとデータ:inpDate1,inpDate2 AS String inpDate1 の内容 = "2011/06/01" (FormのDateTimePickerで指定する。) inpDate2 の内容 = "2011/06/10" (同上) の時、SQL文は下記の通りです。 SELECT * FROM MEISAI WHERE 伝票日付 >= '" & inpDate1 & _ "' AND 伝票日付 <= '" & inpDate2 & "' ; " また、inpDate1,inpDate2をいったん Date型に変換し、 Dim Dt1 AS Date DimDt2 AS Date Dt1 = CDate(inpDate1) Dt2 = Cdate(inpDate2) SELECT * FROM MEISAI WHERE 伝票日付 >= " & Dt1 & " AND 伝票日付 <= " & Dt2 & " ; " としても、結果は同じでした。 いろいろ試してみたのですが、どうしてもうまく行かず困っています。 どなたかおわかりの方おられましたら、教えて下さい。

  • Accessでsql serverにつなげています

    Accessでsql serverにつなげています。 VBAのado接続はOLEDB接続です。 フォームのデータソースに Recordsetでadoのrecordsetの結果を貼り付けようとすると、 Sqlコードがacceessとは違うため、貼り付けできません。 Sqlは検索条件が都度違うため、 パススルークエリのオブジェクトを削除して作り直す、方法はやめたい。 何かよい案はありませでしょうか? ちなみにデータは何百万件という量です。

  • SQL Server 2005のバックアップに関して

    SQL Server 2005のバックアップをARCserveとそのSQL Agentを 利用して取得しようと考えています。 システムが壊れてしまったときのことを考えて OS、SQL、AECserveを入れなおしてAECserveで取得した バックアップを戻せばSQLが元通りに使えるようにしたいと 考えています。その場合利用しているDB領域のほかに バックアップを取得しておく必要のある領域はあるのでしょうか。 ご存知の方、または答えらしき内容が出ているサイトを 知っている方がいましたら、教えてください。

専門家に質問してみよう