[英]How to create calculated field in Access Database using SQL during runtime in Delphi
我在運行時創建表。 這是我的方法:
AdoCommand1.Connection:=AdoConnection1;
cs:='CREATE TABLE '+edname.text+' (' +
'ID Integer IDENTITY(1,1) NOT NULL UNIQUE PRIMARY KEY,' +
'[Date Added] DATETIME,'+
'[Name] TEXT(255))';
ADOCommand1.CommandText:=cs;
ADOCommand1.Execute;
我需要添加一個字段“ age”,該字段應按如下方式自動計算:
age = DateDiff ('y',[Date Added], Now())
,它僅給出存儲項的天數。 如何在運行時執行此操作? 有沒有一種方法可以將動態計算的字段添加到Access數據庫?
注意:我使用Delphi 7,ADO組件和Microsoft Jet 4.0連接到MDB數據庫。
JET不支持表中的計算字段。 使用計算字段在其中創建一個並行查詢-該查詢應該像原始表一樣可更新。
[根據OP的評論進行更新]
“查詢”是視圖的JET用語,通過ADO的JET將接受或多或少的標准SQL CREATE VIEW語句。 因此,您應該能夠:
ADOCommand1.CommandText :=
'CREATE VIEW TableNameVw AS SELECT *, (DateDiff (''y'',[Date Added], Now())) AS [Age] FROM TableName';
ADOCommand1.Execute;
這將在數據庫中創建一個新視圖(AKA查詢)。 因為它是單表非聚合視圖,所以您應該能夠像將其視為表一樣對其進行更新。
(所有這些都假定在JET級別上支持DATEDIFF函數,我認為這可能是正確的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.