Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 163
Записей в блоге: 1
1

Динамическое создание запросов в MS Access как в MS SQL

06.07.2015, 14:35. Показов 1637. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Пишу программу на Delphi. Обращение к разным базам. С MS SQL все получается, а с MS Access не очень.
Вот один из насущных вопросов. Подскажите пожалуйста кто знает:
Как в MS Access динамически создавать и удалять запросы как в MS SQL?

SQL
1
2
3
4
5
6
7
8
CREATE VIEW MyView AS
SELECT MyTable1.Field1,
       MyTable2.Fld1,
       MyTable2.Fld2
FROM   dbo.MyTable1 INNER JOIN
       dbo.MyTable2 ON
       MyTable1.Field1 = MyTable2.Fld1
WHERE  MyTable2.Fld3 = 'X'
SQL
1
2
3
4
5
USE MyDB IF EXISTS
(SELECT TABLE_NAME 
 FROM INFORMATION_SCHEMA.VIEWS
 WHERE TABLE_NAME = 'MyView')
DROP VIEW MyView
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2015, 14:35
Ответы с готовыми решениями:

Создание запросов и дополнительных запросов MS Access. Как првильно делать.
Здрасте всем. Может кто-то может мне тупому объяснить что-нибудь по запросам и дополнительным...

Создание баз и таблиц в Access при помощи SQL-запросов типа DDL
Господа, не пытайтесь создавать базы и таблицы в Access при помощи SQL-запросов типа DDL....

Составление сложных SQL запросов к Access из VB.Net
Всем доброго времени суток! Не так давно начал создавать базу данных в Access и создание формы для...

Составление (генерация) сложных SQL запросов к Access
День добрый, уважаемые участники форума! Требуется консультация по вопросу как правильно...

5
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
06.07.2015, 16:37 2
Лучший ответ Сообщение было отмечено GreyW как решение

Решение

Для того,чтобы использовать CREATE VIEW, DROP VIEW ... нужно в параметрах базы Аксесса указать - синтаксис для SQL сервера (ANSI 92).
1
71 / 71 / 16
Регистрация: 07.05.2014
Сообщений: 181
07.07.2015, 09:45 3
Visual Basic
1
2
CurrentDb.QueryDefs("MyView").sql = "SELECT MyTable1.Field1, MyTable2.Fld1, MyTable2.Fld2 " & _
"FROM   MyTable1 INNER JOIN  MyTable2 ON MyTable1.Field1 = MyTable2.Fld1 WHERE  MyTable2.Fld3 = 'X'"
Так то-же можно. В Акцессе.
1
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 163
Записей в блоге: 1
07.07.2015, 13:21  [ТС] 4
Цитата Сообщение от uznik93 Посмотреть сообщение
Так то-же можно. В Акцессе.
Прошу прощения, но это не подойдет. Т.к. программа на Delphi и в файл я физически не могу добавить код VBA.
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Для того,чтобы использовать CREATE VIEW, DROP VIEW ... нужно в параметрах базы Аксесса указать - синтаксис для SQL сервера (ANSI 92).
Спасибо. С CREATE VIEW и DROP VIEW вроде разобрался.
Теперь не получается проверить существование VIEW.
Пробовал
SQL
1
2
USE DbSET.mdb IF EXISTS
 (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = ''qIzmEnerg'')
Что то не получается.

Добавлено через 7 минут
Подскажите как SQL запросом проверить условие, например:
ЕСЛИ ЕСТЬ ЗАПРОС 'qIzmEnerg' ТО УДАЛИТЬ ЗАПРОС 'qIzmEnerg'
или
ЕСЛИ ЕСТЬ ЗАПРОС 'qIzmEnerg' ТО УДАЛИТЬ ЗАПРОС 'qIzmEnerg' ИНАЧЕ СОЗДАТЬ ЗАПРОС 'qIzmEnerg'
Заранее спасибо.
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,864
07.07.2015, 13:34 5
Проверить, есть ли запрос, можно в таблице MSysObjects (выборка по полям Name и Type=5). А вот IF и прочего в SQL Аксесса не видел. Перенесите логику в Дельфи.
1
14 / 14 / 7
Регистрация: 21.06.2013
Сообщений: 163
Записей в блоге: 1
08.07.2015, 16:29  [ТС] 6
Всем спасибо!
Вот функция, если кому надо:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function ExistView(strVN: string; MyConnection: TADOConnection): Boolean;
var
  slst: TStringList;
begin
  slst := TStringList.Create;
  try
    MyConnection.GetTableNames(slst);
    if slst.IndexOf(strVN) > -1 then
      ExistView := True
    else
      ExistView := False;
  finally
    slst.Free;
  end;
end;
0
08.07.2015, 16:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2015, 16:29
Помогаю со студенческими работами здесь

Создание запросов Access
Всем привет! Помогите пожалуйста создать следующие запросы SQL Access: 1) Найдите учащихся,...

Создание запросов в БД MS Access
Дана таблица "точки" с тремя полями: "row" (координата x), "col" (координата y), "letter" (имя...

Создание запросов в MS SQL
Всем Привет. Помогите, пож-та усовершенствовать запрос. (исключить повторения.) есть таблица...

Создание запросов в SQL
Всем доброго времени суток, нужно создать 3 запроса к нижеприведённой БД: 1 Отчет Материально...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru