Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Редактирование данных [D5, Paradox]


Fuelfire ©   (2003-05-22 11:04:00) 

Здравствуйте, специалисты! Подскажите, как решить следующую задачу.
Есть главная форма с ДБгридом. При клике по ячейке уходишь на форму редактирования конкретной записи. На этой форме надо отобразить в DBEdit"ах значения записи из главной таблицы (здесь проблем нет), а также в 2-х Гридах все записи из двух подчиненных таблиц и позиционировать индикатор Гридов на нужное значение.
Если зацепить эти Гриды на Query, то на форме редактирования при выборе строк в гриде осуществляется переход по записям. Если же зацепить Грид на соответствующие подчиненные таблицы, тогда на форме редактирования записи не отображается конкретное значение из этих таблиц: индикаторы на Гридах всегда установлены на первую запись...Что можно сделать?


Fuelfire   (2003-05-22 12:25:00) [1]

2Sergey13 ©
Жанры и Фирмы редактировать не надо, но надо дать возможность пользователю их менять для игр


Fuelfire   (2003-05-22 12:21:00) [2]

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. Нажимаю на папку - в гриде появляются нужные записи.. Может по клику на конкретной записи вытаскивать ее Ид и формировать другой запрос?


Ann   (2003-05-22 12:09:00) [3]

а текст запроса? может тогда разбиремся почему дубрируются


Sergey13   (2003-05-22 11:59:00) [4]

для жанров и разработчиков (хотя зачем их редактировать?) надо (можно) в таблице игр создать лукапные поля на соответствующие справочники. И никаких дополнительных гридов. Если я правильно понял.


Fuelfire   (2003-05-22 11:44:00) [5]

В общем такая ситуация.
Есть главная таблица 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:19:00) [6]

2Fuelfire (22.05.03 11:04)
>а также в 2-х Гридах все записи из двух подчиненных таблиц
Всезаписи или нужные?
>и позиционировать индикатор Гридов на нужное значение
Не грид позиционируй а в датасете находи нужную запись, а уж грид как нибудь сам позиционируется.
>Если зацепить
Че й то я не понял про твои зацепы. Поподробнее можно?


Stas   (2003-05-22 11:16:00) [7]

А почему не использовать Query ?
А может ты неправильно связал таблицы ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо