Вопрос: Поддерживает ли MS Access 2003 консоль общего назначения SQL


Я знаю, что вы можете открыть консоль SQL в Access при создании запроса или представления, но есть консоль «все цели», которая позволила бы мне выполнять такие выражения, как:

CREATE TABLE Foo
(
Foo_Id int NOT NULL,
Name varchar(255) NOT NULL,
CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name)
)

4
2017-11-13 18:35


Источник




Ответы:


Я не знаю, что вы подразумеваете под «универсальной консолью», но, возможно, внутри Access это окно Immediate, которое будет отвечать вашим потребностям. Если вы нажмете Ctrl-G на клавиатуре из главного окна Access, это приведет вас в окно Immediate в VBE и там вы можете ввести:

  CurrentDB.Execute "CREATE TABLE Foo (Foo_Id int NOT NULL, Name varchar(255) NOT NULL, CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name))"

Это однострочный интерфейс, поэтому нет форматирования SQL, но он будет выполнять SQL.

Проблема с использованием CurrentDB в качестве объекта выполнения заключается в том, что он возвращает новый объект базы данных каждый раз, когда вы его вызываете (чтобы гарантировать, что все его коллекции обновлены). Альтернативой может быть:

  DBEngine(0)(0).Execute "CREATE TABLE Foo (Foo_Id int NOT NULL, Name varchar(255) NOT NULL, CONSTRAINT pk_FooID PRIMARY KEY (Foo_Id,Name))"

Поскольку DBEngine (0) (0) всегда возвращает тот же объект, вы можете проверить такие вещи, как:

  DBEngine(0)(0).RecordsAffected

«Проблема» заключается в том, что если вы меняете коллекции базы данных, вы должны помнить об их обновлении до их использования. Например, если вы добавляете или удаляете таблицу, вам необходимо обновить коллекцию TableDefs до момента ее обновления:

  DBEngine(0)(0).TableDefs.Refresh

Другой альтернативой было бы использование кэшированного объекта базы данных, как и во всех моих приложениях, но это не предотвращает проблему обновления коллекций, но просто упрощает ввод (я нахожу, что DBEngine (0) (0) вполне подвержен ошибкам, и найти мою функцию dbLocal намного проще в использовании).


7
2017-11-13 19:48



Я знаком с vba и непосредственным окном, но я искал простую консоль, которая была частью клиента. Что-то вроде редактора SQL для запроса, но не привязанного к операторам SQL, задает запросы. Я собираюсь написать простую форму, которая позволит мне это сделать, но не хотела этого делать, если она уже существовала. - DaveParillo
Другие люди уже это сделали (я видел объявления об этом), хотя это то, что я никогда не отслеживал, поскольку я не нуждаюсь в этом. Не уверен, как вы, Google, это Google. - David W. Fenton
Если вы найдете утилит, которые вам нравятся, почему бы вам не вернуться в поток и сообщить нам, что вам понравилось. - David W. Fenton
каковы накладные расходы, когда currentDb возвращает объект базы данных? - Nick
Накладные расходы в каком отношении? CurrentDB обновляет коллекции и возвращает копию объекта базы данных. DBEngine (0) (0) не обновляет коллекции и возвращает базовый указатель Access к db, который в настоящее время открыт в пользовательском интерфейсе, а не его копия. Этот последний может в очень редких случаях (например, после запуска мастера) вернуть указатель на что-то другое, кроме того, что пользователь видит, как db в настоящее время открыто в пользовательском интерфейсе. У CurrentDB никогда не было этой проблемы. CurrentDB был рекомендованным методом с A97 вперед. - David W. Fenton


Откройте представление дизайна в объекте базы данных запросов. Закройте форум «Показать таблицу», затем щелкните правой кнопкой мыши в пустой области в верхней части окна под панелью инструментов. Выберите SQL View. Это даст вам место, где вы можете выполнять sql-запросы. Используйте «Run!» с панели инструментов.

Это представление предназначено для создания и сохранения запросов, но вам этого не нужно.


3
2018-04-04 21:50





Я не считаю, что Access когда-либо считался используемым для использования в общих целях SQL, как создание таблиц, а что нет. Вы даже не можете использовать «хранимые процедуры», как на обычном SQL-сервере. Я думаю, вы окажетесь разочарованы, если вы начнете использовать Access без использования Visual Designer.

Удачи!


1
2017-11-13 21:25



Я думаю, что вы, вероятно, правы! Мне бы очень хотелось иметь простую «площадку для царапин», которую я могу использовать, чтобы играть с идеями. Наверное, я старею, но количество кликов и мышей BS, которые вы должны перенести, чтобы выполнить самые основные задачи в Access, - это ошеломляющее воображение. - DaveParillo


Использование ADP для подключения к SQL Server может дать вам то, что вы хотите. Однако я не знаю, до какой степени Access 2003 позволяет создавать представления и хранимые процедуры в SQL Server 2005 или 2008, поскольку они были выпущены после A2003.


0
2017-11-28 00:03



Благодарю. У вас есть документация / ссылки? Я знаю, что Access 2003 не поддерживает хранимые процедуры. Я думаю, что предположение заключается в том, что «хранимые процедуры» будут реализованы в среде VBA IDE. - DaveParillo