Форум: "Базы";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
ВнизРедактирование данных Найти похожие ветки
← →
Fuelfire (2003-05-22 11:04) [0]Здравствуйте, специалисты! Подскажите, как решить следующую задачу.
Есть главная форма с ДБгридом. При клике по ячейке уходишь на форму редактирования конкретной записи. На этой форме надо отобразить в DBEdit"ах значения записи из главной таблицы (здесь проблем нет), а также в 2-х Гридах все записи из двух подчиненных таблиц и позиционировать индикатор Гридов на нужное значение.
Если зацепить эти Гриды на Query, то на форме редактирования при выборе строк в гриде осуществляется переход по записям. Если же зацепить Грид на соответствующие подчиненные таблицы, тогда на форме редактирования записи не отображается конкретное значение из этих таблиц: индикаторы на Гридах всегда установлены на первую запись...Что можно сделать?
← →
Stas (2003-05-22 11:16) [1]А почему не использовать Query ?
А может ты неправильно связал таблицы ?
← →
Sergey13 (2003-05-22 11:19) [2]2Fuelfire (22.05.03 11:04)
>а также в 2-х Гридах все записи из двух подчиненных таблиц
Все записи или нужные?
>и позиционировать индикатор Гридов на нужное значение
Не грид позиционируй а в датасете находи нужную запись, а уж грид как нибудь сам позиционируется.
>Если зацепить
Че й то я не понял про твои зацепы. Поподробнее можно?
← →
Fuelfire (2003-05-22 11:44) [3]В общем такая ситуация.
Есть главная таблица Games: ID, Name, GenreID, Played, Developer, Net, Solution, Cheat
Есть справочник фирм Firms: ID, FirmName
Есть справочник жанров Genres: ID, GenreName
Связаны эти таблицы следующим образом Games.GenreID <-->Genres.ID; Games.Developer<-->Firms.ID
На форме редактирования надо показать все поля из таблицы Игры плюс список жанров и список фирм..В списках надо показать к какому жанру относится и кто разработчик...Вот такая постановка задачи...Так как сделал на данный момент, получается, что в 2-х гридах записи из таблиц Жанры и Игры дублируются
← →
Sergey13 (2003-05-22 11:59) [4]для жанров и разработчиков (хотя зачем их редактировать?) надо (можно) в таблице игр создать лукапные поля на соответствующие справочники. И никаких дополнительных гридов. Если я правильно понял.
← →
Ann (2003-05-22 12:09) [5]а текст запроса? может тогда разбиремся почему дубрируются
← →
Fuelfire (2003-05-22 12:21) [6]SELECT Games.ID, Games.Name, Games.GenreID, Games.Played, Games.Publishier, Games.Developer, Games.GameYear, Games.Net, Games.Playability, Games.Graphics, Games.Sound, Games.Solution, Games.Cheat, Genres.GenreName, Firms.FirmName, Articles.GameID, Articles.Info
FROM "Games.DB" Games LEFT OUTER JOIN "Firms.DB" Firms on (Games.Developer = Firms.ID) LEFT OUTER JOIN "Genres.DB" Genres ON (Games.GenreID = Genres.ID)
LEFT OUTER JOIN "Articles.DB" Articles ON (Games.ID = Articles.GameID) WHERE (Name LIKE :Name_param) ORDER BY Games.Name
Дублируются они потому, что запрос вытягивает записи с помощью LIKE.... Так как допустим две игры, название которых начинается скажем на букву A могут быть одного жанра - вот уже пошло дублирование.
LIKE использую по той причине, что на главной форме находится TTreeView. Нажимаю на папку - в гриде появляются нужные записи.. Может по клику на конкретной записи вытаскивать ее Ид и формировать другой запрос?
← →
Fuelfire (2003-05-22 12:25) [7]2Sergey13 ©
Жанры и Фирмы редактировать не надо, но надо дать возможность пользователю их менять для игр
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c