Меню

Foxpro закрыть все таблицы



Foxpro закрыть все таблицы

Закрывают файлы различных типов.

Параметры:
ALL
Закрывает все открытые базы данных, таблицы и индексы во всех рабочих областях и выбирает рабочую область 1. Команда CLOSE ALL также закрывает все файлы, открытые с помощью функций файлов низкого уровня FCREATE( ) и FOPEN( ).
По команде CLOSE ALL также закрываются:

  • Конструктор форм
  • Диспетчер проектов
  • Конструктор этикеток
  • Конструктор отчетов
  • Конструктор запросов

CLOSE ALL не закрывает:

  • Окно команд
  • Окно отладки
  • Справку
  • Окно трассировки

CLOSE ALTERNATE
Закрывает альтернативный файл, открытый с помощью команды SET ALTERNATE.
CLOSE DATABASES [ALL]
Закрывает текущую базу данных и ее таблицы. Если текущая база данных не определена, закрываются все открытые свободные таблицы, индексы и файлы формата во всех рабочих областях и выбирается рабочая область 1.
ALL
Задает закрытие следующих элементов:
Всех открытых баз данных и их таблиц.
Всех открытых свободных таблиц.
Всех индексов и файлов формата во всех рабочих областях.
Выбирается рабочая область 1.
CLOSE FORMAT
Закрывает файл формата в текущей рабочей области, открытый с помощью команды SET FORMAT.
CLOSE INDEXES
Закрывает все открытые файлы индексов (как просые индексы .IDX, так и независимые составные индексы .CDX) в текущей рабочей области. Структурный составной индекс (файл .CDX, автоматически открываемый вместе с таблицей) не закрывается. CLOSE PROCEDURE
Закрывает файл процедуры, открытый по команде SET PROCEDURE.
CLOSE TABLES [ALL]
Закрывает все таблицы во всех открытых базах данных, оставляя сами базы данных открытыми. Если открытых баз данных нет, команда CLOSE TABLES закрывает все свободные таблицы во всех рабочих областях.
CLOSE TABLES нельзя выдавать во время выполнения транзакции; Visual FoxPro сгенерирует сообщение об ошибке.
ALL
Закрывает все таблицы (включая свободные) во всех рабочих областях. Все базы данных остаются открытыми.

Источник

Foxpro закрыть все таблицы

  • Главная
  • Ссылки
  • Справка
  • Примеры
  • О сайте

Объектно-ориентированный и процедурный язык программирования систем управления реляционными базами данных, разработанный корпорацией Microsoft.

Новости

Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных. Двадцатиление FoxPro! Microsoft принимает поздравления. Visual FoxPro Toolkit for .NET — более 225 функций VFP 7.0, для языков .NET (подробнее)

Закрытие таблицы в рабочей области

Закрыть таблицу в рабочей области можно с помощью окна View или с помощью кома д.

Как закрыть таблицу в рабочей области

В окне View выберите псевдоним таблицы, затем выберите Close.

Введите команду USE без имени таблицы.

Используйте предложение IN с указанием рабочей области в команде USE.

Новое на сайте

Обновлен портфель программиста

Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip — Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)

Новые примеры программ

Установка библиотек, Игровая программа «Охота на лис», Установка библиотек «Охота на лис», plastic -«Платежки», Библиотеки (на FPD26), platan -«Платежки» (на Clipper 5.2)

Источник

Открытие и закрытие таблицы в Visual FoxPro

USE [[DatabaseName!]Table | SQLViewName | ?]
[IN nWorkArea | cTableAlias] [ONLINE] [ADMIN] [AGAIN]
[NOREQUERY [nDataSessionNumber]] [NODATA]
[INDEX IndexFileList | ?
[ORDER [nIndexNumber | IDXFileName
| [TAG] TagName [OF CDXFileName]
[ASCENDING | DESCENDING]]]] [ALIAS cTableAlias]
[EXCLUSIVE] [SHARED] [NOUPDATE]
[CONNSTRING cConnectionString | (m.nStatementHandle)]

открывает (закрывает) таблицу или SQL-вид, а также индексные файлы таблицы.

Опции и параметры:

TableName – имя открываемой таблицы. Может содержать путь; расширение необязательно.

