在 SQL 中使用别名字段时是否可以使用 FieldByName 函数
Is it possible in SQL to use a FieldByName function when using an alias field
我在 Delphi 中使用 MS Access 数据库。我想提取两个日期字段 Date In 和 Date Out 之间的差异;在 table、tblGuestInfo。我想将这两个日期之间的差异保存为整数变量inights。
我有以下代码。
with datamod.qryguestinfo do
begin
close;
sql.clear
sql.add('SELECT DATEDIFF ("d","[Date In]","[Date Out]") As DateDifference')
sql.add('From tblGuestInfo');
open;
inights := fieldbyname['DateDifference'].asInteger;
open;
end;
当我运行它时,出现如下错误信息“qryguestinfo字段:'DateDiff'未找到”。
我假设错误消息来自 inights := fieldbyname['DateDiff'].asInteger
代码。
我在 SQL 还很陌生,我们将不胜感激。
恐怕另一个答案是错误的,因为 DateDiff 只能在 Access 中使用。
使用 Microsoft.ACE.OLEDB.16.0 提供商,以下内容在 Delphi 中运行良好:
procedure TForm1.FormCreate(Sender: TObject);
begin
AdoQuery1.SQL.Text := 'select id, DateDiff(''d'', Field1, Field2) as DiffInDays from table1';
AdoQuery1.Open;
end;
因此无需在 Access 中执行任何操作即可获得所需的结果。
顺便说一句,您的问题的答案是合格的“是”。如果您不使用持久性 TFields(通过右键单击数据集并选择 'Fields Editor' 在 IDE 中创建的字段),则在 table 打开之前不会实际创建字段,之后您可以使用 FieldByName until 数据集关闭。如果您创建持久性 TFields,那么这些字段将一直存在,但仍然只能在数据集打开时用于获取(或设置)字段值。创建持久字段的最简单方法是在 IDE 中设置查询的 SQL.Text,然后使用 FieldEditor 上下文菜单中的 'Add all fields'。
我在 Delphi 中使用 MS Access 数据库。我想提取两个日期字段 Date In 和 Date Out 之间的差异;在 table、tblGuestInfo。我想将这两个日期之间的差异保存为整数变量inights。
我有以下代码。
with datamod.qryguestinfo do
begin
close;
sql.clear
sql.add('SELECT DATEDIFF ("d","[Date In]","[Date Out]") As DateDifference')
sql.add('From tblGuestInfo');
open;
inights := fieldbyname['DateDifference'].asInteger;
open;
end;
当我运行它时,出现如下错误信息“qryguestinfo字段:'DateDiff'未找到”。
我假设错误消息来自 inights := fieldbyname['DateDiff'].asInteger
代码。
我在 SQL 还很陌生,我们将不胜感激。
恐怕另一个答案是错误的,因为 DateDiff 只能在 Access 中使用。
使用 Microsoft.ACE.OLEDB.16.0 提供商,以下内容在 Delphi 中运行良好:
procedure TForm1.FormCreate(Sender: TObject);
begin
AdoQuery1.SQL.Text := 'select id, DateDiff(''d'', Field1, Field2) as DiffInDays from table1';
AdoQuery1.Open;
end;
因此无需在 Access 中执行任何操作即可获得所需的结果。
顺便说一句,您的问题的答案是合格的“是”。如果您不使用持久性 TFields(通过右键单击数据集并选择 'Fields Editor' 在 IDE 中创建的字段),则在 table 打开之前不会实际创建字段,之后您可以使用 FieldByName until 数据集关闭。如果您创建持久性 TFields,那么这些字段将一直存在,但仍然只能在数据集打开时用于获取(或设置)字段值。创建持久字段的最简单方法是在 IDE 中设置查询的 SQL.Text,然后使用 FieldEditor 上下文菜单中的 'Add all fields'。