プロが教える店舗&オフィスのセキュリティ対策術

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

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

A 回答 (2件)

SQL Server の GETDATE() 関数を使わなくちゃダメな理由があるのでしょうか?


どうしてもって言うなら自動作成しないで SQL Server でストアドプロシージャ化しちゃうとか。

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

この回答への補足

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

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

>自動作成しないで

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

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

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

補足日時:2006/02/27 16:10
    • good
    • 0

#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 用の書き方へは適宜変更しておいてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/03/13 12:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!