У меня было это сегодня на рабочем листе. Ни F9, ни включение Итеративного Вычисления не обновили соответствующие ячейки, но дважды щелкнули по ячейке и нажали Enter. Я искал справку Excel и нашел ее в статье справки под названием Изменение формулы пересчета, итерации или точности:
- Ctrl kbd> Alt kbd> F9 kbd>: dt>
- Пересчитать все формулы во всех открытых книгах, независимо от того, изменились ли они с момента последнего пересчета. Dd>
- Ctrl kbd> Shift kbd> Alt kbd> F9 kbd>: dt>
- Проверить зависимые формулы, а затем пересчитать все формулы во всех открытых книгах, независимо от того, изменились ли они с момента последнего пересчета. dd> dl>
Поэтому я попытался Ctrl kbd> Shift kbd> Alt kbd> F9 kbd> и, конечно же, все мои не пересчитываемые формулы наконец пересчитаны!
Я предполагаю:
CURRENT_TIMESTAMP
в стандартном SQL (однако не поддерживается напрямую ACE / Jet), и его не следует путать с типом данных SQL Server TIMESTAMP
; Если вы создали свою таблицу с помощью этого SQL DDL:
CREATE TABLE tblLogs
(
date_created DATETIME NOT NULL
);
, то следующий SQL DDL добавит DEFAULT
, которое вам требуется:
ALTER TABLE tblLogs ALTER
date_created DATETIME DEFAULT NOW() NOT NULL;
Вышеупомянутый синтаксис ACE / Jet SQL является ANSI- 92 вкус режима запроса. Чтобы использовать это через интерфейс MS Access (например, представление SQL объекта запроса), см. Microsoft Office Access: о режиме запроса ANSI SQL (MDB) . Чтобы сделать это программно с использованием SQL DDL, требуется (AFAIK) использование OLE DB, который в VBA требует (AFAIK) использования ADO. DAO всегда использует синтаксис режима запроса ANSI-89, синтаксис которого SQL DDL не поддерживает DEFAULT
.
Если вы используете Access (а не автономный ACE / Jet), вы можете использовать одну строку VBA (ADO) код:
CurrentProject.Connection.Execute "ALTER TABLE tblLogs ALTER date_created DATETIME DEFAULT NOW() NOT NULL;"
Вместо now () вы можете использовать getdate (). Не могу проверить другую часть синтаксиса (здесь нет sql, и я редко меняю таблицы :)), но должно быть примерно так же.
edit: Кажется, что SQL не позволяет так легко менять значения по умолчанию. Посмотрите на эту страницу , где представлен практический пример - вам нужно изменить ограничения, потому что MSSQL рассматривает значения по умолчанию как ограничения. Извините за дезинформацию.
В SQL Server это будет:
ALTER TABLE tblLogs ALTER COLUMN date_created DEFAULT getDate ()
Я предлагаю, чтобы для создания или реструктуризации таблиц Jet вы использовали DAO вместо DDL. Он предлагает возможность управлять свойствами, которые отсутствуют в реализации DDL в Jet. Справка Access должна предоставить вам все, что вам нужно.