Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 27.11.2024 13:38

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Вопрос по триггерам
СообщениеДобавлено: 06.07.2014 21:37 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
В видео по триггерам Вы показали, как сделать проверку на уже существующую запись в таблице.
Но гораздо удобнее эту же запись (ее ID) и использовать. Это я реализовал, проверка осуществляется по одному полю "Композиция".
Вот я начинаю набивать новое название, но такие записи уже присутствуют:
Вложение:
PIC1.png
PIC1.png [ 215.12 КБ | Просмотров: 105447 ]

Я хочу выбрать запись с номером 164, навожу на нее мышкой и нажимаю. В этот момент срабатывает триггер:
Вложение:
PIC2.png
PIC2.png [ 229.62 КБ | Просмотров: 105447 ]

Но после того, как я нажимаю OK, в базу вставляется значение с наименьшем номером (ну потому что пока так запрос триггера написан, по-другому не знаю как).
Вложение:
PIC3.png
PIC3.png [ 208.17 КБ | Просмотров: 105447 ]

Вопрос: возможно ли на текущем движке реализовать добавление именно того номера, который мне нужен?

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 07.07.2014 10:56 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Не помешало бы еще и триггер ваш увидеть, ну так, для полноты картины...

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 07.07.2014 18:37 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Вторая строчка. Сейчас там выбирается MIN(ID) просто потому, что я не знаю, как передать ID выбора мышкой...


Вложения:
PIC5.png
PIC5.png [ 77.71 КБ | Просмотров: 105422 ]

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 07.07.2014 21:32 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Как вариант в лоб: создайте в этой таблице скрытое хранимое поле X, в которое будет помещаться идентификатор указанной в таблице выбора записи (чтобы это работало, названия поля с ID композиции в таблице выбора и поля Х должны совпадать) и затем используйте значение этого поля <X> в теле триггера для получения через подзапрос всех нужных данных композиции по ее ID (при этом поле Х можно попутно очищать)

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 10.07.2014 23:12 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Идею понял. Как в таком случае заполнить два поля, выбирая только одно?

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 11.07.2014 12:11 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Автозаполнение работает практически для всех полей, названия которых в таблице выбора и на форме (или в таблице) совпадают. Я писал об этом выше. Это старейшая возможность нашего ПО.

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 12.07.2014 16:18 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Спасибо, попробую реализовать... Хотя не любитель таких костылей :)

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 30.12.2015 12:51 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Здравствуйте.
Руки дошли до реализации идеи :lol:
Снова возник вопрос: Можно ли в текущей версии софта задать условие, чтобы срабатывал разный триггер (или разная его часть) в зависимости от нажатия на кнопку "ОК" или "Отмена"?

Сейчас я добавил в выпадающую таблицу при заполнении (рис. PIC1) еще одно поле:
Код:
SELECT C.ID, C.Composition, C.Duration, C.PubYear, A.Name, C.Musician, C.ID as CompID
FROM (tblCompositions AS C LEFT JOIN tblTracks AS T ON C.ID = T.CompositionID)
LEFT JOIN tblMain AS A ON A.ID = T.AlbumID
WHERE A.IsCollection = 0

И при выборе строчки нужный ID вставляется непосредственно в нужную таблицу. При этом триггер "При добавлении записи" выдает запрос и после подтверждения удаляет ненужную последнюю запись из tblCompositions.
Однако теперь, если нужно внести другой вариант композиции с таким же названием, начинаются проблемы: при вводе названия таблица подстановки открывается автоматически и подставляет CompID, который должен быть в этой ситуации уже новый. Есть ли какое-то красивое решение? Редактировать поле CompID вручную как-то не хочется...

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 30.12.2015 14:29 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Еще вопрос: на какое событие должен реагировать триггер, чтобы выполнялась команда при добавлении записи в таблицу не через окно программы, а через запрос?

И как узнать текущее значение счетчика в таблице? Наверное, это ключевой вопрос, т.к. с наличием этой информации все структурируется.

Либо отказываться от ключевого поля и присваивать идентификаторы отдельно. Но это, мне кажется, не так красиво...

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 30.12.2015 16:30 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Цитата:
не через окно программы, а через запрос?
И как узнать текущее значение счетчика в таблице?

Это вопросы к СУБД, а не к программе.
У Microsoft SQL Server есть собственные триггеры уровня базы данных.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 30.12.2015 16:38 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Ivan писал(а):
Это вопросы к СУБД, а не к программе.
У Microsoft SQL Server есть собственные триггеры уровня базы данных.

Это я все читал, но из них работает только @@IDENTITY. Или я что-то не правильно делаю. База на MS ACCESS.

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 30.12.2015 16:44 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Вы можете задать этот вопрос разработчикам Access или на соответствующем форуме по этой СУБД. Например, sql точка ru
Вопрос может звучать так "Как получить текущее значение поля-счетчика, которое будет сгенерировано при следующем добавлении новой записи?". Вам ведь это нужно? Или которое было последнее?
Тогда можно и так: SELECT MAX(ID) FROM tblTable

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 02.01.2016 15:05 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Ivan писал(а):
"Как получить текущее значение поля-счетчика, которое будет сгенерировано при следующем добавлении новой записи?". Вам ведь это нужно?

Да, именно это.
А какая версия Access используется в программе?

ЗЫ. С новым годом всех :)

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 02.01.2016 15:52 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Access не используется при работе программы.
Но, если вы откроете .mdb файл в Access, то увидите, что формат сохранения данных Access2000.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по триггерам
СообщениеДобавлено: 02.01.2016 16:01 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Ivan писал(а):
Access не используется при работе программы.

Это значит, что используется другой набор команд, отличный от спецификации Access?

_________________
Все сообщения относятся к программе "Мои диски" версии 2.х, актуальной на момент написания.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB