Слухи и мифы о FoxPro

Слухи и мифы о FoxPro

Многим из нас приходилось слышать различные утверждения о Фоксе, мягко говоря, не соответствующие действительности. Здесь собрана коллекция наиболее часто встречающихся мифов, и приведены простые соображения по поводу каждого из них.

1. Microsoft собирается закрыть проект Visual FoxPro, т.к. он является конкурентом других продуктов компании.
Странно, но этот слух бродит с тех пор, как Microsoft купила права на FoxPro. А было это почти уже 10 лет назад. Что-то медлит Microsoft

2. Со времен FoxPro for Windows 2.5 в языке не было никаких принципиальных изменений, просто переставлялись номера версий.
Появились контейнеры баз данных, ООП, возможность создания COM и DCOM, работа с ADO, множество визуальных улучшений… Одно можно сказать определенно – поработав в любой более свежей версии, на старую возвращаться уже не хочется.

Удаление записей в таблице

Удаление записей в таблице

Таблицы FoxPro — это прямые наследники формата DBASE. В этом формате процесс удаления записей разбит на 2 этапа. Сначала записи помечаются как удаленные, но физически все еще сохраняются в таблице. А для их физического удаления необходимо дать специальную команду. Причем физическое удаление требует эксклюзивного (единоличного) доступа к таблице.

Под термином «удаление» в FoxPro понимается именно установка метки на удаление, а не физическое удаление записи в таблице. Т.е. команды DELETE, DELETE-SQL физически не удаляют записи; триггер DELETE срабатывает при установке метки на удаление; триггер INSERT срабатывает при снятии метки на удаление (ну, и при физическом создании новой записи)

Типы данных Точность расчета Numeric Currency Memo General Binary AutoIncrement

Типы данных Точность расчета Numeric Currency Memo General Binary AutoIncrement

Цель данного раздела — это не ознакомление со всеми существующими в FoxPro типами данных, а описание некоторых особенностей использования тех или иных типов данных. Понимание этих особенностей позволит упростить выбор типа данных при проектировании таблиц. А также уменьшить количество ошибок в программе.

Прежде всего, следует понимать, что существуют типы данных переменных памяти и типы данных полей таблиц. Это далеко не одно и то же. Например, если Вы используете в таблице поле типа Character, то количество символов в таком поле всегда ограничено некоторым числом не превышающем 254 символа. Но переменная памяти имеет значительно больший размер, ограниченный количеством символов 16,777,184

Индекс Типы (виды) индексов

Индекс Типы (виды) индексов

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

Триггер Особенности использования функций

Триггер Особенности использования функций

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

Триггер — это выражение, значение которого вычисляется при наступлении определенного события. Это выражение должно вернуть обязательно логическое значение .T. или .F.

Но все дело в том, что в качестве одного из аргументов этого выражения может стоять некоторая функция (или несколько функций). Вот эти-то функции, вызываемые из выражения триггера, также называют «триггер».

Как правило, когда речь идет о триггере, то подразумевают именно функцию — триггер, а не выражение — триггер.