Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связывание таблиц в ADOQuery 
:(
    Опции темы
george1980
Дата 1.11.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



В ADOQuery нет свойства Mastersource , как связать две таблицы по двум полям с помощью sql. 
Поля в двух таблицах одинаковые. В одной таблице содержаться основные данные людей (ФИО, ул, дом, кв), а во второй другие данные (например: данные человека).
Действие должно быть такое: например пользователь щёлкает на записи в таб.1 , а данные этой записи отображаются в табл.2, то есть фильтруются.

PM MAIL   Вверх
AlanFree
Дата 1.11.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



если я тебя правильно понял то для этой цели можно использовать Left Join если тебе нужно по подробней приведи имена табциц и полей, я напишу тебе запрос
PM MAIL   Вверх
SergeBS
Дата 1.11.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



george1980, 
1.
Цитата

В одной таблице содержаться основные данные людей (ФИО, ул, дом, кв), 

Достаточно, чтобы сделать вывод - структура БД - неправильная.

2. Правила:
Цитата

Обязательно указание:
1. Базы данных (Paradox, Oracle и т.п.)
2. Способа доступа (ADO, BDE и т.д.)

Какая БД?
PM MAIL   Вверх
george1980
Дата 1.11.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Извеняюсь !!!
База DBase (*.dbf), способ доступа ADO.
Описываю таблицы:
Имеются две таблицы F1 и F2 с одинаковыми полями по которым надо сделать связь по полям, py, nkar.
В первой таблице список людей (с уникальным py и nkar) а во второй например список товаров которые они приобрели.
И ещё, нужно ли делать индексы по этим полям ?

 
PM MAIL   Вверх
Rodman
Дата 1.11.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Код

SELECT F1.* , F2.* 
FROM F1 INNER JOIN F2 ON ((F1.py=F2.py)and(F1.nkar=F2.nkay))


попробуй так smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 1.11.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(george1980 @  1.11.2006,  13:11 Найти цитируемый пост)
В ADOQuery нет свойства Mastersource 

а DataSource есть?
В данном случае

DSSpecif.DataSet := adodsGoodsSpecifiedSelect;

Rodman, да, это хороший вариант, но в этом случае запрос не редактиуемый, а если пользователь хочет редактировать данные непосредственно в таблице?

Добавлено @ 16:59 
В событии OnDataChange компоненты TDataSource, который присоединён к MasterDataSet, пишем код код переоткрытия DetailDataSet с передачей детальному датасету MasterID.

Код

//DSSpecif - мастер датасет
//adodsGoodsSeriesSelect - детельный датасет
procedure TDM.DSSpecifDataChange(Sender: TObject; Field: TField);
begin
  try
    with adodsGoodsSeriesSelect
    do begin
      DisableControls;
      Close;
      Parameters.ParamByName('@Specified_id').Value :=
        adodsGoodsSpecifiedSelect.FieldByName('Specified_id').Value;
      Open;
    end;
  finally
    adodsGoodsSeriesSelect.EnableControls;
  end;
end;



Добавлено @ 17:03 
Цитата(george1980 @  1.11.2006,  15:54 Найти цитируемый пост)
База DBase (*.dbf), способ доступа ADO.

извини, что не в тему но я бы использовал DBE, мало того не просто BDE, а BDE+Paradox. Скорость работы программы возростёт на несколько порядков. Это доказано на практике.
Vit проводил сравнительные тесты BDE и ADO. BDE выиграл с отрывом в 2000 раз. Как тебе, а?

Это сообщение отредактировал(а) Akella - 1.11.2006, 17:00
PM MAIL   Вверх
SergeBS
Дата 2.11.2006, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1111
Регистрация: 10.6.2005
Где: Владимир

Репутация: 11
Всего: 22



Akella,
Цитата

Vit проводил сравнительные тесты BDE и ADO. BDE выиграл с отрывом в 2000 раз. Как тебе, а?

Без уточнения что сравнивалось и как - это только слова. Поскольку я, например, работая с DBF через ADO(исключительно ради эксперимента!) настройками ADO изменил время отработки операции с 0.5 до 10 сек. А потом ее правильно оформил и получил 0.06 сек.

george1980, 
Читай [email=http://forum.vingrad.ru/index.php?showtopic=92925]тут[/email]
Бросай ADO/BDE. Бери TDbf/Halcyon и т.п.
PM MAIL   Вверх
george1980
Дата 2.11.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



SELECT F1.* , F2.* 
FROM F1 INNER JOIN F2 ON ((F1.py=F2.py)and(F1.nkar=F2.nkar))

Попробовал. Чёт вообще комп виснуть стал, а код не обрабатывается. Пришлось снимать задачу в диспетчере задач.
У меня на компе SQL сервер не  стоит, может из за этого некоторые команды не обрабатываются. 
PM MAIL   Вверх
ТоляМБА
Дата 2.11.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Цитата(george1980 @  2.11.2006,  11:49 Найти цитируемый пост)
У меня на компе SQL сервер не  стоит
 А при чем тут SQL сервер и
Цитата(george1980 @  1.11.2006,  15:54 Найти цитируемый пост)
База DBase (*.dbf), 
  smile 



PM   Вверх
Akella
Дата 2.11.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



george1980, а какой SQL сервер ты имеешь ввиду?
PM MAIL   Вверх
george1980
Дата 2.11.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



mySQL. Если его ставиш, то всё работает намного быстрей и нету многих глюков. 
Да просто подскажите как можно связать две таблицы по двум полям.
 Это делается с помощью SQL запросов или есть какой нибудь другой способ ? Как например в BDE , ставиш TTable в нём  указываеш MasterSource и связываеш поля.  
PM MAIL   Вверх
Akella
Дата 2.11.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



george1980, а какое отношение имеет MySQL к *.dbf (dBase)???

Это сообщение отредактировал(а) Akella - 2.11.2006, 16:04
PM MAIL   Вверх
george1980
Дата 3.11.2006, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Ваза данных в файлах *.dbf. 
Так что связать значит никак ? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.