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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2011, 06:04   #1
CrHD
 
Регистрация: 19.05.2009
Сообщений: 8
По умолчанию Программное создание подстановки в access

Приветствую.
Есть необходимость связать две таблицы в access.

Начнем со структуры. Таблица Persons - поле Name, DoB, SN; Таблица Reports - поля Diag, Person, Doctor, Date.

Поясняю, через сам access делается все проще простого:
в таблице Reports, на поле Person => тип данных => мастер подстановки => выбираем таблицу Persons => выбираем поле Name => и получаем в таблице Reports, на поле Person великолепный чекбокс, в котором можно выбрать любого человека из таблицы Persons.

Но проблема - нужно создавать таблицы напрямую из Delphi.
Так вот, создаю таблицу довольно просто:
Код:
ADOQuery1.SQL.Text:='CREATE TABLE Report (`Diag` string (255), `Person` string (100), `Doctor` string (100), `Date` date);';
Также добавляю данные:
Код:
ADOQuery1.SQL.Add('INSERT INTO Report (Diag, Person, Doctor, Date) VALUES (:Diag, :Person, :Doctor, :Date);');
   Parameters.ParamByName('Diag').Value:=Checkbox1.text;
   Parameters.ParamByName('Person').Value:=Edit1.Text;
   Parameters.ParamByName('Doctor').Value:='House M.D';
   Parameters.ParamByName('Date').Value:=MaskEdit1.Text;
   ADOQuery1.ExecSQL;
   ADOQuery1.SQL.Clear;
То есть получается что в таблице Reports поле Person должно быть не string, а какая-то ссылка на множество полей...
Как же реализовать такую линковку таблицы?

Заранее благодарен за любые советы.
CrHD вне форума Ответить с цитированием
Старый 19.09.2011, 08:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это обычная связь Master-Detail. Но если ты хочешь такое получить точь-в-точь в делфи так как оно выглядит в Акцессе - забудь о стандартных компонентах. Ищи на просторах инета ченить мегакрутое типа DevExpress, компоненты которых могут позволить в ячейке таблицы разворачивать связанную таблицу.
А сами таблицы связываются по уникальному ключу, как правило числовому, не здря Акцесс всегда настойчиво предлагает при создании таблицы создать ключ.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2011, 08:24   #3
CrHD
 
Регистрация: 19.05.2009
Сообщений: 8
По умолчанию

Нет нет, я не хочу этого отображать в делфи. Мне нужно создать это в access, но из делфи.
Т.е. прога создает mdb, экспортит туда таблицы...
Потом открыв db.mdb нужно увидеть там эти таблицы связанными. Если запросом этого не реализовать, то мб это делается с подачи TAccessApplication?
CrHD вне форума Ответить с цитированием
Старый 19.09.2011, 08:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то мб это делается с подачи TAccessApplication?
На твоем бы месте я бы рискнул сделать запись в макрос создания в акцессе такой связи, потом посмотрел как этот макрос устроен и тогда да - можно попробовать описать все что показал макрос в TAccessApplication.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное создание БД phpusr БД в Delphi 10 01.02.2010 07:41
Создание поля подстановки Doser БД в Delphi 8 11.01.2010 20:09
Программное выполнение SQL запроса на VBA Access chandrasecar Microsoft Office Access 2 02.06.2009 21:46
Программное создание книги Волк Microsoft Office Excel 2 16.03.2009 07:57
Программное создание Editов Alar Компоненты Delphi 0 29.10.2006 23:13