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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 54 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 15.06.2014 10:28 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Orion33 писал(а):
Спасибо. А без видео можно?
Получается, отсутствие возможности редактирования в подчиненной таблице по "многие ко многим" - это не ограничение движка?
Нет, раньше была немного другая конфигурация в Учете книг, построенная как раз по такому типу связи. И всё отлично редактировалось. В наших видео есть пример, по-моему в видео о свойствах таблиц.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15.06.2014 10:53 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Тут есть, что доработать. Скажу сразу, что при редактировании в таблице будет проблематично что-либо улучшить, а вот при редактировании через форму как раз можно еще подумать.
По сути, при "Многие-ко-многим" мы имеем не одну подчиненную, а две таблицы (подчиненная и промежуточная), причем поля можно добавлять и туда и туда, а также редактировать.
Мы рассмотрим все это еще раз в каком-то ближайшем будущем.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15.06.2014 13:05 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
OMEN писал(а):
В наших видео есть пример, по-моему в видео о свойствах таблиц.

Я смотрел это видео, но там пример этой связи упоминается очень вскользь, а про редактирование вообще ничего не сказано. Кнопки доступны для нажатия, но у меня ведь тоже. Но не работают...
Ivan писал(а):
По сути, при "Многие-ко-многим" мы имеем не одну подчиненную, а две таблицы (подчиненная и промежуточная)

Да, я об этом догадался, потому что при удалении и возобновлении связи все ранее подчиненные записи автоматически добавляются. Если это промежуточная таблица, которая, по сути, выполняет роль моей TracksPerAlbum, то было бы хорошо сделать в ней дополнительное поле/поля для сортировки в подчиненной таблице (т.е. для отображения списка по компоновке альбома, а не по ID композиций, названиям и тп), а также открыть ее для редактирования.

Обращение в поддержку отправил.

Да, возник еще вопрос не по теме. Заметил, что при заполнении полей с картинками в папке программы в "Моих документах" появляется куча временных дубликатов картинок. Зачем это нужно было делать? И нельзя ли, если уж это так необходимо, сделать автоподчистку при выходе из базы по шаблону temp_*.jpg?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15.06.2014 13:39 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Orion33 писал(а):
при заполнении полей с картинками в папке программы в "Моих документах" появляется куча временных дубликатов картинок. Зачем это нужно было делать? И нельзя ли, если уж это так необходимо, сделать автоподчистку при выходе из базы по шаблону temp_*.jpg?
да, тоже замечал. Логичнее эти файлы было бы помещать в пользовательскую временную папку %TEMP%, ну, и обязательно подчищать за собой не просто при выходе, а при закрытии каждой БД

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 09:32 
Не в сети
Администратор

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

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 09:54 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Еще вопрос: есть ли в движке поддержка собственных VB функций? Нужна функция подстановки по множеству ID из списка. У вас в демо-таблице сделано так, что одной композиции или одному альбому всегда соответствует один исполнитель. Это не совсем правильно, потому песни бывают записаны дуэтом, а в сборных альбомах участвуют множество музыкантов. Чтобы иметь удобный способ отсева по дереву всех альбомов, в которых принимал участие данный исполнитель, он так или иначе должен фигурировать в списке.

Сейчас движок БД предлагает делать множественный выбор из списка (справочника). Это не совсем правильно, потому что если я захочу поменять написание исполнителя в справочнике, то все перестанет работать, а замена в рабочей таблице значение на новое при условии, что в ячейке содержится перечисление через разделитель, задача не тривиальная. Поэтому логичнее было бы сделать перечисление ID, а затем формировать вычисляемое поле, в котором по ID брать значения из справочника. В этом случае без реализации на VB не обойтись, потому что надо как минимум создать запрос и преобразовать вывод, который будет представлять из себя несколько строк, в одну текстовую строку.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 10:37 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Есть реализация интерпретатора VBScript, а также и возможность вызывать внешние файлы .VBS
Но это не нужно в данном случае. Создайте отдельную подчиненную таблицу "Исполнители" со связью "Многие-ко-многим".

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 10:53 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Ivan писал(а):
Есть реализация интерпретатора VBScript, а также и возможность вызывать внешние файлы .VBS

