Н. 3. Елманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
Затем определим, какие поля этой таблицы нам нужны (можно выбрать все) и как они будут расположены на форме (выберем горизонтальное расположение полей). Затем определим detail-таблицу (в данном случае HOLDINGS), выберем все поля и в качестве способа их отображения определим размещение их в TDBGrid. Наконец, укажем, что таблицы связаны по полю ACCT_NBR (рис. 5.10).
Рис. 5.10. Установка связи между таблицами
Далее выбираем опцию Generate a Main Form и в результате получш форму, похожую на представленную на рис. 5.11.
88
Перенос приложений и унаследованных данных в архитектуру клиент/сервер
Рис. 5.11. Вот что обычно получается при использовании Database Form Wizard
После редактирования и открытия таблиц, изменения размеров формы и панелей, а также замены компонента TDBEdit, отображающего поле IMAGE на TDBImage, получим форму, похожую на рис. 5.12.
Скомпилируем и запустим созданное приложение и рассмотрим, каким образом созданная информационная система реагирует на изменение данных.
Если мы попытаемся удалить первую запись в таблице CLIENTS, нам это удастся, несмотря на то что в таблице HOLDINGS есть связанные с ней "ЭЯшсйГТочно так же можно добавить запись с произвольным значением поля ACC_NBR в таблицу HOLDINGS, и это нам также удастся. Таким образом, в созданной нами базе данных из двух таблйВГсвязЪ "один ко многим" фактически отсутствует.
Итак, на этом простейшем примере мы убедились, что подобный перенос данных, несмотря на простоту, не всегда"приемлем с точки зрения использования всех возможностей серверной СУБД, особенно в случае большого числа таблиц и связей между ними.
89