Если открывается таблица нетекущей открытой базы данных, то имени таблицы предшествует DatabaseName!, где DatabaseName – это имя базы данных.

Если имя таблицы TableName и/или базы данных содержит пробелы то имя [DatabaseName!]Table заключается в качычки.

Замечание . VFP не распознает правильно путь, если в его имени есть восклицательный знак.

SQLViewName – имя открываемого SQL-вида, созданного интерактивно или командой CREATE SQL VIEW. Вид может быть и автономным.

? – открывает Use-диалог выбора таблицы.

IN nWorkArea – рабочая область, в которой таблица открывается. Однако команда

USE IN nWorkArea

закрывает таблицу, открытую в рабочей области nWorkArea.

Команда USE с опцией IN 0 откроет таблицу в самой низкой свободной области, например:

close tables all

open database d:\HomeLibrary\HomeLibrary.dbc

use Authors in 0 && Открываем таблицу в области 1

use Books in 0 && Открываем таблицу в области 2

use in 1 && Закрываем таблицу Authors

IN cTableAlias – открывает таблицу в области, в которой используется псевдоним cTableAlias, например:

Читайте также:  Joomla как добавить таблицу

use Authors in 0 && Открываем таблицу в области 1

use Books in Authors && Закрываем Authors и открываем Books

Если параметр nWorkArea или cTableAlias опущен, то таблица открывается в текущей рабочей области. Команда USE, выполненная без других опций, закрывает таблицу, открытую в текущей рабочей области. Например:

&& Выбираем область, использующую псевдоним Authors

use && Закрываем Authors

ONLINE – открывает автономный вид, созданный CREATEOFFLINE( ). Имя открываемого автономного вида указывается параметром SQLViewName. После открытия вида данные на сервере могут быть обновлены функцией TABLEUPDATE( ).

Автономные виды должны открываться в режиме монопольного доступа. Это обеспечивается либо использованием в USE опции EXCLUSIVE, либо в результате установки SET EXCLUSIVE в ON.

Автономный вид нельзя открыть или закрыть во время транзакции.

ADMIN – открывает автономный вид, созданный CREATEOFFLINE( ), но не обновляет данные на сервере (не переносит туда изменений, выполненных в автономном виде).

Опция ADMIN, как и опция ONLINE, не может быть использована внутри транзакции.

AGAIN – открывает повторно таблицу в заданной опцией IN или текущей рабочей области.

При повторном открытии таблицы в другой рабочей области берутся все атрибуты области, в которой таблица открыта первый раз. Например, если таблица первоначально открыта для чтения и в монопольном режиме, то и в другой обрасти она будет доступна только для чтения и монопольно. Индексные файлы, открытые с первичной таблицей, доступны и в области, в которой таблица открывается повторно (если только при выполнении USE AGAIN не открываются индексы). При повторном открытии SET ORDER устанавливается в 0.

Если USE AGAIN открываются новые дополнительные индексы таблицы, то в первичной области SET ORDER устанавливается в 0.

Если таблица открывается повторно в другой рабочей без употребления опции AGAIN, то в первичной рабочей области таблица будет закрыта.

Таблица, открываемая повторно, получает по умолчанию псевдоним по имени рабочей области, например:

use Books again in 200 && Псевдоним таблицы – W200

В VFP повторное открытие таблицы не приводит к выделению нового идентификатора файла.

NOREQUERY [nDataSessionNumber] – данные удаленного SQL-вида не будут загружаться повторно. Опция применяется только с SQL-видами и, как правило, в команде USE с опцией AGAIN. Цель ее употребления – повышение быстродействия за счет отказа от повторной загрузки данных (она уже выполнена при первом вызове команды USE).

Параметр nDataSessionNumber задает номер сессии данных; если он опущен то берется текущая сессия.

NODATA – загружается только структура SQL-вида. Применяется для быстрого определения структуры SQL-вида. Скорость обеспечивается отказом от загрузки данных.

INDEX IndexFileList – задает список открываемых вместе с таблицей индексных IDX- и независимых составных CDX-файлов. Расширения должны присутствовать, если открываемые IDX- и CDX-файлы имеют одинаковое имя.

Порядок нумерации индексов IDX-файлов и тегов CDX-файлов см. в описании команды SET ORDER. Индекс или тег, имеющий номер 1, если в команде USE опущена опция ORDER и имеется опция INDEX, становится управляющим.

