こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SqlCommandBuilder 使用時のサーバー日付について

困っていますご教授下さい。
<環境>
・WindowsXPpro
・.NETFramework1.1
・VB.NET
・ASP.NET
・SQLServer2000

以上の環境でWEBアプリの開発を行っています。
今、更新画面から更新を行う時に「SqlCommandBuilder」を使用しSQL文は自動生成を行い「SqlDataAdapter.Update(DataSet)」で更新を実行しています。
更新先のテーブルに登録日付列があるのですがSQL文が自動作成の為SQLServerのGETDATE()関数が書けません。
自動生成SQL文でGETDATE()関数が使える方法がありますでしょうか?
よろしくお願い致します。

投稿日時 - 2006-02-25 20:49:25

QNo.1991310

困ってます

質問者が選んだベストアンサー

#1 です。
Visual Basic 2005 と SQL Server 2005 の組み合わせで Windows アプリケーションですが。

SQL Server 側
テーブル名:testTable
列1:testID(PK, int, IDENTITY, NULL許可なし)
列2:testName(nvarchar(50), NULL許可なし)
列3:testDate(datetime, NULL許可なし)

VB 側
フォーム上に sqlDataAdapter を配置してウィザードで各種コマンドを自動生成後、プロパティ ウィンドウで UpdateCommand の CommandText が

UPDATE testTable
SET testName = @testName, testDate = @testDate
WHERE (testID = @Original_testID) AND (testName = @Original_testName) AND (testDate = @Original_testDate)

だったのを

UPDATE testTable
SET testName = @testName, testDate = GETDATE()
WHERE (testID = @Original_testID) AND (testName = @Original_testName) AND (testDate = @Original_testDate)

に変更。
最後に「パラメータを更新する」みたいなダイアログが出るので [OK] をクリック。
これで CommandButton1 の Clicke イベントで
Me.SqlDataAdapter1.Update(Me.DataSet11)
で更新できました。
VB.NET (2002?) と SQL Server 2000 の組み合わせでも同じかと。
ASP.NET 用の書き方へは適宜変更しておいてください。

投稿日時 - 2006-02-27 22:51:21

お礼

ありがとうございます。
結局いろいろあってSQLを自分で書きました。

投稿日時 - 2006-03-13 12:47:08

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

SQL Server の GETDATE() 関数を使わなくちゃダメな理由があるのでしょうか?
どうしてもって言うなら自動作成しないで SQL Server でストアドプロシージャ化しちゃうとか。

私だったら日付の部分もパラメータ化しちゃって UpdateCommand に渡しちゃいますね。
どのみち日付を生成するのはクライアントじゃなくて IIS が稼動しているサーバだし。
それに、よっぽど大規模じゃないかぎり IIS と SQL Server は同じサーバで稼動させるでしょうから日付のズレは発生しない。
2つのサーバが別々だとしても、日付を生成するのは IIS 側にしちゃえば問題なし。

投稿日時 - 2006-02-26 05:28:30

補足

>SQL Server の GETDATE() 関数を使わなくちゃダメな理由があるのでしょうか?
>IIS と SQL Server は同じサーバで稼動させるでしょうから

基幹サーバーとWEBアプリサーバー(2台)が全て別のマシンでさらにDBサーバーを同時に見に行く為、時刻の同期を取る為です。

>自動作成しないで

すいません自動作成を行った場合の方法が知りたかったので...

>日付を生成するのは IIS 側にしちゃえば

説明不足でした。
私が担当しているのはWEBアプリで他の協力会社が基幹システム(VB6)を担当しています。かつそれぞれ全てが別のマシンです。

投稿日時 - 2006-02-27 16:10:32

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-