Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 22:21   #1
Choovak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

У меня проблемы с поиском по базе данных с двумя таблицами.
БД сделана в Accesse, состоит из двух таблиц Info_reisa (№_Reisa, Marshrut, Vrema_otpravlenia, Dni_otpravlenia и т.д.) и Punkt_naznachenia (№_Reisa, Punkt_naznachenia, vrema_prebitia, Vrema_v_puti и т.д.).

Связь между таблицами Один ко многим (от Info_reisa к Punkt_naznachenia, так как рейс 1, а населенных пунктов через который проходит несколько. Ключевое поле №_Reisa).

Я хочу чтобы в Edit вписать проходящий пункт. Ниже DBGrid вывел рейсы которые проходят через населенный пункт (т.е. искал в одной таблице а выдал результаты другой).

Допустим выбрали нужный маршрут в этом DBGrid, кликаем по нему (маршруту) и он выдает данные таблици Punkt_naznachenia (время пребытия, цену и всё такое).

+ выдает некоторые данные таблицы Info_reisa

Это вообще возможно, ли надо это как то упростить?

Последний раз редактировалось Stilet; 30.12.2010 в 12:28.
Choovak вне форума Ответить с цитированием
Старый 29.12.2010, 21:36   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Компонентами ADO (TADOQuery, например) и SQL можно вытащить и показать все что угодно.
Прик вне форума Ответить с цитированием
Старый 30.12.2010, 12:16   #3
Choovak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

но как????????? и где искать что то подобное?????
Choovak вне форума Ответить с цитированием
Старый 30.12.2010, 12:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://yandex.ua/yandsearch?date=&te...=5290&lr=20554
Плюс http://www.programmersforum.ru/showthread.php?t=1589 скажем Фаронов Delphi 5 руководство разработчика баз данных
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.01.2011, 13:36   #5
Choovak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

Что у меня здесь не правильно?
Код:
procedure TPoisk.Edit1Change(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from punkt_naznachenia where punkt_naznachenia like
  "+Edit1.Text+'%" order by vrema_prebitia asc;');
  ADOQuery1.Active:=true
end;

end.
Нормально, что название таблицы и имя одного из её столбцов совпадают?

Последний раз редактировалось Stilet; 07.01.2011 в 16:45.
Choovak вне форума Ответить с цитированием
Старый 03.01.2011, 15:10   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Из чего стало понятно, что "не правильно"?
Код:
ADOQuery1.SQL.Text := 'Select * from punkt_naznachenia '+
        'where punkt_naznachenia like ' +QuotedStr(Edit1.Text+'%') +
        ' order by vrema_prebitia';
ADOQuery1.Open;
QuotedStr для того чтобы не париться с кавычками.
Пара мало значащих замечаний:
Open лучше чем Active := True, хотя это почти одно и тоже.
asc можно не указывать - сортировка в возрастающем порядке происходит по умолчанию.

Цитата:
Нормально, что название таблицы и имя одного из её столбцов совпадают?
Не нормально хотя бы потому, что об этом пришлось спрашивать.
Прик вне форума Ответить с цитированием
Старый 06.01.2011, 17:10   #7
Choovak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

Блин вообще ничего не получается. Может лучше как то объединить эти таблицы и уже устроить поиск по объединенной???

Для объединения таблиц на форму поместил ADOQuery написал запрос:
select * from Info_reisa, Punkt_naznachenia
where Info_reisa.№_Reisa_I = Punkt_naznachenia.№_Reisa_P

Пытаюсь подключить, выдает ошибку:
Параметр Info_reisa.№_Reisa_I не имеет значения по умолчанию

Почему?

А если я не укажу ключевые строки (в моем случае №_Reisa), то в таблице получается полный сброд

Последний раз редактировалось Stilet; 07.01.2011 в 16:45.
Choovak вне форума Ответить с цитированием
Старый 07.01.2011, 16:46   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в моем случае №_Reisa
А ты пишешь №_Reisa_I
Ничего не смущает? Как правильно называется поле?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2011, 16:58   #9
Choovak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

Пардон. Я сам немного запутался.
Пришлось смотреть в access, там была ошибка в том, что у меня после № стоял пробел. Теперь заработало.
Перехожу к осуществлению поиска
Choovak вне форума Ответить с цитированием
Старый 07.01.2011, 17:05   #10
Choovak
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 17
По умолчанию

Извините за очень глупый вопрос!
На форму надо кидать еще один компонент Query для поиска?
Choovak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма для работы с двумя таблицами scofieldsj Microsoft Office Access 1 06.12.2009 15:13
Вопрос про связь между двумя таблицами Vit@L БД в Delphi 8 21.07.2009 06:37
Связь между двумя таблицами. megaten Microsoft Office Access 5 17.05.2009 14:17
Работа с TDBCtrlGrid и двумя таблицами из БД kiber0net0 БД в Delphi 4 02.10.2008 00:10
проблемы с поиском vIRTx Паскаль, Turbo Pascal, PascalABC.NET 11 12.06.2008 17:43