Команды для работы с базами данных, таблицами, индексами, связями
Некоторые команды и функции для работы с базой данных
Appear in File Open dialog - форма появляется в пункте Open
На странице 5 Reports следует указать Name - название, которое будет показано для отчета в окне Start , и Appears in Print Report dialog - показывать или нет отчет в диалоге печати отчетов.
После этого можно нажать кнопку OK и изучить, как выглядят экранные формы, отчеты и как ведет себя полученная программа после компиляции проекта .
Как правило, экранные формы и отчеты в дальнейшем подвергаются автором значительной модификации.
Особенность разработанной таким образом программы: на экранной форме нет навигационных кнопок и кнопок редактирования. Эти функции берут на себя панели инструментов (стандартная и навигационная), которые взаимодействуют с формами. Недостаток данного типа проекта - большой размер исполняемого файла в результате использования значительного количества дополнительных библиотек VFP.
Далее при описании команд приводится их полный синтаксис. Следует помнить, что элементы команд, заключенные в квадратные скобки, являются необязательными, могут присутствовать или отсутствовать. Если элементы разделены вертикальной чертой - должен присутствовать один из них.
Полный список команд и функций с разъяснением их параметров и примерами использования можно найти в справочной системе VFP в разделе Language Reference.
CREATE DATABASE [DatabaseName | ?]
Создать таблицу базы данных (SQL-команда) · CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]
· [CODEPAGE = nCodePage]
· ( FieldName1 FieldType [( nFieldWidth [, nPrecision] )] [NULL | NOT NULL]
· [CHECK lExpression1 [ERROR cMessageText1]]
· [AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1]
· [PRIMARY KEY | UNIQUE [COLLATE cCollateSequence]]
· [REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS]
· [, FieldName2... ]
· [, PRIMARY KEY eExpression2 TAG TagName2 |, UNIQUE eExpression3 TAG TagName3
· [COLLATE cCollateSequence]]
· [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]
· [COLLATE cCollateSequence]
· REFERENCES TableName3 [TAG TagName5]] [, CHECK lExpression2 [ERROR cMessageText2]] )
· | FROM ARRAY ArrayName
Открыть базу данных, представление (View) или таблицу базы · 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) ]
· Функция ALIAS([nWorkArea]) возвращает алиас для текущей или заданной рабочей зоны.
Выбрать свободную рабочую зону (0), заданную рабочую зону или выбрать таблицу · SELECT([ 0 | 1 | cTableAlias ])
· SELECT(0) - возвращает номер выбранной рабочей зоны
· SELECT(1) - возвращает наибольший номер свободной зоны
· SELECT 0 - выбор свободной зоны с наименьшим номером
· INDEX ON eExpression TO IDXFileName | TAG TagName
· [COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
· [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]
· [BINARY]
· SET INDEX TO [IndexFileList | ? ]
· ORDER nIndexNumber | IDXIndexFileName |
· [TAG] TagName [OF CDXFileName] [ASCENDING |
· DESCENDING]] [ADDITIVE]
Установить порядок по индексу · SET ORDER TO [nIndexNumber | IDXIndexFileName |
· [TAG] TagName [OF CDXFileName] [IN nWorkArea |
· cTableAlias][ASCENDING | DESCENDING]]
Установить связь между таблицами · SET RELATION TO [eExpression1 INTO nWorkArea1 |
· cTableAlias1 [, eExpression2 INTO nWorkArea2 |
· cTableAlias2 ] [IN nWorkArea | cTableAlias]
· [ADDITIVE]]
Установить множественную связь между таблицами (используется при формировании отчетов) SET SKIP TO [TableAlias1 [, TableAlias2] ...]
Команды перемещения по таблице, поиска и отбора данных
· GO [RECORD] nRecordNumber [IN nWorkArea |
· IN cTableAlias]
· GO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]
· (вместо GO можно использовать GOTO)
Переместиться по таблице (вперед или назад) SKIP [nRecords] [IN nWorkArea | cTableAlias]
Для nRecords>0 - перемещение далее по таблице, для nRecords<0 - назад к предыдущим записям.
Функция BOF() возвращает .T., если текущая запись - первая и Вы пытаетесь выполнить команду SKIP -1, аналогично для последней записи - EOF()=.T.
Поиск для заданного логического условия · LOCATE [FOR lExpression1] [Scope] [WHILE]
[NOOPTIMIZE]
(Найти следующую запись, соответствующую условию - команда CONTINUE)
Поиск по значению индекса · SEEK eExpression ORDER nIndexNumber |
· IDXIndexFileName | [TAG] TagName
· [OF CDXFileName] [ASCENDING | DESCENDING]]
[IN nWorkArea | cTableAlias]
· SET FILTER TO [lExpression]
[IN nWorkArea | cTableAlias]
Выполнить запрос (SQL-команда) · SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...]
· FROM [FORCE] Table_List_Item [, ...]
· [[JoinType] JOIN DatabaseName!]Table[[AS] Local_Alias]
· [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...]
· [WITH (BUFFERING = lExpr)]
· [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...]
· [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]]
· [UNION [ALL] SELECTCommand]
· [ORDER BY Order_Item [ASC | DESC] [, ...]]
· [INTO StorageDestination | TO DisplayDestination]
[PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]
В качестве StorageDestination можно использовать одно из следующих предложений:
ARRAY ArrayName - в массив переменных памяти; CURSOR CursorName - в курсор; DBF TableName | TABLE TableName - в таблицу. В качестве DisplayDestination можно использовать одно из следующих предложений:
FILE FileName [ADDITIVE] - ASCII текстовый файл; PRINTER [PROMPT] - вывод на принтер; SCREEN - в главное окно системы VFP. Команды для добавления, модификации и удаления данных
Открыть окно для работы в табличном формате с таблицей базы данных: · BROWSE [FIELDS FieldList] [FONT cFontName [, nFontSize]]
· [STYLE cFontStyle] [FOR lExpression1 [REST]] [FORMAT]
· [FREEZE FieldName] [KEY eExpression1 [, eExpression2]] [LAST | NOINIT]
· [LOCK nNumberOfFields] [LPARTITION] [NAME ObjectName] [NOAPPEND]
· [NOCAPTIONS] [NODELETE] [NOEDIT | NOMODIFY] [NOLGRID] [NORGRID]
· [NOLINK] [NOMENU] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT]
· [PARTITION nColumnNumber [LEDIT] [REDIT]]
· [PREFERENCE PreferenceName] [SAVE] [TIMEOUT nSeconds]
· [TITLE cTitleText] [VALID [:F] lExpression2 [ERROR cMessageText]]
· [WHEN lExpression3] [WIDTH nFieldWidth] [WINDOW WindowName1]
[IN [WINDOW] WindowName2 | IN SCREEN] [COLOR SCHEME nSchemeNumber]
При описании полей (в параметре FIELDS) список может содержать следующие параметры:
FieldName (имя поля)
[:R] (только чтение)
[:nColWidth] (ширина поля)
[:V = lExpr1 [:F] [:E = cTxt]] (функция, выполняемая при выходе из поля)
[:P = cFormatCodes] (формат)
[:B = eMin, eMax [:F]] (диапазон данных)
[:H = cHeadingText] (заголовок)
[:W = lExpr2] (функция,выполняемая
перед входом в поле)
Близкий синтаксис имеют команды EDIT и CHANGE для работы с таблицей при построчном расположении полей.
· APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]
· APPEND FROM FileName | ? [FIELDS FieldList]
· [FOR lExpression][[TYPE] [DELIMITED
· [WITH Delimiter | WITH BLANK | WITH TAB |
· WITH CHARACTER Delimiter] | DIF | FW2 | MOD |
· PDOX | RPD | SDF | SYLK | WK1 |WK3 | WKS | WR1 |
· WRK | CSV | XLS | XL5 [SHEET cSheetName]| XL8
· [SHEET cSheetName]]] [AS nCodePage]
·
· APPEND FROM ARRAY ArrayName [FOR lExpression] [
· FIELDS FieldList | FIELDS LIKE Skeleton |
FIELDS EXCEPT Skeleton]
SQL-команда INSERT INTO - добавить запись с заданными значениями полей:
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
VALUES (eExpression1 [, eExpression2, ...])
INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR | FROM NAME ObjectName
INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]
SELECT SELECTClauses [UNION UnionClause SELECT SELECTClauses ...]
Занести данные в поля таблицы · REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
· [, FieldName2 WITH eExpression2 [ADDITIVE]]
· ...[Scope][FOR lExpression1][WHILE lExpression2]
[IN nWorkArea | cTableAlias][NOOPTIMIZE]
Копировать данные текущей записи в массив переменных · SCATTER [FIELDS FieldNameList | FIELDS LIKE
· Skeleton | FIELDS EXCEPT Skeleton] [MEMO]
· TO ArrayName | TO ArrayName BLANK | MEMVAR
| MEMVAR BLANK | NAME ObjectName [BLANK]
параметр MEMVAR означает - используются переменные с теми же именами, что и имена полей записи; имя переменной в программе следует писать как m.<имя поля>).
Копировать данные из массива переменных в текущую запись · GATHER FROM ArrayName | MEMVAR | NAME ObjectName
· [FIELDS FieldList | FIELDS LIKE Skeleton |
FIELDS EXCEPT Skeleton] [MEMO]
Копирование данных таблицы в массив · COPY TO ARRAY ArrayName [FIELDS FieldList |
· FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
· [Scope] [FOR lExpr1a] [WHILE lExpression2]
[NOOPTIMIZE]
Выполнить обновление данных (SQL-команда) · UPDATE Target
· SET Column_Name1 = eExpression1 [, Column_Name2 = eExpression2 ...]
· [FROM [FORCE] Table_List_Item [[, ...] | [JOIN [ Table_List_Item]]]
WHERE FilterCondition1 [AND | OR FilterCondition2 ...]
Здесь Target - таблица (table), курсор (cursor) или их алиас или файл для обновления.
Пометить записи таблицы для удаления записи · DELETE [Scope] [FOR lExpression1] [WHILE lExpression2]
[IN nWorkArea | cTableAlias] [NOOPTIMIZE]
Удалить помеченные для удаления записи из файла PACK [MEMO | DBF] [Tablename ] [IN nWorkarea | cTableAlias]
Выполнить удаление записей (SQL-команда) · DELETE [Target] FROM [FORCE] Table_List [[, Table_List ...] | [JOIN [ Table_List]]]
[WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]
Команды вычислений по данным таблиц
CALCULATE eExpressionList [Scope] [FOR lExpression1] [WHILE lExpression2][TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE] [IN nWorkArea | cTableAlias] где для eExpressionList - можно использовать следующие функции:
AVG(nExpression) - среднее значение
CNT( ) - количество
MAX(eExpression) - максимальное значение
MIN(eExpression) - минимальное значение
NPV(nExpression1, nExpression2 [, nExpression3])
- банковская функция
STD(nExpression) - стандартное отклонение
SUM(nExpression) - сумма
VAR(nExpression) - статистическая функция
SUM [eExpressionList] [Scope] [FOR lExpression1]
[WHILE lExpression2][TO MemVarNameList |
TO ARRAY ArrayName] [NOOPTIMIZE]
AVERAGE [ExpressionList] [Scope] [FOR lExpression1]
[WHILElExpression2][TO VarList |
TO ARRAY ArrayName] [NOOPTIMIZE]
COUNT [Scope] [FOR lExpression1] [WHILE lExpression2]
[TO VarName][NOOPTIMIZE]
Математические функции
^ * / + - ABS() ACOS() ASIN() ATAN() ATN2() AVG()
BINTOC() BITAND() BITCLEAR() BITLSHIFT() BITRSHIFT() BITSET() BITTEST() BITXOR()
CEILING() COS() COUNT() DTOR() EXP() FLOOR() FV() INT() LOG() LOG10() MAX() MIN()
MOD() MTON() NTOM() PAYMENT() PI() PV() RAND() ROUND(,) RECCOUNT() RECNO() RTOD()
SIGN() SIN() SQRT() SUM() TAN() VAL()
Функции для операций с текстовыми данными
+ - ASC() ALLTRIM() AT(,,) ATC(,,) CHR() CHRTRAN(,,) CTOBIN()
CURSORTOXML(,,,,) CURVAL(,) FILETOSTR() GETPEM(,) GETWORDCOUNT(,) GETWORDNUM(,)
LEFT(,) LEN() LOWER() LTRIM() MAX(,) MIN(,) OCCURS(,) OEMTOANSI() OLDVAL(,) PADC(,)
PADL(,) PADR(,) PEMSTATUS(,,) PROPER() RAT(,,) REPLICATE(,) RIGHT(,) RTRIM() SOUNDEX()
SPACE() STR(,,) STREXTRACT(,,,,) STRTRAN(,,) STUFF(,,,) SUBSTR(,,) TRANSFORM(,) TRIM()
TYPE() UPPER() $ AT_C(,,) ATCC(,,) CHRTRANC(,,) LEFTC(,) LENC( ) RATC(,,) RIGHTC(expC,)
TEXTMERGE(,,,) STRCONV(,) STUFFC(,,,) SUBSTRC(,,)
Функции для операций с данными типа "дата" и "время"
{date} CDOW() CMONTH() CTOD() CTOT() DATE() DATETIME() DAY() DMY() DOW()
DTOC() DTOS() DTOT() GOMONTH(,) HOUR() MAX(,) MDY() MIN(,) MINUTE() MONTH() QUARTER()
SEC() SECONDS() TIME() TTOC() TTOD() WEEK() YEAR()
Логические функции
< > = < > <= >= == .T. .F. .NULL. NOT AND OR BETWEEN(,,)
DELETED() EMPTY() IIF(,,) INLIST(,,) NVL(,) SEEK(,,)
1) Параметры вывода итогов запроса могут быть следующие:INTO Destination В качестве Destination можно использовать одно из следующих предложений: ARRAY ArrayName - в массиве переменных памяти; CURSOR CursorName - в курсор; DBF TableName | TABLE TableName - в таблицу. Вместо INTO можно использовать. TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN