СообЧа > База Знаний > Базы данных > FoxPro

Вопрос

Версия языка: 6.0 (SP5)

Можно ли сделать в таблице VFP5(6) поле-счетчик, как в Access (AutoNumber). Если можно, то каким образом.

Ответ

Нумеровать физические записи обычно мало смысла.
Но на всякий случай:

REPLACE num WITH RECNO() , это в .DBF.

Если речь идет об уникальном ключевом поле, то для генерации уникальных ID записи есть много функций.
Вот выдержка из конференции
http://www.foxclub.ru
*** Уникальный N записи на все времена для каждой записи ***
Ильдус 13.12.2002 16:28:09


Какие есть идеи? Уникальный N записи на все времена для каждой записи БД, например увеличиваем счетчик на 1, держим этот счетчик в промежуточной базе, блокируем ее запись на время использования . При работе в многопользовательском режиме, в режиме файл-сервер.


*** RE: Уникальный N записи на все времена для каждой ***
remi 13.12.2002 16:39:19


Делаем таблицу Global_ID из одного поля. Даем этому полю IDENTITY. Все остальные идентификаторы новых записей для всех остальных таблиц получаем через функцию. Эта функция вставляет в Global_ID запись и читает, что получилось. Раз в день/неделю/месяц удалем из Global_ID все записи, кроме одной/нескольких последних. Чтобы побыстрее вставка шла.


*** RE: Уникальный N записи на все времена для каждой ***
AlexK 13.12.2002 18:24:56


Формируем GUI на каждой станции плюс ID станции. Т.е. наш уникальный ключ — GUI+ID

. . .

Это стандартная функция:

Function NewID(tcAlias) Local lcAlias,
lnID,
lcOldReprocess,
lnOldArea lnOldArea = Select()
lcAlias = Upper(IIF(Parameters()<1,Alias(),tcAlias))
lcOldReprocess = Set('REPROCESS')
* Lock until user presses Esc SET REPROCESS TO AUTOMATIC
if !Used("IDS") USE newid!ids IN 0 endif Select ids
if Seek(lcAlias, "Ids", "table")
if Rlock() lnID = ids.nextid REPLACE
ids.nextid WITH ids.nextid + 1
Unlock endif
endif Select (lnOldArea)
SET REPROCESS TO lcOldReprocess
Return lnID


Вообще Fox это среда разработчика, а не пользователя, как Access. Поэтому лучше многое делать вручную, это дает полную власть над программой. Причем писать на Fox нужно примерно в 10 раз меньше, чем на C и Delhpi. Если будут еще вопросы, то наш лучший сайт по Фокс:
http://www.foxclub.ru Форум которого лучше любой книги для программистов, и его архив лучше иметь под рукой.

Еще советую внимательно изучить примеры самого Фокса — Solution.app
Тоже очень помогает :)

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация