Вы не согласны с нашим чатом. Макросы данных даже запускаются за пределами MS Access, если они используют код в MS Access, этого не может быть. Они привязаны к движку базы данных, который ничего не знает о интерфейсе Access.
Вы можете запускать запросы из макроса данных AFAIK, и можно создать запрос для записи в файл *, но вы не можете запустить VBA.
* Я просмотрел это немного больше, и я нахожу: «Запросы, содержащие связанные таблицы, запросы действий и ссылки на базы данных, не допускаются в макросах данных».
Следующее выражение должно работать в большинстве случаев:
SELECT num, CASE
WHEN num < 0 THEN '(' + CAST(-num AS VARCHAR(11)) + ')'
ELSE CAST(num AS VARCHAR(11))
END AS frmtd
FROM (
SELECT 0 AS num UNION ALL
SELECT 945 UNION ALL
SELECT -945
) tests
Вы также можете попробовать использовать функцию Replace
в Sql Server, как показано ниже.
Когда значение находится в (-) ве.
Select CAST(REPLACE(CAST(-945 as Varchar(4)), '-', '') as Int)
Когда значение уже находится в (+) ве.
Select CAST(REPLACE(CAST(945 as Varchar(4)), '-', '') as Int)
Выход в обоих случаях будет: 945