- ベストアンサー
フィールドプロパティの規定値で日付関数を使うには
フィールドプロパティ規定値で日付関数を使うにはどうしたらよいでしょう?(アクセスプロジェクト) SQL Server 超初心者です。 アクセスならdate()やnow() ですが、これだと dateは関数名として認識されません・・とエラーになります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
規定値は定数となってしまうと思うので、トリガを利用したらよいかと思います。 簡単なサンプルです。 ※サンプル利用時の注意 見易さのために、全角のスペースを利用しております。一度VB系のエディタ(エクセルのVBAのエディタでも可能)にソースをコピペしてから、再度そのエディタからソースをコピって、SQLクエリアナライザで実行してください。 --オブジェクト作成 FOR テーブル CREATE TABLE [SAMPLE_TABLE] ( [ID] [int] NOT NULL , [項目1] [CHAR] (10) COLLATE Japanese_CS_AS NULL , [項目2] [CHAR] (10) COLLATE Japanese_CS_AS NULL , [登録日時] [DATETIME] NULL , [更新日時] [DATETIME] NULL , [更新回数] [int] NULL , CONSTRAINT [PK_SAMPLE_TABLE] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] ) ON [PRIMARY] GO --オブジェクト作成 FOR トリガ:追加用 CREATE TRIGGER [TRI_SAMPLE_TABLE] ON [SAMPLE_TABLE] INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON DECLARE @NOW AS DATETIME SET @NOW = GETDATE() INSERT INTO [SAMPLE_TABLE] SELECT [ID] ,[項目1] ,[項目2] ,@NOW --手入力も認めるのであれば、ISNULL(登録日時,@NOW) ,@NOW --手入力も認めるのであれば、ISNULL(更新日時,@NOW) ,1 --更新回数の初期値 FROM inserted End GO --オブジェクト作成 FOR トリガ:更新用 CREATE TRIGGER [TRU_SAMPLE_TABLE] ON [SAMPLE_TABLE] FOR UPDATE AS BEGIN SET NOCOUNT ON DECLARE @NOW AS DATETIME SET @NOW = GETDATE() UPDATE [SAMPLE_TABLE] SET [登録日時] = deleted.登録日時 - -登録日時を変更させないようにする処理 ,[更新日時] = @NOW --更新日を登録する処理 ,[更新回数] = deleted.[更新回数] + 1 --更新回数インクリメント FROM [SAMPLE_TABLE] ,deleted WHERE [SAMPLE_TABLE].ID = deleted.ID End GO
その他の回答 (2)
Accessプロジェクトでは、SQL Server 自体の設定と Access側の設定とを区別して考えた方が宜しいかと... ですから、Accessプロジェクトで Date()を既定値として使用する場合は、フォームのコントロールの既定値で使います。
- tsukachan
- ベストアンサー率42% (202/470)
SQLだとsysdateですね
お礼
回答ありがとうございました。サンプルでうまく設定できました。