Выборка данных из удаленной базы данных

Мы рассмотрели возможности работы приложения с таблицами Visual FoxPro,а как быть, если нужные нам данные находятся в базах данных под управлением других СУБД? Отчасти ответ на этот вопрос был дан в главе 2.

Рассмотрим практическое использование команд, описанных в разделе«SQl-запросы. Грамотное решение» (глава 2), в приложении для получения данных их удаленной БД.

Попробуем на практике

Добавим в наше приложение возможность импорта данных из БД, созданной Microsoft Access. Для того чтобы опробовать добавляемую нами возможность, придется создать в Microsoft Access базу данных AcsBase с таблицамиAcsPers и AcsStaff и набором полей, аналогичным набору полей в таблицахPersons и Staff нашего практического примера. Введите в эти таблицы данныепо нескольким новым сотрудникам и новым должностям. Кроме того, требуется создать настройку на созданную базу данных AcsBase, как это описано в разделе «Настройка ODBC» (глава 2).

Далее выполните следующие действия:

1.    Смените текущую папку, выполнив в окне Command команду

CD ?

Откроется окно, в котором нужно найти созданную нами ранее папкуInStaff.

2.    Если окно проекта не открыто, выберите команду Open (Открыть) изменю File (Файл). В появившемся окне открытия файла выберите файлпроекта, который мы создали ранее.

3.    В окне проекта щелкните мышью по имени нашего меню ismenu, находящегося в папке Menus (Меню). После этого щелкните в окне проекта покнопке Modify (Изменить).

4.    В Menu Designer откройте содержимое подменю Файл щелчком мышьюпо этому пункту, а затем по кнопке Edit, появившейся справа от него.После этого добавьте в открывшееся меню Файл при помощи кнопкиInsert (Вставить) новый пункт - Импорт из Access, как это показано нарис. 4.49.

5.    Закройте окно Menu Designer и на запрос о сохранении изменений ответьте Yes (Да).

6.    Как видите на рис. 4.49, новый пункт нашего меню вызывает на выполнение форму ImpAcs. Соответственно, эту форму нам предстоит создать.Для этого щелкните мышью по папке Forms (Формы), находящейся впапке Documents (Документы), а затем по кнопке New (Новый).

7.    В появившемся окне выберите кнопку New Form (Новая форма). Появится окно Form Designer (Дизайнер форм).

В появившемся окне свойств окна формы установите следующие настройки:

-    Caption -Импорт данных из Access:

   MaxButton - .F.-False.

Для установки соответствующей настройки щелкните по ней в списке настроек и введите значение или выберите из списка в поле над спискомсвойств.

Добавьте в окно элементы, как показано на рис. 4.52. Combol - это раскрывающийся список, он создается кнопкой. Listl и List 2 - это спис¬

ки, они создаются с помощью кнопки. Переключатель режимов создается следующим образом: щелкаем по кнопкеи выделяем мышьюместо под два режима (рис. 4.50), при этом свойство переключателяButtonCount будет равно 2. Если это не так, установите это значениевручную. Чтобы убрать рамку вокруг области переключателя, установитесвойство BorderStyle для переключателя в значение 0 - None. Нажав иудерживая кнопку Ctrl на клавиатуре, щелкаем мышью по созданному переключателю режимов. Вокруг области переключателя режимов появится цветная рамка. Отпускаем кнопку Ctrl на клавиатуре. Затем щелкаем поназванию одного из режимов в переключателе, например Option 1 (такимобразом, мы переходим к редактированию отдельного режима) и меняемв окне свойств значение свойства Caption со значения Options на значеинe Все записи (рис. 4.51). Проделываем ту же процедуру со вторым режимом, но задаем значение свойства Caption - Выбрать из списка.



10.    В окне свойств для элемента List2 установите свойство MuItiSelect в значение .Т.-True. Этим действием мы разрешаем пользователю выбирать всписке сразу несколько записей. Для выбора нескольких записей надонажать клавишу Ctrl.