INDEX ? – открывает Open-диалог выбора IDX- или CDX-файла.

ORDER nIndexNumber – задает позицию, по которой выбирается управляющий индекс или тег. Выбранный индекс может отличаться от установленного опцией INDEX.

Порядок выбора управляющего индекса или тега см. в описании команды SET ORDER.

Если nIndexNumber = 0, то управляющий индекс (тег) не устанавливается (записи таблицы отображаются и обрабатываются в соответствии с физическом порядком их следования), но все индексные файлы остаются открытыми. Это обеспечивает их обновление при изменениях в таблице. Опция ORDER без nIndexNumber равнозначна ORDER 0.

ORDER IDXFileName – задает управляющий индексный IDX-файл. Параметр IDXFileName может включать путь.

ORDER [TAG] TagName [OF CDXFileName] – устанавливает управляющим тег TagName структурного или независимого CDX-файла. Если тег TagName имеется в нескольких открытых индексных файлах таблицы, то обязательно наличие опции OF CDXFileName.

ASCENDING (DESCENDING) – открывает таблицу, располагая ключи управляющего индекса по возрастанию (убыванию). Сам же способ формирования индексного файла, заданный при его создании, не меняется. Опция не может быть использована, если не задан управляющий индекс.

Пример:

use Authors order AuthorId descending

ALIAS cTableAlias – создает псевдоним cTableAlias таблицы. Он используется при обращении к полям таблицы в функциях и командах, требующих его присутствия. Может содержать до 254 символов включительно.

Читайте также:  Гугл таблицы дни рождения

Если опция ALIAS опущена, то псевдоним совпадает с именем таблицы.

Если опция ALIAS опущена и имя открываемой таблицы вступает в конфликт с существующим псевдонимом, то для нее берется псевдоним по умолчанию (символьное представление номера рабочей области), например:

open database d:\HomeLibrary\HomeLibrary.dbc

use Authors alias Books

use Books in 3 && Получит псевдоним «C»

Если употребляется уже существующий псевдоним, то генерируется ошибка, например:

use Authors alias Tbl

use Books in 0 alias Tbl && Генерируется ошибка

Замечание . Для указания имени поля Field в командах и функциях, принимающих это имя в качестве параметра, может быть использован один из следующих способов:

EXCLUSIVE – открывает таблицу в режиме монопольного доступа.

SHARED – открывает таблицу в режиме разделяемого доступа. Опция имеет приоритет над установкой SET EXCLUSIVE в ON.

NOUPDATE – предотвращает изменения таблицы и ее структуры.

CONNSTRING cConnectionString | (m.nStatementHandle) – строка SQL-соединения (cConnectionString) с ODBC-источником данных или переменная памяти (m.nStatementHandle), хранящая идентификатор существующего SQL-соединения.

При включении cConnectionString VFP передает строку соединения удаленному, заданному параметром SQLViewName виду, который ее использует для соединения с указанным в строке источником данных. Если cConnectionString – это строка нулевой длины, то появляется диалог выбора источника данных.

Если cConnectionString содержит не все необходимые для соединения данные, то откроется Login-диалог.

Если опция CONNSTRING опущена, то используется установленное по умолчанию соединение.

Параметр m.nStatementHandle употребляется с разделяемыми соединениями.

open database d:\HomeLibrary\HomeLibrary.dbc

&& Используем строку соединения

use BookSale in 0 connstring «dsn=BookSaleDataBase;uid=’nick’;pwd=’name'»

&& Используем идентификатор SQL-соединения

nStHandle = SQLStringConnect(‘dsn=BookSaleDataBase;uid= ;pwd= ‘)

use BookSale in 0 connstring nStHandle again

activate window View

ISREADONLY([nWorkArea | cTableAlias])

возвращает .T., если текущая или заданная параметром nWorkArea | cTableAlias таблица открыта только для чтения, или .F. – в противном случае. Если осуществлен вызов ISREADONLY(0), то функция вернет результат для текущей базы данных. Если нет текущей таблицы или базы данных или если указан неиспользуемый псевдоним, то функция сгенерирует ошибку.

Программно таблица открывается для чтения при наличии опции NOUPDATE в команде USE. Также DBF-файлу таблицы в окне задания его свойств можно установить атрибут MS-DOS «Только чтение».

