Форум: "Базы";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Вниздве таблицы Найти похожие ветки
← →
Студент заочник (2002-07-23 11:02) [0]Спасите меня от препода по "Базам данных"!!!
Есть две таблицы Org(организации) и Manager(менеджеры).
Отношение M:1, связаны по ключевому полю id_manager.
Так вот, надо вывести для каждого менеджера, список его предприятий.
А цикл организовать не могу. Всякий гон получается. Блок-схему даже нарисовал.
По схеме должно работать, на практике не работает. ПОМОГИТЕ!!!
работаю без SQL
← →
Alexandr (2002-07-23 11:07) [1]учиться надо было.
← →
Val (2002-07-23 11:12) [2]цикл while not eof по таблице менеджеров и внутренний такой же цикл по таблице предприятий с проверкой, на равенство id.
Интересный подход конечно.
Да вас от препода не только по БД спасать надо ;)
← →
Студент заочник (2002-07-23 11:25) [3]А помочь слабо? Ладно не надо... Сам разберусь.
← →
*** (2002-07-23 11:26) [4]select manager.managerid,orgid
from manager,org
where org.managerid=manager.managerid
← →
Студент заочник (2002-07-23 11:28) [5]для ***. Спасибо конечно, но SQL не канает.
← →
Alexandr (2002-07-23 11:29) [6]ну разбирайся...
Если SQL не канает, ты бы написал, что канает?
← →
Val (2002-07-23 11:51) [7]а как вам еще помочь - программку написать?
← →
LordOfSilence (2002-07-23 13:22) [8]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, например...
← →
MsGuns (2002-07-23 13:31) [9]>Val
Зря вы так на студента..
Надо ж понимать масштаб задач, а то послушаешь некоторых мастаков (и не очень), и получается, что для того, чтобы сделать простенькую прожку типа тел.справочника, надо обязательно ставить какого-нибудь монстра типа MsSQL..
> Студент - заочник
Все намного проще: берете 2 компонента TTable, один из них - на менеджеров (это будет мастер), второй - на организации (это детал). В в св-вах детала заполняете MasterField и MasterDataSet
по связующему ключу. (Этот ключ должен быть определен как первичный - Primary) в обеих таблах.
После этого кидаете на форму 2 TDBGrid, связывая их через DataSource с соотв. таблицами.
В рез-те при работе проги перемещение по верхней (мастер) таблице приводит к тому, что в нижней (детал) будет высвечиваться только те орг-ции, которые "принадлежат" текущему менеджеру.
Если надо именно ПЕЧАТАТЬ, то надо положить еще несколько компонент, в т.ч. некий DataSet, куда вы будете в цикле переписывать содержимое текущего детала
Успехов !!!
← →
Val (2002-07-23 13:47) [10]>MsGuns © (23.07.02 13:31)
Зря вы так на студента..
Честно говоря, ничего обидного в своих постах не вижу. Человек не мог организовать цикл, словесный алгоритм я ему привел. Заметьте, алгоритм для студента первого семестра, изучающего паскаль(говорю с уверенностью, поскольку брат только в прошлом году поступил в институт и я видел их лабы - типизированные файлы(есть аналогия, не правда-ли?) изучают в первом семестре). Согласитесь, поиск данных вот в таком цикле при работе с БД- самый плохой вариант решения данного вопроса. Потому меня и удивил такой подход, причем при сознательном отрицании SQL-решения. Автор вопроса же видит в постах только то, что хочет и это его право.
← →
VAleksey (2002-07-23 13:59) [11]Согласен со всем кроме этого
> Этот ключ должен быть определен как первичный - Primary)
> в обеих таблах.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c