Краткое описание Foxpro
01.01.2007
Cashey
Visual FoxPro последняя версия 8.0.
Производитель: Microsoft.
Домашняя страница: http://msdn.microsoft.com/vfoxpro/
После выпуска 7-ой версии Microsoft заявил о прекращении развития данного продукта, однако через год после этого была выпущена 8-ая версия.
Цена лицензионной 8-ой версии: полной версии по данным сайта производителя $649 US; для пользователей ранними версиями $349 US.
В Москве 7-ая версия стоит около $600 US с доставкой по Москве.
Ограничения VFoxPro 7.0
Для людей имеющих представление, что такое БД привожу некоторые ограничения для 7-го Фокса (это лучше любых хар-тик), выводы сами напросятся. Для остальных распишу все позже.
Ограничения работы с базами
| Параметр | Значение |
|---|---|
| Ограничения работы с базами | |
| Максимум записей в файл таблицы | 1 миллиард |
| Максимальный размер файла таблицы | 2 гигабайта |
| Максимум символов в записи (MEMO) | 65,500 |
| Максимум символов в поле таблицы | 254 |
| Максимальный размер числовых (и с плавающей точкой) полей | 20 |
| Максимум полей записей | 255 |
| Максимум таблиц открывается в одно время (ограничено памятью и доступными дескрипторами файла.) |
255 |
| Максимум байтов в индексном ключе в некомпактном индексе | 100 |
| Максимум байтов в индексную ключе в компактном индексе | 240 |
| Максимум открытых индексных файлов в таблице | неограниченно |
| Максимум открытых индексов во всех базах | неограниченно |
| Максимум отношений | неограниченно |
| Максимальные поля, которые могут быть выбраны SQL SELECT | 255 |
| Ограничения языка | |
| Минимальное значение целого числа | -2,147,483,647 |
| Максимальное значение целого числа | 2,147,483,647 |
| Максимальная точность в числовых вычислениях | до 9007199254740992 (2^53) |
| Количество переменных по умолчанию | 1,024 |
| Максимум переменных | 65,000 |
| Максимум массивов | 65,000 |
| Максимум элементов в массив | 65,000 |
| Максимум вложений DO | 128 |
| Максимум вложенных структурированных команд программирования | 384 |
| Максимум транзакций | 5 |
| Максимальная длина символьной переменой | 255 |
| Максимум открытых окон | неограниченно |
| Максимум открытых окон Browse | 255 |
| Максимум символов в макроподстановке | 8,192 |
Общие сведения.
FoxPro работает с таблицами формата *.dbf.
Visual FoxPro 7.0 снабжено мощным набором мастеров, которые позволяют новичку достаточно быстро создать мощное работоспособное приложение, однако не могу рекомендовать использовать эту возможность людям, желающим, создать рациональное приложение, т.к. мастера используют навороченные библиотеки и не рационально используют память. Программы созданные с помощью мастеров очень грамозки.
FoxPro сильно интегрирован с SQL, позволяет вставлять блоки SQL-комманд непосредственно в тело основного кода и использовать в SQL-запросах собственные (фоксовские) функции. Что позволяет быстро и эффективно обробатывать большие базы, даже если таблицы не индексированы. Кроме того, FoxPro облодает собственными, очень мощными, и главное, удобными средствами работы с БД.
Наиболее крупные БД созданные на FoxPro (из мне известных):
- База данных ГУВД г. Москвы.
- База данных МГТС.
- База данных Пенсионного фонда России.
- Это основной язык написания программ Главного Научно-Вычислительного Центра (ГНИВЦ) Министерства РФ по налогам и сборам
К достоинствам VFoxPro можно также отнести: - возможность создания составного индекса, работа с курсорами (виртуальными таблицами, не отличающимися от обычных, но исчезающих после завершения сеанса работа, т.е. не остаются ни в памяти ни на диске), - возможность экспортировать/импортировать данные в/из XML, - возможность работы с другими базами по средствам драйвера ODBC, - высокая надежность при работе с БД (в т.ч. и с индексами)
VFoxPro полностью соответствует объявленным возможностям.
На VFoxPro можно создавать и клиент-серверные БД, однако в этой области VFoxPro значительно уступает большинству из известных серверов БД.
Резюме VFoxPro мощнейшее средство для работы с локальными базами данных, значительно превосходящее, по эффективности, все остальные системы БД.
Недостатки VFoxPro
Все вышесказанное относится к VFoxPro как средству разработки баз данных, однако на нем не представляется интересным создавать приложения не связанные с БД, хотя сам FoxPro является языком самодостаточным. Это связано с тем, что с VFoxPro поставляется очень убогий класс для работы с визуальными компонентами, а исходник этого класса закрыт. Поэтому разработчик ограничен в возможностях "украшать" свою программу. Следующее, в FoxPro не происходит объявления типа переменных, это лишает возможности контролировать правильность обращения к переменной и, главное, под переменную отводится максимальное кол-во памяти, поэтому программы написанные на VFoxPro очень ресурсоемкие. Большой недостаток VFoxPro - это крайне слабый конструктор отчетов, крайне осложняющий разработку приложения. Для работы программы, созданной на VFoxPro, необходимы библиотеки поддержки, что увеличивает размер поставляемой программы еще, примерно, на 4 Mb. Есть еще более мелкие недостатки.
Резюме
Основными недостатками VFoxPro являются: - большие требования к памяти, созданными на VFoxPro программами - слабые возможности по работе с визуальными компонентами.
Рекомендации для выбора
Могу порекомендовать выбрать VFoxPro, тем кому требуется ввести и обрабатывать большие базы данных на локальных компьютерах или в небольших сетях. Т.к. VFoxPro позволяет создавать запросы, практически любой сложности.
Разумеется не рекомендую использовать этот язык для составления больших серверных баз и для написания программ не связанных с ведением баз данных.
Обращаю внимание еще раз: FoxPro - это не только средство работы с базами данных, но это еще и язык программирования высокого уровня.
Типы данных Visual FoxPro
| Тип данных | Описание | Размер | Диапазон |
|---|---|---|---|
| Character | Произвольный текст. | 1 байт на символ; до 254 байтов | Любые символы |
| Currency | Денежная сумма. | 8 байтов | от -922337203685477.5808 до 922337203685477.5807 |
| Date | Хронологическая дата, состоящая из месяца, года и числа. | 8 байтов | от 01/01/100 до 12/31/9999 |
| DateTime | Хронологическая дата, состоящая из месяца, года, числа и времени. | 8 байтов | от 01/01/100 до 12/31/9999, плюс от 00:00:00 утра до 11:59:59 вечера |
| Logical | Логическое значение истинности. | 1 байт | Истина (.T.) или Ложь (.F.) |
| Numeric | Целое или с дробной частью число. | 8 байтов в памяти; | от 1 до 20 байтов; в таблице от -.9999999999E+19 до .9999999999E+20 |
| Variant | размер и диапазон принимает в соответствии с веденными данными |
Типы данных полей таблиц Visual FoxPro
| Тип поля | Описание | Размер | Диапазон |
|---|---|---|---|
| Double | Число с плавающей запятой двойной точности. | 8 байтов | от +/-4.94065645841247E-324 до +/-1.79769313486232E308 |
| Float | Такое же, как Numeric. | 8 байтов в памяти; | от 1 до 20 байтов; в таблице от -.9999999999E+19 до .9999999999E+20 |
| General | Ссылка на OLE-объект. | 4 байта в таблице. | Ограничен только доступной памятью |
| Integer | Целочисленные значения | 4 байта | от -2147483647 до 2147483646 |
| Memo | Ссылка на блок данных | 4 байта в таблице | Ограничен только доступной памятью |
| Character | (Двоичный) Любые символьные данные, которые нужно сопровождать без изменения кодовых страниц | 1 байт на символ, до 254 байтов | Любые символы |
| Memo | (Двоичный) Любые memo-поля, которые нужно сопровождать без изменения кодовых страниц | 4 байта в таблице | Ограничен только доступной памятью |
Вот пример работы с ADO
Зависимость от сервера не велика
conado=CREATEOBJECT(`adodb.connection`)
conado
TYPE(`conado`)
conado.open(`ora_ado`)
rd=CREATEOBJECT(`adodb.recordset`)
rd.Open(`select * from prof`,conado)
TYPE(`rd.Fields`)
rd.Fields(`pro`).Value
rd.MoveNext()
rd.Fields(1).Type
Пример работы через ODBC
con=sqlconnect('oradsn','scott','tiger')
if con>0 and sqlexec(con,'select * from scott.dept')>0
copy to dept
endif
если необходимо сделать параметризованный запрос:
m.depno=10
con=sqlconnect('oradsn','scott','tiger')
if con>0 and sqlexec(con,'select * from scott.dept where depno=? m.depno')>0
copy to dept
endif
Системные требования (для Visual FoxPro 7)
- Процессор Pentium 133 или выше
- Минимальный объем оперативной памяти - 64Mb, рекомендуется не менее 128Mb
- Жесткий диск не менее 115Mb, до 200Mb, при полной установке.
- Операционная система MS Windows98, ME, NT4, 2000, XP.
- Видеорежим - SVGA.
- Кроме того, необходимо, чтобы на компьютере были установленны Internet Explorer 5.5 и Service Pack 1 (для Win2000).
- Поддержка триггеров - да.
- Поддержка хранимых процедур - да.
- Поддержка транзакций - да.
- Защита данных, шифрование - нет, шифрование данных осуществляется перед занесением данных в таблицу.
- Возможность удалённого и Web администрирования - нет
- Возможность импорта данных из
- MS Excell 2.0 - 97
- Lotus 1-3
- Paradox (до версии 4.0)
- Symphony
- FrameWork II
- MultiPlan 4.01
- RapidFile
- Возможность экспорта данных в
- FoxBase+ (DBF)
- dBase IV (DBF)
- текстовый файл (txt)
- Lotus 1-2-3 1-A (WK1, WRK)
- Symphony (WR1, WRK)
- MultiPlan 4.01 (MOD)
- System Data Format (SDF)
- некоторые другие, мало кому известные.
Наличие утилит для автоматизации операций для работы в командной строке, наличие собственных утилит для отладки запросов (выполнение SQL, построение плана выполнения кверей, профайлер и т.п.), утилиты для слежения за производительностью сервера. - Сам FoxPro

