- Приведение отношения к третьей нормальной форме
- Некоторые атрибуты зависят только от части составного ключа. Устраним частичную зависимость и переведем это отношение во вторую нормальную форму путем декомпозиции основного отношения на следующие отношения:
- 1) Код экспоната, Наименование, Код зала, Дата поступления, Автор, Материал, Техника
- 2) Код зала, Наименование зала, Код ответственного
- 3) Код сотрудника, ФИО, Оклад, Должность
4) Код экскурсии, Время проведения, График, Срок действия, Код ответственного, Стоимость. Отношения 1,2,3 и 4 находятся в третьей нормальной форме, поскольку они находятся во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
- Итак, спроектировали 4 таблицы.
- Определение ключей и создание связей схемы связей.
- Определим первичные и внешние ключи в таблицах и необходимые связи между атрибутами таблиц для обеспечения целостности БД.
В 1-ой таблице первичный ключ — Код экспоната. Атрибут Код зала является внешним ключом к таблице 2. Во 2-ой таблице первичный ключ- Код зала. Атрибут Код ответственного является внешним ключом по отношению к таблице 3. В 3-ей таблице первичный ключ- Код сотрудника. В 4-ой таблице первичный ключ — Код экскурсии, атрибут Код ответственного является внешним ключом по отношению к таблице 3.
Создадим схему связей между атрибутами таблиц для обеспечения целостности БД.
Создание файла базы данных в СУБД Microsoft Access 2003.
Создадим файл спроектированной БД в СУБД Microsoft Access 2003. Для этого запустим программу Microsoft Access 2003, выберем в окне команду Создать файл, затем в окне Создание файла выберем пункт Новая база данных и укажем диск, каталог и имя «Деятельность музея».
Создадим таблицы, для этого выберем объект Таблицы и кнопку Создать. В режиме Конструктор создадим таблицы со следующей структурой:
Изменение структуры таблиц с помощью SQL запроса
С помощью SQL-запроса изменим структуру таблицы Залы. Добавим атрибут Площадь, тип данных – числовой.
- ALTER TABLE Залы ADD COLUMN Площадь FLOAT;
- Внесение данных в таблицы.
- В окне базы данных выберем объект Таблицы, установим курсор на нужную таблицу и нажмем кнопку Открыть. В режиме Таблицы введем записи в таблицы:
- Изменение данных с помощью SQL запросов в MS Access
- Запрос на добавление данных в таблицу Залы:
- INSERT INTO Залы ( [Код зала], Наименование, [Код ответственного], Площадь )
- VALUES (6, «Серебряный», 1, 145);
- Запрос на удаление данных из таблицы Сотрудники Удалим записи с фамилией сотрудника, содержащей « Мечникова»:
- DELETE ФИО
- FROM Сотрудники
Источник: https://poisk-ru.ru/s26218t5.html
Запросы на изменение с помощью инструкций SQL
2015-09-02
- Владимир Ткаченко
- Источник: Обучение в интернет
- Запросы на изменение используются для добавления (INSERT INTO), удаления (DELETE) и обновления (UPDATE) записей в таблицах.
- Команда INSERT INTO может быть использована для добавления одной или нескольких записей в конец таблицы.
- Синтаксис команды INSERT INTO имеет следующий вид: INSERT INTO Название_Таблицы [(Название_Полей)] VALUES (Значения_данных);
Создадим запрос на изменение записи в таблице «Группы» базы данных sql_training_st.mdb.
Например, поместим в таблицу «Группы» запись, содержащую данные (1, БФ-16а, 1, 1) в соответствующие столбцы (КодГруппы, Название, Курс, Семестр).
Для этого запрос в формате: INSERT INTO Группы (КодГруппы, Название, Курс, Семестр) VALUES (1, БФ-16а, 1, 1); введем на бланке запроса, выполнив команду «Конструктор запросов» на вкладке «Создание», в режиме «Режим SQL» из меню Вид.
Сохраняем запрос с именем «Добав_1_записи». В результате в «Области переходов» появится несвязанный объект — «Добав_1_записи» (Рис.1.).
Рис. 1.
После сохранения запроса необходимо выполнить этот запрос, щелкая на пиктограмме «Выполнить».
В результате выполнения команды «Добав_1_записи» в пустой таблице появится первая запись (Рис. 2.)
Рис. 2.
Команда UPDATE предназначена для изменения уже существующих записей в столбцах таблицы, что позволяет обновлять значения в заданных столбцах таблицы.
Синтаксис команды UPDATE имеет следующий вид: UPDATE Название_Таблицы SET Название_Столбца = Новое_Значение WHERE Условие_Отбора;
В предложении SET указываются имена столбцов, данные в которых надо изменить. Оператор WHERE не является обязательным, но при его помощи можно указать только на те строки столбцов (таблиц), которые необходимо обновить.
Создадим запрос на изменение записи в таблице «Группы» базы данных sql_training_st.mdb.
Например, изменим уже существующую запись для первого ключевого поля id в столбце «Название» таблицы «Группы».
Запрос в формате: UPDATE Группы SET Название ='БФ-16б' WHERE ID=1; создаем на бланке запроса, выполнив команду «Конструктор запросов» на вкладке «Создание», в режиме «Режим SQL» из меню Вид.
Сохраняем запрос с именем «Изменение_записи_1». В результате в «Области переходов» появится объект — «Изменение_записи_1» (Рис. 3.).
Рис. 3.
После сохранения запроса необходимо выполнить этот запрос, щелкая на пиктограмме «Выполнить».
В результате выполнения команды «Изменение_записи_1» появится окно диалога, в котором необходимо ввести значение параметра ID=1 и нажать кнопку ОК. После этих действий в таблице «Группы» изменится запись в поле «Название» с БФ-16а на БФ-16б (Рис. 4.).
Рис. 4.
Команда DELETE предназначена для удаления записей из таблицы.
Формат запроса на удаление записей: DELETE FROM Название_Таблицы WHERE Условие_Отбора;
Создадим запрос на изменение записи в таблице «Группы» базы данных sql_training_st.mdb.
Например, удалим существующую запись для первого ключевого поля id во всех столбцах (полях) таблицы «Группы».
Для этого запрос в формате: DELETE FROM Группы WHERE ID=1; создаем на бланке запроса, выполнив команду «Конструктор запросов» на вкладке «Создание», в режиме «Режим SQL» из меню Вид.
Сохраняем запрос с именем «Удаление_записи_1». В результате в «Области переходов» появится объект — «Удаление_записи_1» (Рис. 5.).
Рис. 5.
После сохранения запроса необходимо выполнить этот запрос, щелкая на пиктограмме «Выполнить».
В результате выполнения команды «Удаление_записи_1» появится окно диалога, в котором необходимо ввести значение параметра ID=1 и нажать кнопку ОК.
После этих действий откроется окно диалога «Подтвердите удаление записей». После подтверждения в таблице «Группы» будет удалены данные во всех полях, т.е. удалена запись (Рис. 6.).
Рис. 6.
Следует отметить, что для удаления данных в конкретных полях таблицы целесообразно воспользоваться командой UPDATE и заменить значения в требуемых полях на Null. Если необходимо удалить таблицу в целом, то следует использовать оператор DROP TABLE (синтаксис оператора: DROP TABLE Название_Таблицы;).
Восстановим первую запись в таблице «Группы», выполнив команду «Добав_1_записи», в результате восстановим первую запись (Рис. 7.).
Рис. 7.
Источник: https://www.lessons-tva.info/articles/informat/34.html
Запросы на изменение Access — Базы данных Access
В этой статье поговорим про запросы на изменение Access.
К запросам на изменение относятся запросы на обновление данных в записях таблицы базы, на добавление и удаление записей из таблицы, а также запросы на создание таблицы из записей, сформированных в нем.
Чтобы создать запросы на изменение Access, используется конструктор. Процесс создания любого запроса на изменение начинается с создания запроса на выборку, который после добавления в него необходимых таблиц преобразуется в нужный запрос на изменение.
По умолчанию Access 2010 в целях обеспечения безопасности, как правило, блокирует выполнение всех запросов на изменение. Если при выполнении запроса на изменение ничего не происходит, проверьте, не появляется ли в строке состояния Access сообщение: «Данное действие или событие заблокировано в режиме отключения».
Если отображается это сообщение и панель сообщений (Message Bar) (рис. 4.39), для включения заблокированных запросов можно нажать на ней кнопку Включить содержимое (Enable content). После этого выполнение запроса будет доступным.
Если панель сообщений была закрыта и больше не отображается, перейдите на вкладку Файл (File) и на открытой странице Сведения (Info) в блоке Предупреждение системы безопасности (Security Warning) нажмите кнопку Включить содержимое (Enable Content) (рис. 4.40).
В открывшемся списке (рис. 4.41) можно Включить все содержимое (Enable All Content) открытой базы данных. Это приведет к тому, что при повторных открытиях базы ни панели сообщения, ни сообщений о невозможности выполнения запроса действия выводиться не будет, т. к. база данных будет отнесена к разряду надежных. То же самое происходит, если была нажата кнопка Включить содержимое (Enable content) на панели сообщений.
Выбор строки Дополнительные параметры (Advanced Otions) открывает окно параметров безопасности Microsoft Office, в котором можно включить опасное содержимое только на время сеанса. При следующем открытии базы данных опять появится панель сообщений и, если не включать содержимое, запросы действия выполняться не будут.
Чтобы вернуть возможность управления содержимым, откройте окно Параметры Access (Access Options) соответствующей командой на вкладке ленты Файл (File), щелкните на строке Центр управления безопасностью (Trust Center) и далее по кнопке Параметры центра управления безопасностью (Trust Center Settings). В окне центра на странице Надежные документы (Trusted Documents) в строке Сбросить пометку о надежности для всех надежных документов (Cliar all Trusted Documents so that they are no longer trusted) нажмите кнопку Очистить (Clear).
ВНИМАНИЕ!
Единое средство вывода предупреждений системы безопасности — панель сообщений — по умолчанию появляется при открытии базы данных Access 2010 вне доверенного расположения.
Если точно известно, что можно доверять содержимому базы данных, включите все отключенные потенциально опасные активные компоненты — запросы на изменение, макросы, элементы управления ActiveX, некоторые выражения и программы на VBA — при открытии базы данных, содержащей один или несколько этих компонентов.
Для закрепления смотрим видеоурок:
- Далее узнаем про запрос на создание таблицы Access.
Источник: https://accesshelp.ru/zaprosy-na-izmenenie-access/
ACCESS Запросы на изменение. Виды запросов на изменение На удаление записей из таблиц; На обновление существующих записей; На добавление новых записей. — презентация
1 ACCESS Запросы на изменение
2 Виды запросов на изменение На удаление записей из таблиц; На обновление существующих записей; На добавление новых записей в существующие таблицы;
3 Запросы на обновление Запрос на обновление вносит изменения в группу записей одной или нескольких таблиц.
Результат выполнения запроса на обновление зависит от того, в главной или в подчиненной таблице выполняются изменения, а также и от того, разрешено ли каскадное обновление данных.
Будем рассматривать вариант, когда каскадное обновление разрешено. Все примеры приводятся для базы данных «Деканат».
4 Запросы на обновление. Пример 1 Студентка Царева потеряла свою зачетную книжку и ей была выдана зачетка с номером (поле Код студента). Используя запрос на обновление, внесите изменения во все таблицы.
В этом случае достаточно создать запрос на изменение поля Код студента в главной таблице «Студенты».
При этом автоматически изменятся и связанные записи в подчиненных таблицах «Сессия», «Общежитие», «Стипендия» так как каскадное обновление разрешено.
5 Запросы на обновление. Пример 1 Для создания запроса на обновление откройте обычный запрос на выборку в режиме конструктора и добавьте туда таблицу, в которой будут выполняться изменения, у нас «Студенты».
6 Запросы на обновление. Пример 1 Измените тип запроса:
7 Запросы на обновление. Пример 1 Перетащите поля, в которых необходимо обновить значения, в бланк запроса. У нас это поле Код студента. В строку Обновление введите новое значение. У нас
8 Запросы на обновление. Пример 1 Перетащите поля, для которых необходимо установить условия отбора, в бланк запроса. У нас это поле Фамилия. Введите условие в строку Условие отбора. У нас Царева.
9 Запросы на обновление. Пример 1 Просмотрим выбранные изменения в режиме таблицы: Показываются значения полей, которые будут изменяться.
10 Запросы на обновление. Пример 1 Выполним запрос. Для подтверждения изменения ответьте на сообщения:
11 Запросы на обновление. Пример 1 Чтобы проверить выполнение запроса нужно посмотреть содержимое таблиц.
12 Запросы на обновление. Пример 2 Построить запрос на обновление таблицы «Стипендия», увеличивающий январскую стипендию студентов на 10%. В этом случае нужно создать запрос на изменение поля Январь в только в таблице «Стипендия».
13 Запросы на обновление. Пример 2 Для создания запроса на обновление откройте обычный запрос на выборку в режиме конструктора и добавьте туда таблицу, в которой будут выполняться изменения, у нас «Стипендия».
14 Запросы на обновление. Пример 2 Измените тип запроса:
15 Запросы на обновление. Пример 2 Перетащите поля, в которых необходимо обновить значения, в бланк запроса. У нас это поле Январь. В строку Обновление введите новое значение. У нас старое значение поля [Январь]*1,1. Рекомендуется пользоваться построителем выражений.
16 Запросы на обновление. Пример 2 Условий отбора не будет никаких, так как стипендия повышается всем студентам, которые ее получали
17 Запросы на обновление. Пример 2 Просмотрим выбранные изменения в режиме таблицы. Показываются только значения полей, которые будут изменяться.
18 Запросы на обновление. Пример 2 Выполним запрос. Для подтверждения изменения ответьте на сообщения:
19 Запросы на обновление. Пример 2 Чтобы проверить выполнение запроса нужно посмотреть содержимое таблицы «Стипендия».
20 Убедительная просьба!!! Не выполнять запросы на изменение, а сдавать их в виде таблицы!!
21 Запросы на добавление записей Запрос на добавление дописывает записи из одной таблицы в конец другой таблицы. Например, поступили новые студенты и информацию о них нужно внести во все таблицы.
Результат выполнения запроса на добавление зависит от того, в главную или в подчиненную таблицу добавляются записи. Нельзя добавить записи в подчиненную таблицу, если соответствующие изменения не внесены в главную таблицу.
Например, нельзя в таблицу «Сессия» добавить оценки новых студентов, если информация об этих студентах не занесена в таблицу «Студенты».
22 База данных «Новый деканат» Запросы на добавление будут отрабатываться в базе данных «Новый Деканат».
В этой базе, кроме таблиц, которые есть в базе данных «Деканат», есть таблицы «Новые студенты», «Адреса новых студентов», «Новые преподаватели».
Эти таблицы содержат сведения о новых преподавателях и студентах и имеют такую же структуру, что и соответствующие им старые таблицы.
23 Новые таблицы базы данных «Новый Деканат»
24 Запросы на добавление. Пример 1 В базе данных «Новый Деканат» создать запрос, добавляющий информацию из таблицы «Новые преподаватели» в таблицу «Преподаватели». Таблица «Новые преподаватели» содержит сведения о новых преподавателях и имеет такую же структуру, что и таблица «Преподаватели».
25 Запросы на добавление. Пример 1
26 Для создания запроса на добавление записей перейдите в режим конструктора и добавьте в бланк запроса новую таблицу, записи из которой необходимо добавить в старую таблицу. У нас это таблица «Новые преподаватели».
27 Запросы на добавление. Пример 1 Измените тип запроса. Для этого в режиме конструктора выполните команду Запрос, Добавление.
28 Запросы на добавление. Пример 1 На экране появится диалоговое окно Добавление. В списке выбрать таблицу в которую нужно добавить записи
29 Запросы на добавление. Пример 1 Если таблица находится в открытой в настоящий момент базе данных, выберите параметр «в текущей базе данных». Нажмите кнопку OK.
30 Запросы на добавление. Пример 1 Теперь нужно перетащить все поля в бланк запроса. Это можно сделать просто перетащив в строку поле символ «*».
31 Запросы на добавление. Пример 1 Однако, это можно сделать, если нет полей с типом данных «Счетчик. В таблице «Преподаватели» поле Код преподавателя имеет тип счетчик. Поэтому необходимо в бланк запроса перетащить все поля, кроме поля с этим типом.
В этом случае при добавлении записей значения в поле счетчика вставляются автоматически. Первая добавленная запись получит значение на единицу большее, чем имела последняя ранее введенная в поле счетчика запись. Перетащим все поля, кроме поля Код преподавателя.
32 Запросы на добавление. Пример 1 Выполним запрос. Результат:
33 Запросы на добавление. Пример 1 Ответим «Да» на сообщение:
34 Запросы на добавление. Пример 1 Результат смотрим в таблице «Преподаватели». Обратите внимание на значения поля Код преподавателя для добавленных записей.
Источник: http://www.myshared.ru/slide/54103/
Изменение таблиц в Access
После работы с вашей базой данных вы можете обнаружить, что вам нужно внести некоторые изменения в таблицы, в которых хранятся ваши данные. Access позволяет легко изменять таблицы в соответствии с потребностями вашей базы данных.
В этой статье вы узнаете, как создавать и переупорядочивать поля таблицы. Вы также узнаете, как обеспечить правильное и последовательное форматирование ваших данных таблицы путем установки правил проверки, ограничений символов и типов данных в ваших полях. Наконец, мы направим вас к дополнительным параметрам для выполнения простых математических функций в ваших таблицах.
Изменение таблиц
Помимо внесения базовых изменений в ваши таблицы, таких как добавление и перемещение полей, вы можете внести более сложные изменения, которые позволят вам устанавливать правила для ваших данных. Все эти изменения могут помочь сделать ваши таблицы еще более полезными.
Добавление и изменение полей
Access облегчает перегруппировку существующих полей и добавление новых. Когда вы добавляете новое поле, вы даже можете установить тип данных, который определяет, какие типы данных могут быть введены в это поле.
Чтобы добавить новое поле в существующую таблицу:
- Откройте таблицу, затем щелкните заголовок с текстом. Нажмите «Добавить». Если у вас уже есть несколько полей, вам может потребоваться прокрутить весь путь вправо, чтобы увидеть это.
- Появится раскрывающееся меню. Выберите тип данных, который вы хотите использовать для нового поля.
- Текст : это параметр по умолчанию и лучше всего подходит для текста. Вы также должны выбрать его для чисел, с которыми вы не планируете заниматься математикой, например, почтовые индексы и номера телефонов.
- Номер : это лучше всего для чисел, которые вы, возможно, захотите сделать с помощью, например, количества заказанного или проданного предмета.
- Валюта : это автоматически форматирует номера в валюте, используемой в вашем регионе.
- Дата и время : это позволяет вам выбрать дату из всплывающего календаря.
- Да / Нет : вставляется флажок в поле.
- Напоминание : это идеально подходит для большого количества текста, например описания продукта. Вы можете форматировать текст, введенный в поле memo.
- Приложение . Это позволяет вам прикреплять файлы, например изображения.
- Гиперссылка : создает ссылку на веб-сайт или адрес электронной почты.
- Введите имя для своего поля, затем нажмите Enter.
Чтобы переместить поле:
- Найдите поле, которое вы хотите переместить, а затем наведите курсор на нижнюю границу в заголовке поля. Ваш курсор станет четырехсторонней стрелкой
. - Щелкните и перетащите поле в новое место.
- Отпустите курсор. Поле появится в новом месте.
Расширенные параметры поля
На предыдущей странице вы узнали о настройке типа данных для новых полей. Когда вы задаете тип данных полей, вы действительно устанавливаете правило для этого поля. Базы данных часто включают в себя правила, поскольку они являются способом гарантировать, что пользователи вводят правильный тип данных.
Почему это важно? Компьютеры не так умны, как люди, о некоторых вещах. Хотя вы можете признать, что два и 2 или NC и Северная Каролина — одно и то же, Access не будет, и поэтому он не будет группировать эти вещи вместе. Обеспечение ввода данных в стандартном формате поможет вам лучше организовать, рассчитать и понять его.
Правила также могут определять параметры, которые у вас есть для работы с этими данными. Например, вы можете делать только математику с данными, введенными в числовые или валютные поля, и вы можете форматировать только текст, введенный в поля memo.
Существует три основных типа правил, которые вы можете задать для поля: тип данных, лимит символов и правила проверки.
Чтобы изменить тип данных для существующих полей:
- Выберите поле, тип данных которого вы хотите изменить.
- На ленте выберите вкладку «Поля», затем найдите группу «Форматирование». Нажмите стрелку раскрывающегося списка Тип данных.
- Выберите нужный тип данных.
- Тип данных поля будет изменен. В зависимости от выбранного вами типа данных вы можете заметить изменения в своей информации. Например, поскольку мы установили тип данных для поля «Электронная почта» в «Гиперссылка», все адреса электронной почты в этом поле теперь доступны для ссылок.
Нельзя изменять тип данных полей, если вы не уверены, что данные вашего поля находятся в правильном формате для нового типа данных. Например, изменение поля, содержащего только текст в тип номера, приведет к удалению всех ваших полевых данных. Этот процесс часто необратим.
Предельные значения полей
Установка лимита символов для поля устанавливает правило о том, сколько символов — букв, цифр, знаков препинания и даже пробелов — можно ввести в это поле. Это может быть полезно, чтобы данные в ваших отчетах были краткими или чтобы заставить пользователей вводить данные определенным образом.
Например, в приведенном ниже примере пользователь вводит записи, содержащие адреса. Если вы установите предел символов в поле состояния как 2, пользователь может ввести только 2 символа информации.
Это означает, что он должен вводить почтовые сокращения для штатов вместо их полных имен — здесь, Северная Каролина, вместо Северной Каролины.
Обратите внимание, что вы можете установить предел символов только для полей, определенных как текст.
Чтобы установить лимит символов для поля:
- Выберите нужное поле.
- Перейдите на вкладку «Поля» в группе вкладки «Инструменты таблицы», затем найдите группу «Свойства».
- В поле рядом с полем «Размер поля» введите максимальное количество символов, которое вы хотите разрешить в своем поле.
- Сохраните таблицу.
Правила валидации
Правило проверки это правило, которое диктует, какую информацию можно ввести в поле. Когда правило проверки правильное, пользователь не может вводить данные, нарушающие правило.
Например, если мы просим пользователей ввести имя состояния в таблицу с контактной информацией, мы можем создать правило, которое ограничивает допустимые ответы на почтовые индексы штата США.
Это помешало бы пользователям вводить что-то, что на самом деле не являлось реальным почтовым кодом штата.
В приведенном ниже примере мы применим это правило к таблице наших клиентов . Это довольно простое правило проверки — мы просто назовем все допустимые ответы, которые пользователь может ввести, что означает, что пользователи не могут вводить что-либо еще в запись. Тем не менее, можно создавать правила достоверности, которые намного сложнее.
Чтобы создать правило проверки:
- Выберите поле, в которое вы хотите добавить правило проверки. В нашем примере мы установим правило для поля State.
- На ленте выберите вкладку «Поля», затем найдите группу «Проверка поля ». Нажмите выпадающую команду «Проверка», затем выберите «Правило проверки поля».
- Появится диалоговое окно «Конструктор выражений» .
Щелкните текстовое поле и введите свое правило проверки.
- В нашем примере, мы хотим ограничить данные в государственном поле для фактического состояния почтовых кодов. Мы будем вводить каждый из допустимых ответов в кавычках и разделять их словом Or, что позволяет Access знать, что это поле может принимать ответ «AL» или «AK» или «AZ» или любое другое выражение, вступил.
- После того как вы удовлетворены правилом проверки, нажмите «ОК» . Диалоговое окно закроется.
- Еще раз нажмите кнопку «Выдавить подтверждение» . На этот раз выберите «Сообщение проверки поля».
- Появится диалоговое окно «Ввести подтверждение» . Введите фразу, которую вы хотите отобразить в сообщении об ошибке, когда пользователь пытается ввести данные, нарушающие правило проверки.
Ваше сообщение должно информировать пользователя о том, какие данные разрешены.
- Когда вы удовлетворены сообщением об ошибке, нажмите «ОК».
- Правило проверки теперь включено в поле. Пользователи не смогут вводить данные, нарушающие правило.
Дополнительные параметры таблицы
Вычисленные поля и итоговые строки
Добавление вычисленных полей и итоговых строк в таблицу позволяет выполнять вычисления с использованием данных таблицы. Вычисленное поле вычисляет данные в одной записи, а итоговая строка выполняет вычисление по всему полю данных.
Всякий раз, когда вы видите промежуточный итог для одной записи, вы смотрите на вычисленное поле. Аналогично, общая сумма в нижней части таблицы действительно является итоговой строкой.
Источник: https://maxfad.ru/ofis/ms-access/464-izmenenie-tablits-v-access.html
Как программно изменить текст запроса Access?
← →AGGRESSOR © (2006-05-31 10:57) [0]
Добрый день всем. Собственно, весь вопрос в сабже. Кто уже сталкивался?
← →Megabyte © (2006-05-31 11:10) [1]
Из Дельфи?
← →sniknik © (2006-05-31 11:21) [2]
не меняется, нет команды ALTER VIEW, ессть вариант пересоздать «убить» и сделать заново, на это команды есть. см. справку.p.s. мог бы и привести и как, но тут поискт «тех кто сталкивался», а я не сталкивался, просто знаю, прочитал когдато когда учил SQL, никаких «столкновений» не было…
← →Desdechado © (2006-05-31 11:25) [3]
query.sql.text:=»другой текст запроса»;query.Open
← →AGGRESSOR © (2006-05-31 11:41) [4]
2 Megabyte: Это не существенно, главное- код2 sniknik: Вариант «убить и сделать заново» мне не очень подходит, т.к. таким образом я мог бы и динамически его создавать, а потом открывать через DAO.
Задача как раз в том, чтобы получить текст запроса, хранящегося в Access в закладке «запросы», и изменить его, чтоб пользователь мог его потом запустить, не думая о том, что там нужно менять дату.
2 Desdechado: Это не изменение текста запроса, это создание и запуск запроса. Текст надо сначала получить. Откуда- я выше писал.
← →Desdechado © (2006-05-31 11:46) [5]
AGGRESSOR © (31.05.06 11:41) [4]Что-то не то с терминологией. Запрос — это любое обращение к SQL-СУБД.А «сохраненный» запрос — это вьюха.Причем идеология вьюх несколько отличается от того, как, похоже, ты ее используешь. По крайней мере, константы в них зашиваются крайне редко, тем паче даты.
← →Sergey13 © (2006-05-31 11:50) [6]
Как то не очень понятен конечный смысл всего этого.Насколько я помню запросы в аксесе — это нечто вроде вьюх. Зачем потсоянно менять фактически метаданные? Почему просто нельзя свои запросы писать? Где гарантия, что юзер вообще правильно изменит запрос?
← →Aggressor © (2006-05-31 11:52) [7]
Я пользуюсь терминологией MS Access. На закладке написано «запросы», поэтому все элементы, которые там есть, я называю запросами. Я не говорю, что нет обходного пути. Просто хотелось узнать что-то новое.З.Ы.: До сих пор нигде не встречал вьюх на добавление данных в таблицу или удаление данных из нее
← →Aggressor © (2006-05-31 11:55) [8]
2 Sergey13:В том-то и дело, что юзер не будет менять запрос/вьюху, его будет менять моя программа. А не хочу создавать свой, потому что в Аксесе есть макрос (не путать с модулем), который запускает подряд больше десятка запросов/вьюх, и в одном из них нужно вставить правильную дату. Мне проще изменить дату программой и выполнить потом один этот макрос, чем пересоздавать уже готовые запросы
← →Sergey13 © (2006-05-31 11:56) [9]
2 [7] Aggressor © (31.05.06 11:52)А ты вообще прогу в Аксесе пишешь или в Делфи?
← →Sergey13 © (2006-05-31 11:58) [10]
2[8] Aggressor © (31.05.06 11:55)Ну так может тот макрос подправить надо?Хотя я с аксесом не работал — ну его. 😎
← →Aggressor © (2006-05-31 11:58) [11]
2 Sergey13:Пока оформлю это макросом в Аксесе, чтобы было проще отлавливать ошибки синтаксиса, а потом перенесу его в Делфи
← →Desdechado © (2006-05-31 12:36) [12]
> не встречал вьюх на добавление данных в таблицу или удаление данных из нееЭто тоже одна из стандартных функций вьюх — изоляция внутреннего представления от пользователя. Пускай данные добавляет во вьюху, а там они могут быть раскиданы по подлежащим таблицам.
← →sniknik © (2006-05-31 12:43) [13]
> и в одном из них нужно вставить правильную датувот этот один «убей» и создай его по новой с уже правильной датойну или попытайся изменить, вот этих полях хранится описание запросовSELECT Lv,LvExtra,LvModule,LvProp FROM MSysObjects WHERE Type=5открой, разбери, измени только одну дату…
← →saxon (2006-05-31 12:44) [14]
> Aggressor © (31.05.06 11:55) [8] А параметр в запросе не поможет?
← →Desdechado © (2006-05-31 12:59) [15]
saxon (31.05.06 12:44) [14]Впервый слышу о параметрических вьюхах.
← →sniknik © (2006-05-31 13:01) [16]
> А параметр в запросе не поможет?тогда макрос придется менять, он в [8] говорит, что запрос вызывается из него.
← →sniknik © (2006-05-31 13:03) [17]
> Впервый слышу о параметрических вьюхах.это ты с access-ом не работал ;о), там и процедуры сделаны как вьюхи.
← →saxon (2006-05-31 13:07) [18]
> Desdechado © (31.05.06 12:59) [15] Запросы в Access и вьюхи — не одно и тоже, с ними можно работать как со Stored Procedure.> [8]> и в одном из них нужно вставить правильную дату.> sniknik © (31.05.06 13:01) [16] Может я и неправильно понял, но вот тут показалось что это условие в запросе.
← →Aggressor © (2006-05-31 16:02) [19]
2 sniknik [13]:Спасибо за перечень полей!А макрос менять не придется до тех пор, пока не меняется имя запроса. Потому что макрос в Аксесе- это не только код ВБА, но и кое-что еще, чему в нормальном языке даже нет названия (см. закладку «макросы»)
← →sniknik © (2006-05-31 16:06) [20]
> Спасибо за перечень полей!да не за что… поймеш когда в них «унутрь» заглянеш… ;)> А макрос менять не придется до тех пор, пока не меняется имя запроса.а при «убистве» + создании (с тем же именем естественно) исправленного варианта, что, придется?
← →Sergey13 © (2006-05-31 16:10) [21]
2 [19] Aggressor © (31.05.06 16:02)Такое ощущение, что твоя программа на Делфи — это оболочка для запускания макросов. Мне кажется — это несколько неоптимально, так сказать. Не находишь?
← →Aggressor © (2006-06-01 17:06) [22]
2 sniknik © (31.05.06 16:06) [20] :> а при «убистве» + создании (с тем же именем естественно) > исправленного варианта, что, придется?Не придется, НО: это равносильно созданию его заново, а это можно сделать и проще. Тем более что я по-прежнему не знаю, как убить и создать :)2 Sergey13 © (31.05.06 16:10) [21] :В этом случае так и есть.
Потому что отчет делается сначала с помощью запуска SQL к базе SyBase, потом полученный текстовый файл загоняется в Access, а из данных Access»а (только что загруженных и прошлых периодов) экселевский файл тянет нужные в форму отчета (с помощью пользовательских функций через DAO 3.6).
Объеденить эту компанию в некое подобие работающего автоматически отчета мне поможет Delphi.
← →Aggressor © (2006-06-01 17:41) [23]
Разобрался с удалением запроса. Если кому-то интересно:.DoCmd.DeleteObject(acQuery)Сейчас разбираюсь с созданием заново…
← →sniknik © (2006-06-01 18:16) [24]
> .DoCmd.DeleteObject(acQuery)нда… век живи век учись…
;), ты чего его через access удаляеш? а зачем тебе тогда ADO? запрос DROP VIEW xxx, и проще и работать будет не только для аксесса в режиме сервера автоматизации (создание CREATE …).
кстати если ты тянеш за собой access то вполне возможно у него есть методы получить уже расшифрованный запрос, надо только найти.вернее не надо, но раз ты внего так «уперся» и жить без него не можеш… ;о)
← →Aggressor © (2006-06-02 10:26) [25]
Тяну access для того, чтобы запускать огромное кол-во сохраненных там запросов/вьюх через DoCmd.OpenQuery().Кстати, проблему я все-таки решил. Не в лоб, но решил.
Чтобы не пытаться модифицировать запрос/вьюху и изменять там дату, я создал таблицу из одного поля с одной записью типа дата, а потом с пом. DoCmd.
RunSQL апдейчу это самое единственное поле на нужную мне дату без условия, а запрос завязываю на эту таблицу. Все работает 🙂
← →sniknik © (2006-06-02 11:08) [26]
> Тяну access для того, чтобы запускать огромное кол-во сохраненных там запросов/вьюх через DoCmd.OpenQuery().???»процедуры» «запускаются» -> EXEC Proc Par1, … также можно выполнить параметризованную вьюху.стандартно вьюхи «запускаются» SELECT * FROM Viewбез всяких access-ов.
> Кстати, проблему я все-таки решил. …. Все работает :)фактически сделал параметр «через задницу»… чего мешало сделать его «по правильному»? (не понимаю, вроде говорил там у тебя неменяемое чтото, только запросом можно «регурировать», а тут оказывается меняется все… сам и пишеш. т.е.
вообще все…)
← →saxon (2006-06-02 11:16) [27]
> sniknik © (02.06.06 11:08) [26] да уж …. а еще пару дней назад про это говрили.
Источник: http://delphimaster.net/view/3-1149058635