Информация, используемая в разрабатываемом приложении, может находиться не только в таблицах Visual FoxPro, но и в электронных таблицах Microsoft Excel, в текстовом виде, в файлах базы данных Paradox или же на сервере базы данных типа SQL Server. Все такие данные называются удаленными данными, несмотря на то, что они могут находиться даже на одном компьютере с Visual FoxPro.
Для доступа к удаленным данным используется стандартный протокол доступа к базам данных (ODBC). Все базы данных, а также электронные таблицы имеют драйверы ODBC, с помощью которых вы можете соединяться с ними и получать доступ к их содержимому.
Определение источника данных ODBC
После установки драйверов ODBC вы можете определить для него один или несколько источников данных ODBC.
Для добавления источника данных ODBC выполните следующие действия:
Замечание
Вид диалогового окна настройки параметров соединения зависит от типа источника данных. Тем не менее, для всех источников данных необходимо в поле ввода Name (Имя) указать имя источника данных, которое в дальнейшем используется для ссылки на источник данных. Поле ввода Description (Описание) содержит краткое описание источника данных. Если при определении значений остальных полей возникнут проблемы, обратитесь к администратору базы данных, к которой вы собираетесь определить доступ.
Рис. 22.1. Диалоговое окно ODBC Data Source Administrator
Рис. 22.2. Диалоговое окно Create New Data Source
Рис. 22.3. Диалоговое окно определения параметров соединения
Удобным средством для работы с удаленными данными является именованное соединение, которое хранится в базе данных и на которое можно ссылаться по имени при создании удаленного представления.
Рис. 22.4. Раздел Connections списка Database
Вы также можете устанавливать свойства именованного соединения для оптимизации связи между Visual FoxPro и удаленным источником данных. При активизации удаленного представления его соединение становится каналом, ведущим к удаленному источнику данных.
Для создания именованного соединения выполните любое из следующих действий:
Окно конструктора соединений (рис. 22.5) позволяет вам задать параметры именованного соединения в интерактивном режиме.
Рис. 22.5. Окно конструктора соединений
Область Specify data source (Определить источник данных) содержит переключатели Data source, userid, password (Источник данных, идентификатор пользователя, пароль) и Connection string (Строка соединения), определяющие способ соединения с источником данных. При выборе первой опции в области отображаются поля ввода (табл. 22.1).
Таблица 22.1. Назначение полей ввода области Specify data source
Поле | Назначение |
Data source
(Источник данных) |
Имя источника данных из списка установленных источников данных ODBC |
Userid
(Идентификатор пользователя) |
Идентификатор пользователя для выбранного источника данных |
Password (Пароль) | Пароль пользователя |
Database
(База данных) |
Имя базы данных |
При выборе переключателя Connection string (Строка соединения) вместо приведенных выше полей ввода отображается только одно поле ввода Connect string (Строка соединения), в котором можно ввести строку соединения с источником данных.
Кнопка Verify Connection (Проверить соединение) предназначена для проверки соединения с указанным источником данных. Кнопка New Data Source (Новый источник данных) позволяет определить новый источник данных непосредственно из конструктора соединений.
Область Display ODBC login prompts (Отображение окна доступа к ODBC источнику) содержит переключатели, определяющие, когда будет открываться диалоговое окно Data Source Login (Доступ к источнику данных) (табл. 22.2).
Таблица 22.2. Переключатели области Display ODBC login prompts
Наименование | Назначение |
When login info is not specified (Когда параметры доступа не определены) | Диалоговое окно Data Source Login (Доступ к источнику данных) открывается только в том случае, если заданный идентификатор пользователя и пароль не найдены в определении именованного соединения |
Always (Всегда) | Указывает, что Visual FoxPro всегда открывает для пользователя диалоговое окно Data Source Login (Доступ к источнику данных), в котором можно выбрать другой регистрационный идентификатор и другой пароль из числа хранящихся в именованном соединении |
Never (Никогда) | Указывает, что Visual FoxPro никогда не открывает диалоговое окно входа в базу данных |
В области Data processing (Обработка данных) определяются свойства, связанные с обработкой данных соединения (табл. 22.3).
Таблица 22.3. Опции области Data processing
Наименование | Назначение |
Asynchronous execution
(Асинхронное выполнение) |
Задает признак асинхронного соединения |
Display warnings (Показывать предупреждения) | Задает признак отображения неперехватываемых предупреждений |
Batch processing (Пакетная обработка данных) | Задает пакетный режим обработки данных |
Automatic transactions
(Автоматические транзакции) |
Задает автоматическую обработку транзакций |
Packet size (Размер пакета данных) | Задает размер пакета данных, передаваемого от сервера базы данных |
Замечание
Для определения значений параметров области Data processing (Обработка данных) вы можете использовать функцию DBSETPROP ().
Область Timeout intervals (Интервалы времени) содержит опции, устанавливающие временные параметры обработки данных (табл. 22.4).
Таблица 22.4. Опции области Timeout intervals
Наименование | Назначение |
Connection (sec)
(Соединение) |
Задает интервал тайм-аута соединения в секундах |
Query (sec) (Запрос) | Задает интервал тайм-аута запроса в секундах |
Idle (min) (Холостой режим) | Задает интервал тайм-аута холостого режима в минутах. Активные соединения по истечении этого интервала времени деактивизируются |
Wait time (ms) (Время ожидания) | Задает промежуток времени в миллисекундах, по истечении которого Visual FoxPro может определить, завершено ли выполнение оператора SQL |
Замечание
Для определения значений параметров области Data processing (Обработка данных) вы можете использовать функцию DBSETPROP ().
По умолчанию для именованного соединения задается имя Connect 1. При закрытии окна конструктора соединений открывается диалоговое окно Save (Сохранить) (рис. 22.6), предлагающее ввести подходящее имя соединения.
Рис. 22.6. Ввод имени соединения
Все созданные вами именованные соединения отображаются в разделе Connections (Соединения) списка Database (База данных). Например, на рис. 22.7 приведены именованные соединения с источниками данных Access, Microsoft SQL Server и Microsoft Excel.
Рис. 22.7. Именованные соединения
Для изменения параметров именованного соединения выберите требуемое соединение и нажмите кнопку Modify (Модифицировать). Откроется окно конструктора соединений, в котором вы можете изменить любые параметры соединения.
Настройка параметров удаленных представлений и соединений в диалоговом окне Options
Прежде чем запускать мастера удаленных представлений, вы можете установить опции для принимаемых по умолчанию параметров удаленных представлений и соединений, используя вкладку Remote Data (Удаленные данные) диалогового окна Options (Параметры) (рис. 22.8).
Рис. 22.8. Настройка параметров удаленных представлений и соединений
Область Remote view defaults (Удаленное представление по умолчанию) содержит параметры (табл. 22.5), используемые по умолчанию при создании удаленных представлений.
Таблица 22.5. Параметры удаленного представления
Параметр | Описание |
Share connection (Совместное подключение) | Указывает, что в новых представлениях будет использоваться текущее совместно используемое соединение |
Fetch memo (Выборка Memo-поля) | Указывает, что Memo-поле не будет выбираться из источника данных до тех пор, пока оно не будет активизировано в представлении данных |
SQL updates: Criteria (Критерии SQL-обновления) | Задает критерий обновления данных |
SQL updates: Method (Методы SQL-обновления) | Задает метод обновления данных |
Records to fetch at a time (Выборка записей за промежуток времени) | Задает количество записей, возвращаемых за один раз из удаленного источника данных |
Maximum records to fetch (Максимальная выборка записей за промежуток времени) | Ограничивает общее число записей, возвращаемых в представлении |
Use memo for fields >= (Использовать перевод символьных данных в Мемо-поля) | Задает условие преобразования длинных символьных полей в Memo-поля в выводе представления |
Records to batch update (Количество обновляемых одновременно записей) | Задает число записей, подлежащих обновлению в одной команде |
Область Connection defaults содержит параметры, используемые при создании именованных соединений (табл. 22.6).
Таблица 22.6. Параметры именованного соединения
Параметр | Описание |
Asynchronous execution (Асинхронное выполнение) | Задает признак асинхронной обработки |
Display warnings (Показывать предупреждения) | Задает режим выдачи предупреждающих сообщений |
Batch processing (Пакетная обработка) | Обеспечивает пакетную обработку. Если установить этот переключатель, Visual FoxPro не будет возвращать результаты вызова SQLEXEC ( ) до тех пор, пока не поступят все отдельные результирующие наборы |
Automatic transactions
(Автоматические транзакции)
Show login (Показывать окно приглашения) |
Определяет, каким образом соединение управляет ходом транзакций в удаленной таблице отображает диалоговое окно ввода регистрационного приглашения только в том случае, если в определении соединения или представления не задана информация регистрации |
Connection timeout (sec) (Ожидание соединения) | Задает интервал времени (в секундах), в течение которого допускается ожидание установки соединения с удаленным сервером. Если в течение этого времени соединение не устанавливается, Visual FoxPro генерирует ошибку |
Idle timeout (min) (Холостой режим) | Задает интервал времени (в минутах), в течение которого допускается простаивание, прежде чем соединение будет прекращено. Если в течение этого времени не был сделан запрос к серверу, Visual FoxPro разрывает соединение. Однако, если сделать запрос к серверу по истечении интервала тайм-аута для соединения, Visual FoxPro автоматически попытается его восстановить |
Query timeout (sec) (Ожидание запроса) | Задает интервал времени (в секундах), в течение которого допускается ожидание от сервера ответа на запрос. Если сервер тратит на обра. ботку больше заданного числа секунд, Visual FoxPro генерирует ошибку |
Wait time (ms) (Время ожидания завершения запроса) | Задает интервал времени (в миллисекундах) между проверками на завершение запроса |
Создание удаленного представления данных
После того как был определен источник данных или именованное соединение, можно создать удаленное представление. Для этого выполните одно из следующих действий:
Рассмотрим каждый из этих вариантов создания удаленного представления данных на примерах использования электронной таблицы Microsoft Excel и базы данных Microsoft SQL Server.
Использование мастера удаленных представлений
Мастер удаленных представлений создает представления с использованием удаленных данных (ODBC). Предлагая ответить на ряд простых вопросов, мастер помогает вам выполнить процедуру в несколько этапов; при этом вы должны задать базы данных, таблицы и поля, которые хотите использовать в своем представлении. Перед этим вы должны создать базу данных, в которой будет сохранено представление, а также определить источник данных или соединение.
Для запуска мастера удаленных представлений в меню Tools (Сервис) выберите команду Wizards (Мастера), а затем опцию Query (Запрос), потом в открывшемся диалоговом окне Wizard Selection (Выбор мастера) выберите значение Remote View Wizard (Мастер удаленного представления) (рис. 22.9).
Рис. 22.9. Выбор мастера удаленных представлений
На первом шаге вы выбираете источник данных из списка имеющихся источников данных или созданных вами именованных соединений (рис. 22.10).
Если удаленный источник данных требует идентификации пользователя, то на экране открывается диалоговое окно ввода имени пользователя и пароля (рис. 22.11).
Введите имя пользователя и пароль входа в базу данных. После этого откроется диалоговое окно выбора полей (рис. 22.12), помещаемых в создаваемое представление. Вы можете выбирать поля из нескольких таблиц или представлений базы данных, с которой вы соединились. Вначале выберите одну таблицу и перенесите поля выбранной таблицы в список Selected Fields (Выбранные поля), а затем выберите поля из другой таблицы или другого представления.
Рис. 22.10. Выбор источника данных
Рис. 22.11. Ввод имени пользователя и пароля
Рис. 22.12. Выбор полей удаленного представления
Если вы выберете более одной таблицы, вам необходимо определить отношения между таблицами (рис. 22.13). Для этого выберите нужные поля из приведенных списков и нажмите кнопку Add (Добавить).
Рис. 22.13. Определение отношения между таблицами
Рис. 22.14. Отображение списка удаленных представлений
На следующих двух шагах создания удаленного представления укажите порядок сортировки информации и фильтр для ограничения выбираемых данных. На последнем шаге укажите режим завершения процесса создания и введите имя создаваемого удаленного представления. Вы можете просто сохранить его, открыть для просмотра или открыть в конструкторе представлений. После создания удаленного представления его имя появится в разделе Remote Views (Удаленные представления) (рис. 22.14). После того как удаленное представление сохранено, его можно открыть и модифицировать в конструкторе представлений, как любое другое представление.
Для просмотра данных созданного удаленного представления выберите его из раздела Remote Views (Удаленные представления) и нажмите кнопку Browse (Обзор). На рис. 22.15 вы видите данные из созданного удаленного представления.
Рис. 22.15. Просмотр данных удаленного представления
Замечание
Если удаленный источник данных требует идентификации пользователя, то при открытии удаленного представления данных на экране открывается диалоговое окно ввода имени пользователя и пароля.
Использование конструктора представлений
Для создания удаленного представления с помощью конструктора представлений в диспетчере проектов из списка Databases (Базы данных) выберите раздел Remote Views (Удаленные представления), а затем нажмите кнопку New (Новый). На экране появится диалоговое окно выбора источника данных Select Connection or Data Source (Выбрать соединение или источник данных) (рис. 22.16).
Рис. 22.16. Диалоговое окно Select Connection or Data Source
Выберите источник данных или соединение, введите идентификатор и пароль доступа к базе данных. Далее, как и при создании локального представления данных, выберите используемые в представлении данных таблицы и поля выбранных таблиц (рис. 22.17).
При создании удаленных представлений данных необходимо обратить внимание на вкладку Update Criteria (Критерии обновления), в которой задаются условия обновления представлений.
На этой вкладке из списка Table (Таблица) выбирается таблица, для которой определяются установки вкладки Update Criteria (Критерии обновления). Флажок Send SQL updates (Отправить SQL-обновление) указывает, должны ли данные в действительности обновляться на диске.
Область SQL WHERE clause includes (Включение в запрос операторов предложения WHERE) содержит опции, позволяющие задать способ формирования предложения WHERE (табл. 22.7).
Рис. 22.17. Выбор полей представления данных
Таблица 22.7. Опции области SQL WHERE clause includes
Опция | Назначение |
Key fields only (Только ключевые поля) | Указывает, что предложение WHERE, используемое для обновления удаленных таблиц, включает только поля, входящие в список Field name (Имя поля) |
Key and updateable fields (Ключевые и доступные для изменения поля) | Указывает, что предложение WHERE, используемое для обновления удаленных таблиц, включает поля, входящие в список Field name (Имя поля), а также все обновляемые поля |
Key and modified fields (Ключевые и модифицированные поля) | Указывает, что предложение WHERE, используемое для обновления удаленных таблиц, включает поля, входящие в список Field name (Имя поля), и все остальные изменившиеся поля |
Key and timestamp (Ключевые поля и отметки времени) | Указывает, что предложение WHERE, используемое для обновления удаленных таблиц, включает первичные поля, входящие в список Field name (Имя поля), а также сравнение по отметкам времени |
В области Update using (Строка обновления) задается способ обновления полей на сервере базы данных (табл. 22.8).
Таблица 22.8. Опции области Update using
Опция | Назначение |
SQL DELETE then INSERT | Указывает, что сначала исходная запись таблицы базы данных будет удалена, а затем будет добавлена новая запись |
SQL UPDATE | Указывает, что запись таблицы базы данных будет модифицироваться |
Использование команды CREATE SQL VIEW
Для создания удаленных представлений данных вы можете использовать команду CREATE SQL VIEW, синтаксис которой приведен ниже:
CREATE SQL VIEW [имяПредставления] [REMOTE]
[CONNECTION имяСоединения
|CONNECTION имяИсточникаДанных]
Для создания удаленного представления данных необходимо указать признак удаленного представления с помощью ключевого слова REMOTE. Имя удаленного соединения или источника данных задается с помощью параметра CONNECTION.
Вы также можете задать определение представления с помощью SQL выражения, которым может быть любой допустимый оператор SQL SELECT, который не следует заключать в кавычки.
Например, чтобы создать удаленное представление данных для таблицы Goods, расположенной в базе данных Microsoft SQL Server и для которой определено соединение SQLServer, вы можете использовать следующие команды:
OPEN DATABASE SALES
CREATE SQL VIEW SQLServerGoods
CONNECTION SQLServer
AS SELECT * FROM GOODS
Особенности использования удаленных представлений данных для электронных таблиц Microsoft Excel
При использовании ODBC-драйвера Microsoft Excel для создания удаленного представления данных создается таблица Visual FoxPro или курсор. Эта таблица содержит выбранные данные из электронной таблицы Microsoft Excel. Однако, если ячейка таблицы содержит текст, в таблице Visual FoxPro он отображается в виде Memo-поля.
Это связано с тем, что ODBC-драйвер передает текстовые данные в виде строки длиной 255 символов. Так как Visual FoxPro не может отображать в текстовом поле более 254 символов, любые текстовые данные помещаются в Memo-поле. Приемлемым решением этой проблемы является создание новых текстовых полей и копирование в них информации из Memo-полей командой, аналогичной следующей:
REPLACE ALL sqlchar WITH TRIM(sqlntemo)
Замечание
При обновлении данных в многоуровневом представлении изменения отражаются в том представлении, на котором основано представление верхнего уровня. Если нужно обновить базовые таблицы многоуровневого представления, то необходимо применить команду TABLEUPDATE для каждого представления многоуровневой структуры.
Замечание
Visual FoxPro автоматически выполняет команду TABLEUPDATE при закрытии представления. При этом представления верхнего уровня закрываются первыми, поэтому вам придется обновлять представления с каждого верхнего уровня на каждый последующий нижний уровень. После закрытия последнего (самого нижнего уровня) представления базовые таблицы для данных представлений будут содержать полный список всех выполненных обновлений.
Совместно используемые соединения
При создании удаленных представлений вы можете воспользоваться совместно используемыми соединениями. В этом случае одно активное соединение используется как информационный канал для нескольких удаленных представлений.
При совместном использовании активного соединения:
Для определения разделяемого соединения воспользуйтесь любым из следующих способов:
Комбинирование в представлении локальных и удаленных данных
Актуальной задачей при разработке приложений, использующих удаленные данные, является комбинирование в представлении локальных и удаленных данных. В Visual FoxPro данная задача решается достаточно просто. Прежде всего, вы должны создать удаленные представления для данных, которые будут использоваться совместно с локальными.
Затем в диспетчере проектов выберите раздел Local Views (Локальные представления) и нажмите кнопку New (Новый), чтобы открыть конструктор представлений. Добавьте в новое представление любую комбинацию таблиц, локальных и удаленных представлений. Например, вы можете объединить в одном представлении данные из локальной таблицы Ordsaied и удаленного представления данных Microsoft SQL, содержащего список товаров.
Для создания комбинированного представления вы можете использовать также команду CREATE SQL VIEW, Например, чтобы создать локальное представление, комбинирующее информацию из локальной таблицы ordsaiem и удаленной таблицы customer (расположенной на сервере базы данных SQL Server), используйте следующий код:
OPEN DATABASE SALES
CREATE SQL VIEW localORDSALEM_remoteCUSTOMER;
AS SELECT * FROM SQLSERVERCUSTOMER, ORDSALEM
WHERE SQLSERVERCUSTOMER.iCdCustcmer =
ORDSALEM. iCdCustomer
Настройка представления с помощью словаря базы данных
Так как сведения о представлении хранятся в словаре базы данных, вы можете определить для него следующие свойства:
Для определения свойств полей представления данных в окне конструктора представления перейдите на вкладку Fields (Поля) и нажмите кнопку Properties (Свойства). Откроется диалоговое окно View Field Properties (Показать свойства поля).
Раскрывающийся список Field (Поле) в этом диалоговом окне содержит перечень всех полей представления. Для определения свойств поля необходимо сначала выбрать его из этого списка.
В области Field validation (Проверка достоверности данных поля) вы можете задать условия проверки достоверности данных на уровне поля при вводе данных (табл. 22.9).
Таблица 22.9. Поля области Field validation
Поле | Назначение |
Rule (Правило) | Задает правило проверки достоверности данных на уровне поля |
Message
(Сообщение) |
Задает сообщение об ошибке, которое будет выдаваться, если введенные данные не согласуются с правилом уровня поля |
Default value
(Значение по умолчанию) |
Задает для поля значение по умолчанию |
Для удаленных данных правило проверки достоверности данных на уровне поля задается средствами сервера базы данных. Вы можете задать локальное правило для:
Visual FoxPro не сравнивает локальное и удаленное правило проверки достоверности данных.
В области Display (Отобразить) вы можете задать условия проверки достоверности данных на уровне поля при отображении и вводе данных (табл. 22.10).
Таблица 22.10. Поля области Display
Поле | Назначение |
Format (Формат) | Задает формат отображения данных. Этот формат используется в окне Browse, отчетах и формах |
Input mask (Маска ввода) | Задает маску ввода данных |
Caption (Описание) | Задает описательное имя поля. Название отображается в качестве заголовка столбца при просмотре таблицы. Оно может включать до 128 символов |
Если вы планируете использовать представление данных в формах, то можете использовать опции области Map field type to classes (Установить соответствие между типами полей и классами) для задания типа объекта управления, создаваемого в форме при размещении данного поля.
Для удаленных представлений данных вы можете определить тип и размер поля представления данных. Используйте для этого опции области Data mapping (Соответствие типов данных).
Поле редактирования Comment (Комментарий) содержит описательный комментарий о данном поле. Все, что вы здесь введете, при выборе поля будет отображено в качестве описания в нижней части диспетчера проектов.
Замечание
Для определения свойств полей представления данных вы можете использовать функцию DBSETPROP () .