11.    В окне свойств для элемента List2 установите свойство ColumnCount взначение 2. Это нужно для того, чтобы показывать в списке две колонки.В первой будем выводить табельный номер, а во второй - имена сотрудников.

12.    Мы построили окно формы. Теперь пора создать процедуры, чтобы наполнить форму жизнью. Во-первых, создадим процедуру, вызываемуюпри инициализации формы. Для этого сделайте двойной щелчок по свободному месту формы (не по какому-либо элементу).

13.    Проверьте, что в появившемся окне справа от слова Object (Объект)стоит значение Forml, а справа от слова Procedure (Процедура) -- значение Init. В противном случае поменяйте значения па указанные.

14.    Введите указанный текст:

15.    Закройте окно. Сделайте двойной щелчок мышью по переключателюрежимов.

16.    Проверьте, что в появившемся окне справа от слова Object (Объект)стоит значение Optiongroupl, а справа от слова Procedure (Процедура) - значение InteractiveChange. В противном случае поменяйте значения на указанные.

17.    В окне введите следующий текст:

18.    Закройте окно. Сделайте двойной щелчок мышью по созданному вамисписку Listl.

19.    Проверьте, что в появившемся окне справа от слова Object (Объект)стоит значение Listl, а справа от слова Procedure (Процедура) - значение InteractiveChange. В противном случае поменяйте значения на указанные.

20.    Нам нужно предусмотреть случай, когда выбран режим Выбрать из списка и пользователь выбрал другую таблицу. В этот момент нужно заполнить список List2 данными из другой таблицы. Для этого в окне введитеследующие команды:

21.    Закройте окно. Сделайте двойной щелчок мышью по созданной вамикнопке Отмена 22.    В окне введиie следующий текст:

23.    Закроите окно. Сделайте двойной щелчок мышью по созданной вамикнопке Добавить.

24.    При наступлении события Click (щелчок по кнопке Добавить) и должныосуществляться действия но добавлению в соответствующую таблицу данных из БД Access. Будем проверять, какая таблица выбрана, и в зависимости от этого добавлять данные выборки либо в таблицу Persons, либо в таблицу Staff. В окне введите следующий текст:


25.    Закройте окно.

26.    Закройте окно Form Designer (Дизайнер форм).

27.    В окне проекта щелкните мышью по имени основной программы проекта main, а затем по кнопке Build (Построить). Откроется диалоговоеокно Build Options (Параметры построения), где следует выбрать режимRebuild project (Перестроить проект), а затем щелкнуть мышью по кнопке ОК. Это нужно для обновления связей между компонентами создаваемого приложения.

28.    В окне проекта щелкните мышью по имени основной программы проекта main, а затем но кнопке Run (Выполнить).

29.    Появится окно для ввода имени пользователя и пароля. Введите имяпользователя - Admin и пароль - Password.

30.    В появившемся основном меню приложения выберите команду Импортиз Access из меню Файл.

31.    Проверьте работу созданного вами окна в различных режимах. Не забывайте, что выделить мышью несколько записей сразу можно, если нажатьи не отпускать кнопку Ctrl.

32.    После нажатия кнопки Добавить окно закроется. Выберите одну из команд просмотра записей о пользователях (Просмотр персонально илиПросмотр списком) и убедитесь, что появились новые записи.

33. Завершите работу приложения, выполнив команду Выход из меню Файл.Мы создали инструмент, работающий с таблицами СУБД Access. Этот инструмент при соответствующей настройке ODBC будет работать и с другими источниками данных, например с Microsoft SQL Server.

Если требуется вывести данные на печать

Мы уже рассматривали вопросы вывода информации на экран, где ее можнопросматривать и редактировать. Но иногда требуется вывести информацию набумажный носитель. Так говорят официально. А попросту: надо иметь возможность напечатать отчет на принтере. Если учесть, что принтеры бывают разные и, соответственно, меняется и способ подготовки данных для печати, задача получается непростая. Как можно ее решить с минимальными затратами?