Чтобы убедиться в наличии текущей базы данных, можно использовать условие

Курсор, созданный командой SELECT – SQL, всегда имеет статус «Только чтение».

Пример:

open database d:\HomeLibrary\HomeLibrary.dbc

use Authors noUpdate

? IsReadOnly(‘Authors’) && Напечатает: .T.

? IsReadOnly(0) && Напечатает: . F.

ISEXCLUSIVE([nWorkArea | cTableAlias | cDatabaseName [, nType]])

возвращает.T., если таблица или база данных cDatabaseName открыта в режиме монопольного доступа, или .F. – в противном случае.

nType – равен 1 (по умолчанию), если результат возвращается для таблицы, или 2, если – для базы данных.

CLOSE TABLES [ALL]

закрывает все таблицы текущей базы данных. Если таковой не имеется, то закрываются все свободные таблицы.

Опция ALL закрывает все таблицы всех баз данных и все свободные таблицы. Все базы данных остаются открытыми.

Если команда выполнена во время транзакции, то возникнет ошибка.

Таблица в текущей или указанной рабочей области закрывается командой USE.

CLOSE ALL

выбирает рабочую область 1 и закрывает следующие файлы:

базы данных, таблицы и индексы текущей и всех других сессий данных;

файлы низкого уровня, созданные FCREATE( ) и FOPEN( );

проектировщики формы, этикетки, отчета и запроса и диспетчер проекта.

Команда не закрывает командное, отладочное и трассировочное окна. Также она не закрывает файл, открытый SET PRINTER, и Help.

SET TABLEPROMPT ON | OFF

активизирует (ON) или отключает (OFF) режим появления диалога Open в командах, позволяющих пользователю выбирать таблицу, если она не открыта.

Если задана опция OFF и таблица не открыта, то возникнет ошибка исполнения.

Установка SET TABLEPROMPT действует на следующие команды: BROWSE, DELETE – SQL, GO | GOTO, INDEX, INSERT – SQL, PACK, REPLACE, REPORT FORM, SELECT – SQL, SET FILTER, SKIP, UPDATE – SQL и ZAP.

Источник

Foxpro закрыть все таблицы

Это не опечатка, надо всегда использовать именно индекс 1, а не значение счетчика m.lnI, поскольку при закрытии формы общее количество форм в коллекции Forms уменьшается.

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

Читайте также:  Уральские горы преобладающие высоты таблица

Ну, например, если пользователь редактировал данные но еще их не сохранил следует ли его переспросить? А если он попросит подождать?

Кроме того, такой код не годиться для FormSet.

1) Если уж явно вызывать QueryUnload(), то его нужно и писать специальным образом — т.к. штатно там совсем не нужно RETURN .T./.F. делать — ибо фоксу на это глубоко наплевать — там NODEFAULT рулит.
2) Цикл FOR EACH с _SCREEN.Forms обычно не проходит — т.к. по сути он трансформируется в FOR ln1 = 1 TO _SCREEN.FormCount — а это некорректно — если в ходе выполнения цикла формы будут закрываться — нумерация собъётся. Нужно либо цикл FOR ln1 = _SCREEN.FormCount TO 1 STEP -1 крутить, либо закрывать всегда первую форму с циклом DO WHILE. Ну и конечно проверка на TYPE(«ссылка_на_форму_полученная_любым_способом.Name») = «C» никогда не помешает 🙂

Posted via ActualForum NNTP Server 1.2

Как я и говорил — остаются 2 «лишние» формы. Хорошо ещё что он не валится по ошибке 🙂

2 leaf
Release() в QueryUnload это конечно совершенно неправильно и безрассудно, тем более что в QueryUnload требуется обычно «предотвратить закрытие» а не продублировать его. Кроме того NODEFAULT это не функция — её без скобок пишут.

Posted via ActualForum NNTP Server 1.2

Как я и говорил — остаются 2 «лишние» формы. Хорошо ещё что он не валится по ошибке 🙂

2 leaf
Release() в QueryUnload это конечно совершенно неправильно и безрассудно, тем более что в QueryUnload требуется обычно «предотвратить закрытие» а не продублировать его. Кроме того NODEFAULT это не функция — её без скобок пишут.

