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

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

две таблицы


Студент заочник ©   (2002-07-23 11:02:00) 

Спасите меня от препода по "Базам данных"!!!
Есть две таблицы Org(организации) и Manager(менеджеры).
Отношение M:1, связаны по ключевому полю id_manager.
Так вот, надо вывести для каждого менеджера, список его предприятий.
А цикл организовать не могу. Всякий гон получается. Блок-схему даже нарисовал.
По схеме должно работать, на практике не работает. ПОМОГИТЕ!!!
работаю без SQL


VAleksey   (2002-07-23 13:59:00) [1]

Согласен со всем кроме этого

> Этот ключ должен быть определен как первичный - Primary)
> в обеих таблах.


Val   (2002-07-23 13:47:00) [2]

>MsGuns © (23.07.02 13:31)
Зря вы так на студента..
Честно говоря, ничего обидного в своих постах не вижу. Человек не мог организовать цикл, словесный алгоритм я ему привел. Заметьте, алгоритм для студента первого семестра, изучающего паскаль(говорю с уверенностью, поскольку брат только в прошлом году поступил в институт и я видел их лабы - типизированные файлы(есть аналогия, не правда-ли?) изучают в первом семестре). Согласитесь, поиск данных вот в таком цикле при работе с БД- самый плохой вариант решения данного вопроса. Потому меня и удивил такой подход, причем при сознательном отрицании SQL-решения. Автор вопроса же видит в постах только то, что хочет и это его право.


MsGuns   (2002-07-23 13:31:00) [3]

>Val
Зря вы так на студента..
Надо ж понимать масштаб задач, а то послушаешь некоторых мастаков (и не очень), и получается, что для того, чтобы сделать простенькую прожку типа тел.справочника, надо обязательно ставить какого-нибудь монстра типа MsSQL..

> Студент - заочник
Все намного проще: берете 2 компонента TTable, один из них - на менеджеров (это будет мастер), второй - на организации (это детал). В в св-вах детала заполняете MasterField и MasterDataSet
по связующему ключу. (Этот ключ должен быть определен как первичный - Primary) в обеих таблах.
После этого кидаете на форму 2 TDBGrid, связывая их через DataSource с соотв. таблицами.
В рез-те при работе проги перемещение по верхней (мастер) таблице приводит к тому, что в нижней (детал) будет высвечиваться только те орг-ции, которые "принадлежат" текущему менеджеру.
Если надо именно ПЕЧАТАТЬ, то надо положить еще несколько компонент, в т.ч. некий DataSet, куда вы будете в цикле переписывать содержимое текущего детала

Успехов !!!


LordOfSilence   (2002-07-23 13:22:00) [4]

tblManager.First();
while not tblManager.EOF do begin
WrilteLn( "ManagerName" );
tblOrganization.First();
while not tblOrganization.EOF do begin
if tblOrganization.FieldByName( "id_manager" ).AsInteger =
tblManager.FieldByName( "id_manager" ).AsInteger then
WrilteLn( "OrganizationName" );
tblOrganization.Next();
end;
tblManager.Next();
end;

Алгоритм схематичный и совершенно "тупой".
Но ведь я же не знаю условия задачи -
есть ли у Вас индексы, разрешено ли Вам
применять фильрование и т.п.
Операторы WriteLn, естественно, использовать не надо,
они показаны только для того, чтобы Вы видели, что
здесь с данными можно что-то сделать. Уж не знаю -
добавить в TMemo или TListBox, например...


Val   (2002-07-23 11:51:00) [5]

а как вам еще помочь - программку написать?


Alexandr   (2002-07-23 11:29:00) [6]

ну разбирайся...
Если SQL не канает, ты бы написал, что канает?


Студент заочник   (2002-07-23 11:28:00) [7]

для ***. Спасибо конечно, но SQL не канает.


***   (2002-07-23 11:26:00) [8]

select manager.managerid,orgid
from manager,org
where org.managerid=manager.managerid


Студент заочник   (2002-07-23 11:25:00) [9]

А помочь слабо? Ладно не надо... Сам разберусь.


Val   (2002-07-23 11:12:00) [10]

цикл while not eof по таблице менеджеров и внутренний такой же цикл по таблице предприятий с проверкой, на равенство id.
Интересный подход конечно.
Да вас от препода не только по БД спасать надо ;)


Alexandr   (2002-07-23 11:07:00) [11]

учиться надо было.


Наверх

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