• ベストアンサー

フィールドプロパティの規定値で日付関数を使うには

フィールドプロパティ規定値で日付関数を使うにはどうしたらよいでしょう?(アクセスプロジェクト) SQL Server 超初心者です。 アクセスならdate()やnow() ですが、これだと dateは関数名として認識されません・・とエラーになります。

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

  • ベストアンサー
回答No.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

nakada789
質問者

お礼

回答ありがとうございました。サンプルでうまく設定できました。

その他の回答 (2)

noname#22222
noname#22222
回答No.2

Accessプロジェクトでは、SQL Server 自体の設定と Access側の設定とを区別して考えた方が宜しいかと... ですから、Accessプロジェクトで Date()を既定値として使用する場合は、フォームのコントロールの既定値で使います。

  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.1

SQLだとsysdateですね

関連するQ&A