2008-11-03 9 views
0

Я иногда работаю над старым проектом, который использует классический asp как передний конец и базу данных доступа в качестве бэкэнд.Буферы (Access) DB и выражения, основанные на выражениях?

Я хотел бы создать новый столбец в одной из таблиц, содержащий логику для вычисления ее значения из других столбцов в строке.

Я знаю, как это сделать в более современной СУБД, но я не думаю, что доступ поддерживает ее. Имейте в виду, что я не использую интерфейс доступа, просто двигатель Jet DB через ODBC.

Любые указатели?

+0

Удалено из ответа на комментарий: Если вы должны сохранить вычисленное значение, которое обычно не рекомендуется, невозможно выполнить вычисление перед вставкой значения? – Fionnuala 2012-09-12 09:03:25

+0

Ответ: Нет, приложение довольно мутное, и я предпочел бы добавить вычисляемый столбец вместо обновления приложения в 30 местах. - FlySwat – Fionnuala 2012-09-12 09:03:42

ответ

2

Можете ли вы сделать расчетную колонку?

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

На самом деле, существует большое количество логики, участвующих в вычислении этого значения, поэтому он не может быть просто вычисляемым столбцом. Мне интересно, может ли Jet DB иметь встроенный VBscript в них, как вы можете это сделать в Доступ. – FlySwat 2008-11-04 04:21:38

-1

В комментарии, Джонатан Холланд спросил:

Я интересно, если Jet DB может иметь встроенный VBscript в них, как вы можете сделать в Access

Почему вы хотите сделать что-то подобное в задней части, а не в своем лицевом конце ASP? Доступ имеет сохраненные запросы, которые похожи на представления, но при использовании через ODBC они не могут включать в себя функции VBA (хотя есть несколько команд, которые Jet поддерживает непосредственно, чтобы мог быть доступен через ODBC, такие как IIf() и Nz() - но это большой , если).

Извлеките свой набор записей в ASP и выполните вычисления по строкам. Это единственный способ сделать это, если вы используете Jet через ODBC (я не думаю, что ADO будет работать лучше, BTW).