Связать данные SQL Server с базой данных MS Access с фильтрами

Я хотел бы создать ссылку из базы данных SQL Server в базу данных MS Access для целей отчетности. Мне не нужны все данные из таблицы только за последние несколько лет. Есть ли способ с помощью инструментов Access VBA или MS Access ввести только те строки, которые мне нужны, а не все строки?


person Community    schedule 14.12.2016    source источник
comment
Да. Вы можете сделать это, создав в Access VBA QueryDef, который является СКВОЗНЫМ ЗАПРОСОМ. Он передает параметр SQL Server и возвращает только необходимые строки. Другой способ — создать таблицу на SQL Server, содержащую значения условий фильтра, соответствующие столбцам в таблице. Вы создаете представление, которое фильтруется по этой таблице параметров. Обновите значения в таблице параметров из Access, чтобы изменить результаты представления.   -  person cloudsafe    schedule 14.12.2016
comment
Создание представления на SQL Server, которое возвращает только нужную информацию, — еще один способ сделать это. Это также позволит вам полностью игнорировать любые столбцы данных, которые вам не нужны для этого отчета.   -  person Laughing Vergil    schedule 14.12.2016
comment
Я проверю QueryDef и посмотрю, предлагает ли он нужное мне решение. Спасибо.   -  person    schedule 14.12.2016
comment
@LaughingVergil в основном в MS Access вам нужно добавить индекс через VBA при создании представления, но мне нравятся представления.   -  person Fionnuala    schedule 14.12.2016


Ответы (3)


Это пример того, как таблица параметров работает в SQL Server, которую можно легко обновить из Access. Таблица обновляется или вставляется с текущим именем пользователя и значением фильтра, изменяя строки, возвращаемые представлением.

create table Params ( usrname as nvarchar(100) CONSTRAINT [df_load_date] DEFAULT @@SUSER_NAME , pvalue as nvarchar(100)) Insert into params (pvalue) values ( 'MytableName') Create view vw_test as select * from sysobjects where name in ( Select pvalue from Params where usrname = @@SUSER_NAME)

person cloudsafe    schedule 14.12.2016

Я разговаривал с нашим администратором баз данных. Я собираюсь создать представление. cloudsafe спасибо за предложение, у меня просто не было времени исследовать QueryDef в Access, но я записал его для возможного использования в будущем.

person Community    schedule 15.12.2016

Подключитесь к базе данных SQL Server в Access с помощью вкладки «Внешние данные» через ODBC и используйте SQL в ACCESS или конструктор запросов на вкладке «Создать», чтобы запросить нужные вам данные. SELECT * from TABLE WHERE DATEFIELD > любая дата

person niemoy    schedule 14.12.2016
comment
Это вернет все строки из таблицы, а затем отфильтрует их с помощью предложения WHERE. Это может вызвать проблемы с сетью и замедление. - person cloudsafe; 14.12.2016
comment
Вы говорите, что импортируете все данные и запрашиваете их независимо, чтобы получить нужные мне строки? Если это так, я не хочу использовать этот метод. Я хочу ввести только те строки, которые мне нужны, а затем я буду запрашивать эти строки. - person ; 14.12.2016
comment
У вас есть доступ к базе данных SQL SERVER? Если это так, создайте представление в базе данных SQL Server и подключитесь к представлению через доступ или попросите администратора баз данных создать представление для вас. - person niemoy; 14.12.2016
comment
У меня недостаточно прав для создания представления. - person ; 14.12.2016
comment
Использование предложения where в SQL НЕ извлекает или захватывает все строки, а затем фильтрует их, так что в этом вопросе couldsafe на 100 % ошибается. это включает в себя использование + создание запроса в клиенте доступа на основе связанных таблиц. - person Albert D. Kallal; 17.12.2016
comment
Почти уверен, что я был тем, кто рекомендовал иметь администратора баз данных для создания представления для вас. - person niemoy; 22.12.2016