|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Дублирование записей в DBGrid
В бд (access) есть меются 2 таблицы:
1) Client idc - номер клиента, счётчик family - текст name - текст ph - телефон 2) Visit id - номер встречи, счетчик idc - номер клиента, числовое поле date - ну тут понятно Связь я так понимаю один ко многим, т.к. клиент может несколько раз приходить, т.е. idc(счетчик) 1 ко М idc (числовой) В приложении нужно отображать 1 таблицу для работы с ней, и короче lookup я юзать не могу, потому что они не сортируются/фильтруются/ищутся. Для этого можно сделать кнопочки с sql запросами, т.е. dbgrid будет менять datasource в зависимости от нужной команды. например есть по 2 записи в таблице Client idc family name ph 1 Петров Пётр 12345 2 Иванов Иван 12346 Visit id idc date 1 1 11.08.2011 2 2 12.08.2011 Но проблема в том, что запрос Код:
procedure TForm2.Button1Click(Sender: TObject); begin datamodule1.adoquery1.Active:=false; datamodule1.adoquery1.SQL.Clear; datamodule1.adoquery1.SQL.Add('SELECT visit.id, visit.idc, client.idc, visit.date, client.family'); datamodule1.adoquery1.SQL.Add('FROM visit, client'); datamodule1.adoquery1.SQL.Add('order by client.family'); datamodule1.adoquery1.Active:=true; end; visit.id__visit.idc__client.idc____visit.date____client.family 2________2_________2_______12.08.2011____Иванов 1________1_________2_______11.08.2011____Иванов 2________2_________1_______12.08.2011____Петров 1________1_________1_______11.08.2011____Петров а хотелось бы 2 правильные строки вобщем я подумал что это из-за связи, мб не правильно сделал, удалил связи, делал другие, не помогло. Сделал запрос выборки данных только из 1 таблицы - всё ок работает, а с 2 таблицами такое вот дублирование =\ Где я ошибся?) p.s. извините за многобукв) |
#2
|
||||
|
||||
Код:
datamodule1.adoquery1.SQL.Add('SELECT v.id, v.idc, c.idc, v.date, c.family'); datamodule1.adoquery1.SQL.Add('FROM visit v, client c'); datamodule1.adoquery1.SQL.Add('where v.idc = c.idc'); datamodule1.adoquery1.SQL.Add('order by c.family'); Тем самым связываем таблицы по соответствующим полям. Google в помощь |
#3
|
|||
|
|||
спасибо братюнь
|