А зачем менять WindowType. IMHO это не нужно — он вообще-то при спрятанной форме не имеет ровно никакого значения.

2 leaf
1) Есть понятие оконного пользовательского интерфейса, вот уже который год насаждаемого «маленькой но мягкой» корпорацией — и твои потуги «переучить» пользователей IMHO скорее тебе аукнуться, нежели им 🙂 Тем паче что разумно и управляемо использовать «крестик» ну совсем не трудно 🙂
2) Если у тебя есть код который нужно исполнить при закрытии — то НЕ НАДО его писать в Release() — сделай свой метод и его и вызывай когда надо — в т.ч. и из QueryUnload и из твоей кнопки закрытия. Твой метод выполнит ТОЛЬКО твои действия — вызов же Release() может выполнить и системные и твои, и вообще получается каша. Ты бы ещё в Hide это прописал 🙁
3) насчёт NODEFAULT — почитай хелп, там однозначно описан синтаксис. В VFP9 уже будет ругаться. Это как с LOCAL — были оригиналы, которые не ставили запятых между перечисленными именами 🙂 Эта экономия сильно по ним ударила в VFP7.

Источник

Foxpro закрыть все таблицы

Добрый день уважаемые подписчики. Сегодня я расскажу как я упаковываю таблицы и закрываю их. Для этого у меня в классе _APP
есть 2 метода — ВсеУпаковать и ВсеЗакрыть. Эти методы работают только в том случае если пользователю установлено право закрывать таблицы.
FUNCTION ВсеУпаковать
* проверяем право на закрытие таблиц
* это право очень замедляет работу и как правило отключено
IF .NOT. THIS.ЗАКРЫВАТЬ
* если такого права нет то выдается сообщение
WAIT WINDOW ‘ Включите режим «Закрывать таблицы после выборки данных» ‘
RETURN .T.
ENDIF
* открываем таблицы экслюзивно
THIS.ВСЕОТКРЫТЬЕКСЛЮЗИВНО()
* и по одной их упаковываем
SELECT ЗАКОНЫ
PACK
SELECT СТАТЬИЗАКОНОВ
PACK
SELECT РАЙОНЫ
PACK
SELECT ОБЪЕКТЫПРОВЕРКИ
PACK
SELECT ВИДЫНАРУШЕНИЙ
PACK
SELECT ПРИНЯТЫЕМЕРЫ
PACK
SELECT ПРОВЕРЯЮЩИЕ
PACK
SELECT ОБЪЕКТЫ
PACK
SELECT РЕЕСТРОБЪЕКТОВКОНТРОЛЯ
PACK
SELECT АКТЫ
PACK
SELECT НАРУШЕНИЯ
PACK
SELECT МЕРЫ
PACK
* после упаковки все таблицы закрываем
THIS.ВСЕЗАКРЫТЬ()
ENDFUNC
**
FUNCTION ВсеЗакрыть
* проверяем право на закрытие таблиц
IF .NOT. THIS.ЗАКРЫВАТЬ
* но на самом деле можем притвориться что их закрыли
RETURN .T.
ENDIF
* и вызываем методы соотвествующих классов для обработки команды закрытия
ОЗАКОНЫ.ЗАКРЫТЬ()
ОСТАТЬИЗАКОНОВ.ЗАКРЫТЬ()
ОРАЙОНЫ.ЗАКРЫТЬ()
ООБЪЕКТЫПРОВЕРКИ.ЗАКРЫТЬ()
ОВИДЫНАРУШЕНИЙ.ЗАКРЫТЬ()
ОПРИНЯТЫЕМЕРЫ.ЗАКРЫТЬ()
ОПРОВЕРЯЮЩИЕ.ЗАКРЫТЬ()
ООБЪЕКТЫ.ЗАКРЫТЬ()
ОРЕЕСТРОБЪЕКТОВКОНТРОЛЯ.ЗАКРЫТЬ()
ОАКТЫ.ЗАКРЫТЬ()
ОНАРУШЕНИЯ.ЗАКРЫТЬ()
ОМЕРЫ.ЗАКРЫТЬ()
* и в любом случае отключаем экслюзивность
SET EXCLUSIVE OFF
ENDFUNC

На сегодня все. В следующем выпуске я расскажу как я работаю с SQL сервером.

Источник

Adblock
detector