【问题标题】:Jet(Access) DB and Expression based columns?Jet(Access) DB 和基于表达式的列?
【发布时间】:2008-11-03 23:50:56
【问题描述】:

我偶尔会在一个旧项目上工作,它使用经典的 asp 作为前端,使用 access 数据库作为后端。

我想在其中一个表中创建一个新列,其中包含从行中的其他列计算其值的逻辑。

我知道如何在更现代的 DBMS 中执行此操作,但我认为访问不支持它。请记住,我没有使用访问前端,只是通过 ODBC 使用 Jet DB 引擎。

任何指针?

【问题讨论】:

  • 从回答评论中删除:如果必须存储计算值,一般不推荐,是否不能在插入值之前执行计算?
  • 响应:不,该应用程序非常糟糕,我更愿意添加计算列而不是在 30 个位置更新应用程序。 – FlySwat

标签: ms-access jet expression


【解决方案1】:

你能做一个计算列吗?

SELECT Table1.Col_1, Table1.Col_2, [Col_1]*[Col_2] AS Col_3
FROM Table1;

【讨论】:

  • 其实这个值的计算方式涉及到大量的逻辑,所以它不能只是一个计算列,我想知道 Jet DB 是否可以在其中嵌入 VBscript就像在 Access 中一样。
【解决方案2】:

Jonathan Holland 在评论中问道:

我想知道 Jet DB 是否可以拥有 像您一样在其中嵌入 VBscript 在 Access 中做

您为什么要在后端而不是在您的 ASP 前端做类似的事情? Access 已保存查询,类似于视图,但是当通过 ODBC 使用时,它们不能在其中包含 VBA 函数(尽管 Jet 直接支持的一些命令可能可以通过 ODBC 访问,例如IIf() 和 Nz() -- 但这是一个很大的 if)。

在 ASP 中检索您的记录集并执行逐行计算。如果您通过 ODBC 使用 Jet,这是唯一的方法(顺便说一句,我认为 ADO 不会更好地工作)。

【讨论】:

  • Jet 不直接支持 Nz()。
  • 好的。它确实支持 IIf(),但我不确定它是否可以在所有上下文中通过 ODBC 访问。我的观点很简单,提出的问题在前端逻辑中而不是在传递给后端的 SQL 中更恰当地解决。
猜你喜欢
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
相关资源
最近更新 更多