Пример клиент-серверного приложения – программа учета оргтехники. Visual FoxPro клиент + MS SQL Server 7.

Пример клиент-серверного приложения - программа учета оргтехники. Visual FoxPro клиент + MS SQL Server 7. Справочный файл, в связи с его размером (630Кб), доступен для опциональной загрузки отсюда: http://foxserver.nsvisual.com/download/other/computers_hlp.zip

Пример клиент-серверного приложения

От автора.

Уважаемые коллеги!

В последнее время на форуме прослеживается живой интерес к клиент-серверным приложениям, в частности к связке VFP-MSSQL, что подвигло меня данную публикацию.

Так же, моя профессиональная деятельность за последнее время несколько изменилась и я уже не являюсь VFP программером в полном смысле этого слова, так что эта публикация является отчасти и прощальным приветом всем вам, в особенности тем людям, с которыми я долгое время общался и которые несмотря ни на что любят и знают столь незаслуженно забытый нынче Visual Foxpro: Владимир Журавлев, Степанов Денис (HellRiser), Гринчишин Влад, Сергей Титов, Владимир Максимов, Кочкомбаев Тарас, Людмила, Жирнов Сергей, Насоновская Надя и многие другие.

Эти люди меня многому научили, за что им огромное спасибо.

Предупреждение.

Данный пример ни в коей мере не может служить эталоном по созданию CS приложений на VFP! Эту программу я написал, когда знакомился с MS SQL Server 7 (около 2х лет назад). Более того - это моя первая программа, использующая клиент-серверную технологию.

Ну и,самое главное, здесь используются только SPT функции, т.к. только они позволяют держать под абсолютным контролем удаленную БД, и нет ни слова о Remote View (я считаю, что не надо скрещивать два разных подхода к CS приложениям на VFP).

Тем не менее, приемы работы с данными, использованные здесь, достаточно показательны, и могут ответить на вопросы большинства интересующихся.

Программа не является учетной в понятии бухгалтерии, скорее, это обычная картотека для IT службы крупного предприятия.

Платформа.

Клиентская часть разрабатывалась и компилировалась под VFP6+SP5. Успешно работает под Win9xWin2000Pro(Eng & Rus)NT4 WS. Серверная часть - MS SQL Server 7+SP3 (так же испытывалась на MSDE1MSDE2000).

Недостатки и грабли.

Некоторые из перечисленных недостатков могли бы быть устранены перед публикацией, но я сознательно не стал этого делать, чтобы сохранить Ваше настороженное отношение к коду, а проще говоря - уберечь от бездумного копирования.

Именно после этого проекта я написал пакет классов для работы с удаленными данными (которые опубликованы здесь в "Решениях"), т.к. здесь в полной мере проявился недостаток процедурного программирования в отношении работы с функциями SQL pass trought (SPT), а именно:

  • Код обработки SPT функций "размыт" по тексту программы (в основном - сосредоточен в процедурах обмена данными)
  • Вследствие этого децентрализована обработка ошибок SPT функций, что так же не является хорошим тоном в программировании
  • Несколько некорректно обрабатываются транзакции. В принципе, это лечится установкой соответсвующего свойства соединения (SQLSETPROP(0, "Transaction", 2) && Режим ручной обработки транзакций), но здесь просто нет этой нужной строчки кода
  • Для возврата значений из хранимых процедур используется курсор, а не выходные (OUTPUT) параметры

Казалось бы - напиши универсальные процедуры и не "парься", однако, универсальность привела бы к неоправданной громоздкости этих самых процедур. Оптимальное решение - классы работы с SPT. К сожалению, к этому очевидному решению я пришел, когда уже была написана львиная доля кода и переписывать его уже не имело особого смысла - код работал. Так что учтите эти замечания, когда будете смотреть код.

Не смотря на это программа успешно эксплуатируется у нас в конторе и поныне. Говорят, что удобно.

Достоинства.

Кроме недостатков, программа обладает и достоинствами, причем немаловажными. Вот они:
  • Минимальный траффик, т.к. вся "грязная" работа выполняется сервером с помощью хранимых процедур (ХП), а клиенту перегоняется минимум необходимых данных
  • Использование ХП позволяет повысить степень защищенности данных на сервере, т.к. можно запретить непосредственный доступ пользователей к таблицам
  • Изменение структуры данных не приведет к изменению кода клиентской части, в случае, если не изменится интерфейс ХП
  • Подробная документация и интерактивная справка

Можно, конечно, напрячься и вычислить еще пару достоинств, но эти - основополагающие.

Сопроводительная документация.

К программе прилагается:

  • Createdb.sql - Скрипт генерации БД - после его выполнения Вы получите 100% работающую БД
  • Хранимые процедуры БД Computers .xls - Excel таблица с описанием ХП сервера
  • Computers_4.ER1 - ER модель базы данных (ErWin 4)
  • Readme.txt - описание программы, процедуры ее установки и настройки DSN (в файле справки это тоже есть, да еще с иллюстрациями)
  • Computers.hlp - файл справки
Справочный файл, в связи с его размером (630Кб), доступен для опциональной загрузки отсюда: http://foxserver.nsvisual.com/download/other/computers_hlp.zip

Как сгенерить БД.

Краткая инструкция по генерации БД (для успешной работы необходимо обладать правами DBcreator на MSSQL):

  1. Запустить Query Analyser
  2. В окне команд написать: CREATE DATABASE Computers
  3. Нажать F5
  4. Будет создана БД Computers
  5. Открыть скрипт генерации БД (Меню Open...)
  6. Сделать активной новую БД (выпадающий список БД)
  7. Нажать F5
  8. В результате должны быть созданы все объекты БД, и таблицы проинициализированы системными записями
Если будут проблемы - сообщите. Попробуем решить.

Если же все в порядке - создайте DSN и можно запускать программу. Обязательно прочтите Readme.txt !!!

Опять от автора.

Прошу не судить строго. Буду рад конструктивной критике, желательно прямо здесь, в разделе - чтобы другие посетители были в курсе.

Буду очень рад, если это все кому-нибудь поможет. С уважением, Орлов Дмитрий aka Jimmy.

Автор: Дмитрий Орлов

Автор публикации

не в сети 23 года

Jimmy

Комментарии: 0Публикации: 6Регистрация: 30-07-2001
Вложенные файлы
#
Название
Тип файла
Размер
1 285computers_sql .zip 316,98 КБ
Материалы по теме
Оставить комментарий
//////////////// ///////////////
Авторизация
*
*
Генерация пароля