А каким образом мне сохранить в базе свою функцию? Вызов внешнего файла в данном случае не подходит, если только для группового изменения в таблице. Но хотелось, чтобы оно было все-таки динамическое.
Ivan писал(а):
Но это не нужно в данном случае. Создайте отдельную подчиненную таблицу "Исполнители" со связью "Многие-ко-многим".

Это не совсем то, что нужно. В этом случае будет отдельная таблица, а нагляднее, когда исполнители перечислены в соответствующей графе таблиц "Альбомы" и "Композиции".

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 11:31 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Посмотрите видео "Триггеры" на главной странице нашего сайта, внизу.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 13:11 
Не в сети

Зарегистрирован: 25.04.2012 10:09
Сообщения: 2233
Откуда: Жуковский, Московская область
Orion33 писал(а):
Поэтому логичнее было бы сделать перечисление ID, а затем формировать вычисляемое поле, в котором по ID брать значения из справочника.
Вы можете формировать значения выпадающего списка по формуле с использованием выражений. Для этого из списка таблиц для формирования значений выберите самый последний пункт <ФОРМУЛА>


Вложения:
Formula.jpg
Formula.jpg [ 146.47 КБ | Просмотров: 81735 ]

_________________
90% ответов на ваши вопросы находятся в руководстве, разделах "Вопросы" и "Видео" на нашем сайте.
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 13:29 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
OMEN писал(а):
Вы можете формировать значения выпадающего списка по формуле с использованием выражений. Для этого из списка таблиц для формирования значений выберите самый последний пункт <ФОРМУЛА>

Спасибо, это я знаю. Но это не то. Нужно, чтобы в таблице хранились ID, а при запросе в форму представления выводились имена по этим ID. Вы же предлагаете сделать хранимый список с заранее выбираемыми результатами.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 13:48 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Ivan писал(а):
Посмотрите видео "Триггеры" на главной странице нашего сайта, внизу.

Посмотрел. Но там не сказано, как можно реализовать свою функцию (процедуру) для вызова в теле запроса, как, например CData() или Format(). Я именно это имел в виду.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 15:56 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Вы можете выбрать "Тип команды" не "SQL", а "VBScript".

Есть еще такой экзотический вариант - можно задействовать панель справа, где помимо полей прописать несколько запросов (штук 5, врят ли будет больше исполнителей), выводящих имена по ID-ам.

Однако самый правильный вариант - все-таки использовать подтаблицу со связью "Многие-ко-многим". У исполнителей тоже есть аттрибуты (стаж, возраст, ранг... что там еще может быть интересного..). Посмотрите в демо БД программы "Учет книг".

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 16:09 
Не в сети

Зарегистрирован: 15.04.2014 10:50
Сообщения: 58
Ivan писал(а):
Вы можете выбрать "Тип команды" не "SQL", а "VBScript".

А если надо, чтобы VBScript выполнялся внутри запроса? Или тогда запрос делать внутри скрипта? Но это все равно получится хранимое поле, что с точки зрения динамичности БД не есть правильно. Правильно - это когда связь между таблицами ведется только по числовым ключевым полям, а текстовые названия фигурируют только единожды в таблице определения (т.е. название альбома - только в таблице Альбомы, имя музыканта - только в таблице Музыканы и тд.)

Мне нужно, чтобы запрос формировал таблицу такого вида:
Код:
Album    ID_Musician1, ID_Musician2, ... ID_MusicianN      Name_Musician1, ... Name_Musician2


Где последнее поле вычисляемое и должно формироваться из таблицы путем объединения строк:
Код:
ID_Musician1   Name_Musician1
...
ID_MusicianN   Name_MusicianN


Ivan писал(а):
Есть еще такой экзотический вариант - можно задействовать панель справа, где помимо полей прописать несколько запросов (штук 5, врят ли будет больше исполнителей), выводящих имена по ID-ам.

Дело в том, что состав сборника может быть разный для всех треков, тогда это намного больше 5ти...

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16.06.2014 16:51 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
VBScript внутри запроса нельзя. Подзапросы select в скобках можно, как в сам запрос, так и без этого. Их количество ограничено. Если надо неограничено, то создавайте подчиненную таблицу, и это будет правильно.
Можно построить ниспадающий список с множественным выбором и формулой типа:
SELECT Name ... WHERE ID=1 UNION SELECT Name ... WHERE ID=2...
В Галерее см. скриншот №9 "Документы".

_________________
2B OR NOT 2B = TRUE


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

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


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

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


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

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