Нашей фирмой предлагается русскоязычная документация к Alaska Xbase++ v.1.9 в формате MS Word и Русскоязычная документация к Alaska ADS-DBE v.1.9 в формате MS Word.
Ниже приведено оглавление русскоязычной документации к Alaska Xbase++ v.1.82:
Installation | Установка |
About Client/Server Concepts | О концепции клиент-сервер. |
The ADS DatabaseEngine | ADS механизм базы данных |
Limitations of the Advantage Database Server | Ограничения ADS |
Using the ADSDBE | Использование ADSDBE |
Transaction processing | Обработка транзакций |
Configuration of the ADSDBE | Конфигурация ADSDBE |
ADSDBE and DbInfo() | ADSDBE и DbInfo() |
Inquiring information about the ADS | Запрос информации об ADS |
Command reference | Информация о командах |
APPEND FROM | APPEND FROM |
COPY TO | COPY TO |
SET AXS LOCKING | SET AXS LOCKING |
SET RIGHTS CHECKING | SET RIGHTS CHECKING |
SET PASSWORD TO | SET PASSWORD TO |
ADS function reference | Справочная информация о функциях ADS |
AX_AXSLocking() | AX_AXSLocking() |
AX_DBFDecrypt() | AX_DBFDecrypt() |
AX_DBFEncrypt() | AX_DBFEncrypt() |
AX_Decrypt() | AX_Decrypt() |
AX_Encrypt() | AX_Encrypt() |
AX_IDType() | AX_IDType() |
AX_RightsCheck() | AX_RightsCheck() |
AX_SetPass() | AX_SetPass() |
AX_TableType() | AX_TableType() |
Basics of Database Programming | Основы программирования баз данных |
What is a database | Что такое база данных |
Creating a database | Создание базы данных |
Saving data | Сохранение данных |
Work area and Alias | Рабочая область и псевдоним (Alias) |
The work space of Xbase++ | Рабочее пространство Xbase++ |
Record pointer and database fields | Указатель записей и поля базы данных |
Database Operations | Операции с базами данных |
Elementary searches and analysis | Элементарные приемы поиска и анализа |
Calculations and data exchange | Вычисления и обмен данными |
Fast search of data using index files | Быстрый поиск данных с использованием индексных файлов |
Data is related - database relations | Отношения между данными в базах данных |
Databases in a multi-user environment | Базы данных в многопользовательской среде |
The Xbase++ DatabaseEngine | Xbase++ механизм базы данных |
Basics of DatabaseEngines | Основы механизмов базы данных |
DatabaseEngines and programming language | Механизмы базы данных и язык программирования |
Determine information about DatabaseEngines | Определение информации о механизмах базы данных |
The function DbeInfo() | Функция DbeInfo() |
The function DbInfo() | Функция DbInfo() |
The function FieldInfo() | Функция FieldInfo() |
Specifications of the DatabaseEngines - file formats | Спецификации механизмов баз данных. Файловые форматы. |
SDFDBE (DATA component) | SDFDBE (компонент данных - DATA) |
DELDBE (DATA Component) | DELDBE (компонент данных - DATA) |
DBFDBE (DATA component) | DBFDBE (компонент данных - DATA) |
FOXDBE (DATA component) | FOXDBE (компонент данных - DATA) |
NTXDBE (ORDER component) | NTXDBE (компонент упорядочивания - ORDER) |
CDXDBE (ORDER component) | CDXDBE (компонент упорядочивания - ORDER) |
Basics of Object Oriented Programming | Основы объектно-ориентированного программирования |
General description of an object | Общее описание объекта |
Definition of terms | Определения терминов |
Basics of programming with objects | Основы программирования с объектами |
Declaration of a class | Объявление класса |
Creation of objects | Создание объектов |
Programming methods | Методы программирования |
Access to member variables and methods | Доступ к переменным экземпляра и методам |
Initialization of objects - the method init() | Инициализация объектов – метод init() |
Inheritance | Наследование |
User Interface and Dialog Concepts | Интерфейс пользователя и концепции диалога |
Applications in character mode (VIO mode) | Приложения в символьном режиме (VIO) |
Unformatted input and output | Неформатированный ввод/вывод |
Formatted input and output | Форматированный ввод/вывод |
Keyboard and mouse | Клавиатура и мышь |
The default Get system | Get–система по умолчанию |
Modification of the Get system | Модификация Get system |
Display of tables | Отображение таблиц |
Applications in graphics mode (GUI mode) | Приложения в графическом режиме (GUI) |
Basics of Xbase Parts | Основы Xbase Parts |
Windows and relationships | Окна и отношения |
XbpCrt() - The window for hybrid mode | XbpCrt() – Окно для гибридного режима |
XbpDialog() - The window for GUI mode | XbpDialog() - Окно для режима GUI |
Class hierarchy of Xbase Parts | Классовая иерархия Xbase Parts |
DataRef() - The connection between XBP and DBE | DataRef() – Связь между XBP и DBE |
Creating GUI applications | Создание GUI приложений |
Tasks of AppSys() | Задачи AppSys() |
The menu system of an application | Система меню приложения |
Tasks of the Main procedure | Задачи главной процедуры |
A DataDialog class for integrating databases | Класс DataDialog для интегрирующих баз данных |
DataDialog and data entry screens | DataDialog и экраны ввода данных |
Program control in dialog windows | Программное управление в диалоговых окнах |
The Xbase++ Graphics Engine (GRA) | Xbase++ графический механизм (GRA) |
Basics for graphic output | Основы графического вывода |
Graphic primitives | Графические примитивы |
Attributes for graphic primitives | Атрибуты графических примитивов |
Graphic segments | Графические сегменты |
Graphic paths | Графические пути |
Graphic transformations and raster operations | Графические трансформации и растровые операции |
Presentation Spaces for Graphic Output | Пространства представления для графического вывода |
Coordinate system and view port | Система координат и порт просмотра |
The intelligent presentation space - XbpCrt:presSpace() | Интеллектуальное пространство представления - XbpCrt:presSpace() |
The high speed presentation space - Xbp:lockPS() | Высокоскоростное пространство представления - Xbp:lockPS() |
The complete presentation space - XbpPresSpace() | Завершенное пространство представления - XbpPresSpace() |
Graphic output devices | Устройства графического вывода |
The printer - XbpPrinter() | Принтер XbpPrinter() |
The metafile - XbpMetaFile() | Метафайл XbpMetaFile() |
The raster image - XbpBitmap() | Растровое изображение XbpBitmap() |
Using windows as output devices | Использование окон в качестве устройств вывода |
Output to window and printer - WYSIWYG | Вывод в окно и на принтер – WYSIWYG |
Error Handling Concepts | Принципы обработки ошибок |
Offensive and defensive error handling | Наступательная и оборонительная стратегии в обработке ошибок |
Use of error objects | Использование объектов ошибки |
Default error handling - ERRORSYS.PRG and XPPERROR.LOG | Обработка ошибок по умолчанию - ERRORSYS.PRG и XPPERROR.LOG |
Multi-tasking and Multi-threading | Многозадачность и многопотоковость. |
Start multiple processes - multi-tasking | Запуск нескольких процессов – многозадачность |
Using multiple threads | Использование нескольких потоков |
Execution paths in a program | Выполняемые ветви в программе |
Visibility of variables in threads | Видимость переменных в потоках |
Priorities of threads | Приоритеты потоков |
Getting information about threads | Получение информации о потоках |
Thread objects know the time | Объекты потока знают время |
(De)Initialization routines for Threads | Программы (де)инициализации для потоков |
User-defined Thread classes | Определяемые пользователем классы потока |
Controlling threads using wait states | Управление потоками при помощи режима ожидания |
Controlling threads using signals | Управление потоками при помощи сигналов |
Mutual exclusion of threads | Взаимное исключение потоков |
Service Applications | Сервис-приложения |
Controlling services | Управление сервисами |
Implementing services | Реализация сервисов |
ActiveX Overview | |
Installation and deployment | |
Basic usage | |
Reacting to COM/ActiveX events | |
Using ActiveX controls | |
Handling errors | |
Using COM/ActiveX constants and types | |
ActiveX - Terms and definitions | |
Information for Clipper Programmers | Информация для Clipper программистов |
Differences in the preprocessor and compiler | Различия в препроцессоре и компиляторе |
Differences between Clipper '87 and Xbase++ | Различия между Clipper '87 и Xbase++ |
Differences between Clipper 5.x and Xbase++ | Различия между Clipper 5.x и Xbase++ |
New functions in Xbase++ (unknown in Clipper) | Новые функции в Xbase++ (неизвестные в Clipper) |
Differences between Class(y) and Xbase++ | Различия между Class(y) и Xbase++ |
Using the mouse | Использование мыши. |
Deployment of Xbase++ applications | Применение Xbase++ приложений |
The Xbase++ FormDesigner - XPPFD.EXE | Xbase++ конструктор форм - XPPFD.EXE |
Components of the FormDesigner | Компоненты конструктора форм |
Working with the FormDesigner | Работа с конструктором форм (FormDesigner) |
FUNCTION Code | FUNCTION код |
CLASS Code | CLASS код |
Using CLASS Code | Использование CLASS кода |
The Xbase++ compiler - XPP.EXE | Xbase++ компилятор - XPP.EXE |
Compiler switches | Ключи компиляции |
Constants defined by the compiler | Константы, определяемые компилятором |
XPPLOAD Version information | XPPLOAD информация о версии |
The Xbase++ Debugger - XPPDBG.EXE | Xbase++ отладчик - XPPDBG.EXE |
Basics of the debugger | Основы программы отладки |
The menu system of the debugger | Система меню программы отладки |
File menu | Файловое меню |
Run menu | Меню запуска |
Monitor menu | Меню монитора |
Commands menu | Меню команд |
Options menu | Меню опций |
Help menu | Меню помощи |
Options for the Debugger | Опции для программы отладки |
Working with the debugger | Работа с программой отладки |
Setting breakpoints | Установка точек прерывания |
Inspecting errors | Изучение ошибок |
The Xbase++ ProjectBuilder - PBUILD.EXE | Xbase++ ProjectBuilder - PBUILD.EXE |
Creating a project file (XPJ file) | Создание проектного файла (XPJ файла) |
Creating a project | Создание проекта |
The [PROJECT] section in an XPJ file | [PROJECT] секция в XPJ файле |
User-defined sections in an XPJ file | Определяемые пользователем секции в XPJ файле |
Options for PBUILD.EXE | Опции для PBUILD.EXE |
The Alaska Linker - ALINK.EXE | Компоновщик в Alaska - ALINK.EXE |
Calling the linker from the command line | Вызов компоновщика из командной строки |
Linker options | Опции компоновщика |
Environment variables for the linker | Переменные окружения для компоновщика |
Creating DLL files | Создание DLL файлов |
The utility program AIMPLIB.EXE | Обслуживающая программа AIMPLIB.EXE |
The Alaska Resource Compiler - ARC.EXE | Компилятор ресурсов в Alaska - ARC.EXE |
Declaring resources - The ARC file | Объявление ресурсов – ARC файл |
Directives for ARC.EXE | Директивы для ARC.EXE |
Options for ARC.EXE | Опции для ARC.EXE |
Online Help | Помощь он-лайн |
Basics about Windows Help Workshops | Основы Windows Help Workshops |
Planning online help | Планирование оперативной помощи |
ActiveX Header Generator - TLB2CH.EXE | |
Language Elements of Xbase++ | Языковые элементы Xbase++ |
Blank spaces and comments | Пробелы и комментарии |
Keywords | Ключевые слова |
Identifiers | Идентификаторы |
Constants | Константы |
Operators | Операторы |
Punctuation marks and special characters | Знаки препинания и специальные символы |
Elements of an Xbase++ Program | Элементы Xbase++ программы |
Variables | Переменные |
Naming field variables | Наименование переменных поля |
Naming memory variables | Наименование переменных памяти |
Functions | Функции |
Expressions | Выражения |
Statements | Операторы |
Declarations | Объявления |
Directives | Директивы |
Commands | Команды |
User-defined functions and procedures | Определяемые пользователем функции и процедуры |
General structure of an Xbase++ program | Основная структура Xbase++ программы |
Source code files | Файлы исходных кодов |
The Xbase++ Preprocessor | Xbase++ препроцессор |
Symbolic constants and pseudofunctions | Символические константы и псевдофункции |
#include files | #include файлы |
Conditional compiling | Условная компиляция |
Extending the language scope of Xbase++ | Расширение языкового диапазона Xbase++ |
Data Types and Literals | Типы данных и литералы |
Character string | Символьная строка |
Memo | Memo |
Numeric | Числовой |
Logical | Логический |
Date | Дата |
NIL | NIL |
Array | Массив |
Code block | Кодовый блок |
Object | Объект |
Operators | Операторы |
Assignment operators | Оператор присваивания |
Increment and decrement operators | Операторы инкремента и декремента |
Mathematical operators | Математические операторы |
Comparison operators | Операторы сравнения |
Logical operators | Логические операторы |
Special operators | Специальные операторы |
Precedence of operators | Предшествование (приоритет) операторов |
Declarations and Statements | Объявления и Операторы |
Declaration of functions and procedures | Объявление функций и процедур |
Visibility | Видимость |
Arguments and parameters | Аргументы и параметры |
Declaration of variables | Объявление переменных |
Visibility and lifetime | Видимость и время существования |
Lexical memory variables - code example | Лексические переменные памяти – образец кода |
Dynamic memory variables - code example | Динамические переменные памяти – образец кода |
Field variables - code example | Переменные поля – образец кода |
Control structures | Управляющие структуры |
Branching | Ветвление |
Loops | Циклы |
Exceptions and error handling | Исключения и обработка ошибок |
Operations and Operators for Simple Data Types | Операции и операторы для простых типов данных |
Operations with character values | Операции с символьными значениями |
Operations with memos | Операции с memo |
Operations using numeric values | Операции с использованием числовых значений |
Operations using logical values | Операции с использованием логических значений |
Operations using date values | Операции с использованием значений даты |
Operations using the value NI | Операции с использованием значения NIL |
Procedures, Functions and Special Operators | Процедуры, функции и специальные операторы |
Function call and parameter passing | Вызов функции и передача параметра |
Grouping expressions | Группировка выражений |
Reference operator | Оператор ссылки |
Alias operator | Оператор-псевдоним |
Macro operator | Макро-оператор |
Operations and Operators for Complex Data Types | Операции и операторы для комплексных типов данных |
Operations using arrays | Операции с использованием массивов |
Operations using code blocks | Операции с использованием кодовых блоков |
Operations using objects | Операции с использованием объектов |
Directives | Директивы |
#command | #translate | #command | #translate |
#define | #define |
#error | #error |
#if | #if |
#ifdef | #ifdef |
#ifndef | #ifndef |
#include | #include |
#pragma | #pragma |
#stdout | #stdout |
#undef | #undef |
#xcommand | #xtranslate | #xcommand | #xtranslate |
Operator Reference | Информация об операторах |
:=operator | Оператор := |
= (assignment) | = (присвоение) |
= (compound assignment) | = (сложное присвоение) |
%operator | Оператор % |
*operator | Оператор * |
**operator | Оператор ** |
+operator | Оператор + |
++operator | Оператор ++ |
-operator | Оператор - |
--operator | Оператор -- |
/operator | Оператор / |
$operator | Оператор $ |
<operator | Оператор < |
<=operator | Оператор <= |
<> != #operator | Оператор <> !=# |
= (comparison) - | = (сравнение) |
==operator | Оператор == |
>operator - | Оператор > |
>=operator | Оператор >= |
.AND.operator | Оператор .AND. |
.NOT.operator | Оператор .NOT. |
.OR.operator | Оператор .OR. |
:operator | Оператор : |
::operator | Оператор :: |
&operator | Оператор & |
( )operator | Оператор ( ) |
->operator | Оператор -> |
@operator | Оператор @ |
[ ]operator | Оператор [ ] |
{ }operator | Оператор { } |
{|| }operator | Оператор {|| } |
Statements and Declarations | Операторы и объявления |
ANNOUNCE | ANNOUNCE |
BEGIN SEQUENCE | BEGIN SEQUENCE |
DECLARE | DECLARE |
DO | DO |
DO CASE | DO CASE |
DO WHILE - | DO WHILE - |
EXIT PROCEDURE | EXIT PROCEDURE |
EXTERNAL | EXTERNAL |
FIELD | FIELD |
FOR | FOR |
FUNCTION | FUNCTION |
IF | IF |
INIT PROCEDURE | INIT PROCEDURE |
LOCAL | LOCAL |
MEMVAR | MEMVAR |
PARAMETERS | PARAMETERS |
PRIVATE | PRIVATE |
PROCEDURE | PROCEDURE |
PUBLIC | PUBLIC |
REQUEST | REQUEST |
RETURN | RETURN |
STATIC | STATIC |
Class Declaration | Объявление классов |
ACCESS | ASSIGN | ACCESS | ASSIGN |
CLASS | CLASS |
CLASS METHOD (Declaration) | CLASS METHOD (Declaration) |
CLASS METHOD (Implementation) | CLASS METHOD (Implementation) |
CLASS VAR | CLASS VAR |
DEFERRED | DEFERRED |
EXPORTED: | EXPORTED: |
FINAL | FINAL |
HIDDEN: | HIDDEN: |
INLINE - | INLINE - |
METHOD (Declaration) | METHOD (Объявление) |
METHOD (Implementation) | METHOD (Реализация) |
PROTECTED: | PROTECTED: |
SYNC | SYNC |
VAR | VAR |
Text mode and GUI applications | Текстовый режим и GUI приложения |
Abstract() - | Abstract() - |
DataRef() | DataRef() |
Error() | Error() |
Get() | Get() |
AutomationObject() - Class function of the AutomationObject class | |
ActiveXObject() - Class function of the ActiveXObject class | |
XbpActiveXControl() - Class function of the XbpActiveXControl class | |
ServiceApp() | ServiceApp() |
ServiceController() | ServiceController() |
DragDataObject() - Class function of the DragDataObject class | |
Signal() | Signal() |
TBrowse() | TBrowse() |
TBColumn() | TBColumn() |
Thread() | Thread() |
VCrt() | VCrt() |
Data Access Chain | Последовательность доступа к данным |
DacPagedDataStore() | DacPagedDataStore() |
DacSession() | DacSession() |
Application Parts | Application Parts |
APPBROWSE | APPBROWSE |
APPDISPLAY | APPDISPLAY |
APPEDIT | APPEDIT |
APPFIELD | APPFIELD |
Xbase Parts | Xbase Parts |
Xbp3State() | Xbp3State() |
XbpBitmap() | XbpBitmap() |
XbpBrowse() | XbpBrowse() |
XbpCellGroup() | XbpCellGroup() |
XbpCheckBox() | XbpCheckBox() |
XbpClipBoard() | XbpClipBoard() |
XbpColumn() | XbpColumn() |
XbpCombobox() | XbpCombobox() |
XbpCrt() | XbpCrt() |
XbpDialog() | XbpDialog() |
XbpFileDev() | XbpFileDev() |
XbpFileDialog() | XbpFileDialog() |
XbpFont() | XbpFont() |
XbpFontDialog() | XbpFontDialog() |
XbpHelp() | XbpHelp() |
XbpHelpLabel() | XbpHelpLabel() |
XbpHTMLViewer() - Class function of the XbpHTMLViewer class | |
XbpIWindow() | XbpIWindow() |
XbpListBox() | XbpListBox() |
XbpMenu() | XbpMenu() |
XbpMenuBar() | XbpMenuBar() |
XbpMetaFile() | XbpMetaFile() |
XbpMLE() | XbpMLE() |
XbpMultiCellGroup() | XbpMultiCellGroup() |
XbpPartHandler() | XbpPartHandler() |
XbpPresSpace() | XbpPresSpace() |
XbpPrinter() | XbpPrinter() |
XbpPrintDialog() | XbpPrintDialog() |
XbpPushButton() | XbpPushButton() |
XbpQuickBrowse() | XbpQuickBrowse() |
XbpRadioButton() | XbpRadioButton() |
XbpRtf() - Class function of the XbpRtf() class | |
XbpScrollBar() | XbpScrollBar() |
XbpSetting() | XbpSetting() |
XbpSLE() | XbpSLE() |
XbpSpinButton() | XbpSpinButton() |
XbpStatic() | XbpStatic() |
XbpStatusBar() - Class function of the XbpStatusBar() class | |
XbpStatusBarPanel() - Class function of the XbpStatusBarPanel class | |
XbpSysWindow() | XbpSysWindow() |
XbpTabPage() | XbpTabPage() |
XbpToolBar() - Class function of the XbpToolBar() class | |
XbpToolBarButton() - Class function of the XbpToolBarButton class | |
XbpToolBarButtonMenuItem() - Class function of the XbpToolBarButtonMenuItem class | |
XbpTreeView() | XbpTreeView() |
XbpTreeViewItem() | XbpTreeViewItem() |
XbpWindow() | XbpWindow() |
?|?? | ?|?? |
@...BOX | @...BOX |
@...CLEAR | @...CLEAR |
@...GET | @...GET |
@...PROMPT | @...PROMPT |
@...SAY | @...SAY |
@...TO | @...TO |
AAdd() | AAdd() |
Abs() | Abs() |
ACCEPT | ACCEPT |
AChoice() | AChoice() |
AClone() | AClone() |
ACopy() | ACopy() |
ADel() | ADel() |
ADir() | ADir() |
AEval() | AEval() |
AFields() | AFields() |
AFill() | AFill() |
AIns() | AIns() |
Alert() | Alert() |
Alias() | Alias() |
Alltrim() | Alltrim() |
AltD() | AltD() |
AppDesktop() | AppDesktop() |
APPEND BLANK | APPEND BLANK |
APPEND FROM | APPEND FROM |
AppEvent() | AppEvent() |
AppKeyState() | AppKeyState() |
AppName() | AppName() |
AppType() | AppType() |
ARemove() | ARemove() |
Array() | Array() |
Asc() | Asc() |
AScan() | AScan() |
ASize() | ASize() |
ASort() | ASort() |
At() | At() |
ATail() | ATail() |
Bin2f() | Bin2f() |
AVERAGE | AVERAGE |
Bin2i() | Bin2i() |
Bin2l() | Bin2l() |
Bin2u() | Bin2u() |
Bin2Var() | Bin2Var() |
Bin2w() | Bin2w() |
Bof() | Bof() |
Break() | Break() |
Browse() | Browse() |
CALL | CALL |
CANCEL | CANCEL |
CDow() | CDow() |
CenterControl() - Center an Xbase Part within its parent object. | |
Char2Var() | Char2Var() |
Chr() | Chr() |
ClassCreate() | ClassCreate() |
ClassDestroy() | ClassDestroy() |
ClassObject() | ClassObject() |
CLEAR ALL | CLEAR ALL |
CLEAR GETS | CLEAR GETS |
CLEAR MEMORY | CLEAR MEMORY |
CLEAR SCREEN | CLEAR SCREEN |
CLEAR TYPEAHEAD | CLEAR TYPEAHEAD |
CLOSE | CLOSE |
CMonth() | CMonth() |
Coalesce() - Returns the first non NIL/NULL expression among its arguments. | |
CoalesceEmpty() - Returns the first non empty expression among its arguments | |
Col() | Col() |
ColorSelect() | ColorSelect() |
ComLastError() - Returns error code after calling GetObject() or CreateObject() | |
ComLastMessage() - Returns error message after calling GetObject() or CreateObject() | |
AutomationRequestLicenseKey() - Requests the license key of a COM/ActiveX component | |
AutomationTranslateColor() - Translates a COM/ActiveX color value to an Xbase++ color and vice versa | |
COMMIT | COMMIT |
ConfirmBox() | ConfirmBox() |
CONTINUE | CONTINUE |
ConvToAnsiCP() | ConvToAnsiCP() |
ConvToOemCP() | ConvToOemCP() |
CreateDir() | CreateDir() |
CreateObject() - Creates and returns a reference to a COM/ActiveX component. | |
ShellLinkCreate() - Create a Shell link object. | |
COPY FILE | COPY FILE |
COPY STRUCTURE | COPY STRUCTURE |
COPY STRUCTURE EXTENDED | COPY STRUCTURE EXTENDED |
COPY TO | COPY TO |
COUNT | COUNT |
CREATE | CREATE |
CREATE FROM | CREATE FROM |
CtoD() | CtoD() |
CurDir() | CurDir() |
CurDrive() | CurDrive() |
Date() | Date() |
Day() | Day() |
DbAppend() | DbAppend() |
DbCargo() | DbCargo() |
DbClearFilter() | DbClearFilter() |
DbClearIndex() | DbClearIndex() |
DbClearRelation() | DbClearRelation() |
DbClearScope() | DbClearScope() |
DbClientList() | DbClientList() |
DbCloseAll() | DbCloseAll() |
DbCloseArea() | DbCloseArea() |
DbCommit() | DbCommit() |
DbCommitAll() | DbCommitAll() |
DbContinue() | DbContinue() |
DbCopyExtStruct() | DbCopyExtStruct() |
DbCopyStruct() | DbCopyStruct() |
DbCreate() | DbCreate() |
DbCreateExtStruct() | DbCreateExtStruct() |
DbCreateFrom() | DbCreateFrom() |
DbCreateIndex() | DbCreateIndex() |
DbDelete() | DbDelete() |
DbDeregisterClient() | DbDeregisterClient() |
DbDescend() | DbDescend() |
DbeBuild() | DbeBuild() |
DbEdit() | DbEdit() |
DbeInfo() | DbeInfo() |
DbeList() | DbeList() |
DbeLoad() | DbeLoad() |
DbeSetDefault() | DbeSetDefault() |
DbeUnload() | DbeUnload() |
DbEval() | DbEval() |
DbExport() | DbExport() |
Dbf() | Dbf() |
DbFilter() | DbFilter() |
DbGoBottom() | DbGoBottom() |
DbGoPosition() | DbGoPosition() |
DbGoto() | DbGoto() |
DbGoTop() | DbGoTop() |
DbImport() | DbImport() |
DbInfo() | DbInfo() |
DbJob() | DbJob() |
DbJoin() | DbJoin() |
DbList() | DbList() |
DbLocate() | DbLocate() |
DbLocked() | DbLocked() |
DbPack() | DbPack() |
DbPosition() | DbPosition() |
DbRecall() | DbRecall() |
DbRefresh() | DbRefresh() |
DbRegisterClient() | DbRegisterClient() |
DbReindex() | DbReindex() |
DbRelation() | DbRelation() |
DbRelease() | DbRelease() |
DbRequest() | DbRequest() |
DbResetNotifications() | DbResetNotifications() |
DbResumeNotifications() | DbResumeNotifications() |
DbRList() | DbRList() |
DbRLock() | DbRLock() |
DbRLockList() | DbRLockList() |
DbROrdName() | DbROrdName() |
DbRResumeSelect() | DbRResumeSelect() |
DbRRollback() | DbRRollback() |
DbRSelect() | DbRSelect() |
DbRSuspendSelect() | DbRSuspendSelect() |
DbRUnlock() | DbRUnlock() |
DbScope() | DbScope() |
DbSeek() | DbSeek() |
DbSelectArea() | DbSelectArea() |
DbSession() | DbSession() |
DbSetDescend() | DbSetDescend() |
DbSetDriver() | DbSetDriver() |
DbSetFilter() | DbSetFilter() |
DbSetFound() | DbSetFound() |
DbSetIndex() | DbSetIndex() |
DbSetNullValue() - Toggles NULL/NIL value support of a work area | |
DbSetOrder() | DbSetOrder() |
DbSetRelation() | DbSetRelation() |
DbSetScope() | DbSetScope() |
DbSkip() | DbSkip() |
DbSkipper() | DbSkipper() |
DbSort() | DbSort() |
DbStruct() | DbStruct() |
DbSuspendNotifications() | DbSuspendNotifications() |
DbTotal() | DbTotal() |
DbUnlock() | DbUnlock() |
DbUnlockAll() | DbUnlockAll() |
DbUpdate() | DbUpdate() |
DbUseArea() | DbUseArea() |
DbZap() | DbZap() |
DELETE | DELETE |
DELETE FILE | DELETE FILE |
DELETE TAG | DELETE TAG |
Deleted() | Deleted() |
Descend() | Descend() |
DevOut() | DevOut() |
DevOutPict() | DevOutPict() |
DevPos() | DevPos() |
DIR | DIR |
Directory() | Directory() |
DiskSpace() | DiskSpace() |
DispBegin() | DispBegin() |
DispBox() | DispBox() |
DispCount() | DispCount() |
DispEnd() | DispEnd() |
DISPLAY | DISPLAY |
DispOut() | DispOut() |
DispOutAt() | DispOutAt() |
DllCall() | DllCall() |
DllExecuteCall() | DllExecuteCall() |
DllInfo() | DllInfo() |
DLLFUNCTION | DLLFUNCTION |
DllLoad() | DllLoad() |
DllPrepareCall() | DllPrepareCall() |
DllUnLoad() | DllUnLoad() |
DosError() | DosError() |
DosErrorMessage() | DosErrorMessage() |
DoW() | DoW() |
DtoC() | DtoC() |
DtoS() | DtoS() |
EJECT | EJECT |
Empty() | Empty() |
EnableClipRect() | EnableClipRect() |
Eof() | Eof() |
ERASE | ERASE |
ErrorBlock() | ErrorBlock() |
ErrorLevel() | ErrorLevel() |
ErrorNew() | ErrorNew() |
Eval() | Eval() |
EventLogWriteStr() | EventLogWriteStr() |
Exp() | Exp() |
F2Bin() | F2Bin() |
FAttr() | FAttr() |
FClose() | FClose() |
FCount() | FCount() |
FCreate() | FCreate() |
FErase() | FErase() |
FError() | FError() |
FExists() | FExists() |
FieldBlock() | FieldBlock() |
FieldGet() | FieldGet() |
FieldInfo() | FieldInfo() |
FieldName() | FieldName() |
FieldPos() | FieldPos() |
FieldPut() | FieldPut() |
FieldWBlock() | FieldWBlock() |
File() | File() |
FIND | FIND |
FkLabel() | FkLabel() |
FkMax() | FkMax() |
FLock() | FLock() |
FOpen() | FOpen() |
Found() | Found() |
FRead() | FRead() |
FReadStr() | FReadStr() |
FRename() | FRename() |
FSeek() | FSeek() |
FSize() | FSize() |
FWrite() | FWrite() |
GetActive() | GetActive() |
GetApplyKey() | GetApplyKey() |
GetDoSetkey() | GetDoSetkey() |
GetEnableEvents() | GetEnableEvents() |
Getenv() | Getenv() |
GetEventReader() | GetEventReader() |
GetHandleEvent() | GetHandleEvent() |
GetKillActive() | GetKillActive() |
GetList() | GetList() |
GetListPos() | GetListPos() |
GetNew() | GetNew() |
GetObject() - Returns a reference to an existing COM/ActiveX component. | |
GetParentForm() - Get parent form of an Xbase Part. | |
GetPostValidate() | GetPostValidate() |
GetPreValidate() | GetPreValidate() |
GetReader() | GetReader() |
GetToMousePos() | GetToMousePos() |
GetUniqueFileName() - Creates a unique name for a file. | |
GO | GO |
GraArc() | GraArc() |
GraBitBlt() | GraBitBlt() |
GraBox() | GraBox() |
GraError() | GraError() |
GraGetRGBIntensity() | GraGetRGBIntensity() |
GraIsRGBColor() | GraIsRGBColor() |
GraLine() | GraLine() |
GraFocusRect() - Draws a rectangle using imagery that denotes input focus. | |
GraCaptionStr() - Draws a caption. | |
GraMakeRGBColor() | GraMakeRGBColor() |
GraMarker() | GraMarker() |
GraPathBegin() | GraPathBegin() |
GraPathClip() | GraPathClip() |
GraPathEnd() | GraPathEnd() |
GraPathFill() | GraPathFill() |
GraPathOutline() | GraPathOutline() |
GraPos() | GraPos() |
GraQueryTextBox() | GraQueryTextBox() |
GraRotate() | GraRotate() |
GraScale() | GraScale() |
GraSegClose() | GraSegClose() |
GraSegDestroy() | GraSegDestroy() |
GraSegDraw() | GraSegDraw() |
GraSegDrawMode() | GraSegDrawMode() |
GraSegFind() | GraSegFind() |
GraSegOpen() | GraSegOpen() |
GraSegPickResolution() | GraSegPickResolution() |
GraSegPriority() | GraSegPriority() |
GraSetAttrArea() | GraSetAttrArea() |
GraSetAttrLine() | GraSetAttrLine() |
GraSetAttrMarker() | GraSetAttrMarker() |
GraSetAttrString() | GraSetAttrString() |
GraSetColor() | GraSetColor() |
GraSetFont() | GraSetFont() |
GraSpline() | GraSpline() |
GraStringAt() | GraStringAt() |
GraTranslate() | GraTranslate() |
HardCR() | HardCR() |
Header() | Header() |
I2bin() | I2bin() |
If() | IIf() | If() | IIf() |
NullIf() - Returns a NIL/NULL value if the two specified expression values are equivalent | |
INDEX | INDEX |
IndexExt() | IndexExt() |
IndexKey() | IndexKey() |
IndexOrd() | IndexOrd() |
Inkey() | Inkey() |
INPUT | INPUT |
Int() | Int() |
IsAlpha() | IsAlpha() |
IsColor() | IsColor() |
IsDebug() | IsDebug() |
IsDigit() | IsDigit() |
IsFieldVar() | IsFieldVar() |
IsFunction() | IsFunction() |
IsLower() | IsLower() |
IsMemberVar() | IsMemberVar() |
IsMemvar() | IsMemvar() |
IsMethod() | IsMethod() |
IsNull() - Tests if an expression evaluates to NULL/NIL. | |
IsPrinter() | IsPrinter() |
IsThemeActive() - Tests whether Windows Themes are enabled. | |
IsUpper() | IsUpper() |
JOIN | JOIN |
KEYBOARD | KEYBOARD |
L2bin() | L2bin() |
LABEL FORM | LABEL FORM |
LastAppEvent() | LastAppEvent() |
LastKey() | LastKey() |
LastRec() | LastRec() |
LChar2Var() | LChar2Var() |
Left() | Left() |
Len() | Len() |
Like() - Determines if a character expression matches another character expression. | |
LoadResource() | LoadResource() |
LocaleConfigure() | LocaleConfigure() |
LIST | LIST |
LOCATE | LOCATE |
Log() | Log() |
Lower() | Lower() |
LTrim() | LTrim() |
LUpdate() | LUpdate() |
Max() | Max() |
MaxCol() | MaxCol() |
MaxRow() | MaxRow() |
MemoEdit() | MemoEdit() |
MemoLine() | MemoLine() |
MemoRead() | MemoRead() |
Memory() | Memory() |
MemoTran() | MemoTran() |
MemoWrit() | MemoWrit() |
MemvarBlock() | MemvarBlock() |
MENU TO | MENU TO |
Min() | Min() |
MlCount() | MlCount() |
MlCtoPos() | MlCtoPos() |
MlPos() | MlPos() |
Mod() | Mod() |
Month() | Month() |
MPostoLc() | MPostoLc() |
MsgBox() | MsgBox() |
NetErr() | NetErr() |
Netname() | Netname() |
NextAppEvent() | NextAppEvent() |
NextKey() | NextKey() |
NoSnow() | NoSnow() |
NOTE | NOTE |
NumButtons() | NumButtons() |
OrdBagExt() | OrdBagExt() |
OrdBagName() | OrdBagName() |
OrdCondSet() | OrdCondSet() |
OrdCount() | OrdCount() |
OrdCreate() | OrdCreate() |
OrdDestroy() | OrdDestroy() |
OrdFor() | OrdFor() |
OrdInfo() - Sets or returns information about an order/index | |
OrdIsCandidate() - Checks if an order is an candidate order | |
OrdIsCustom() - Checks if a order is a Custom order. | |
OrdIsDescend() | OrdIsDescend() |
OrdIsSubIndex() - Checks if a order is a SubIndex order | |
OrdIsUnique() | OrdIsUnique() |
OrdKey() | OrdKey() |
OrdKeyAdd() - Manually add key value to a custom order | |
OrdKeyNo() | OrdKeyNo() |
OrdKeyRemove() - Manually remove key value from a custom order | |
OrdList() | OrdList() |
OrdListAdd() | OrdListAdd() |
OrdListClear() | OrdListClear() |
OrdListRebuild() | OrdListRebuild() |
OrdName() | OrdName() |
OrdNumber() | OrdNumber() |
OrdSetCustom() - Transforms an existing order to a custom order for manual key manipulation | |
OrdSetfocus() | OrdSetfocus() |
OrdWildSeek() - Search for a single or subset of records matching a specific wildcard pattern. | |
Os() | Os() |
OutErr() | OutErr() |
OutStd() | OutStd() |
PACK | PACK |
PadC() | PadL() | PadR() | PadC() | PadL() | PadR() |
PCol() | PCol() |
PCount() | PCount() |
PostAppEvent() | PostAppEvent() |
ProcLine() | ProcLine() |
ProcName() | ProcName() |
PRow() | PRow() |
PValue() | PValue() |
QOut() | QQOut() | QOut() | QQOut() |
QUIT | QUIT |
RAt() | RAt() |
READ | READ |
ReadExit() | ReadExit() |
ReadInsert() | ReadInsert() |
ReadKey() | ReadKey() |
ReadKill() | ReadKill() |
ReadModal() | ReadModal() |
ReadUpdated() | ReadUpdated() |
ReadVar() | ReadVar() |
RECALL | RECALL |
RecCount() | RecCount() |
RecNo() | RecNo() |
RecSize() | RecSize() |
RemoveDir() | RemoveDir() |
REINDEX | REINDEX |
RELEASE | RELEASE |
RENAME | RENAME |
REPLACE | REPLACE |
Replicate() | Replicate() |
ShellLinkResolve() - Resolves a link object of the Windows Shell. | |
REPORT FORM | REPORT FORM |
RESTORE | RESTORE |
RESTORE SCREEN | RESTORE SCREEN |
RestScreen() | RestScreen() |
Right() | Right() |
RLock() | RLock() |
Round() | Round() |
Row() | Row() |
RTrim() | RTrim() |
RUN | RUN |
RunRexx() | RunRexx() |
RunShell() | RunShell() |
SAVE | SAVE |
SAVE SCREEN | SAVE SCREEN |
SaveScreen() | SaveScreen() |
Scroll() | Scroll() |
Seconds() | Seconds() |
SEEK | SEEK |
SELECT | SELECT |
Select() | Select() |
SET ALTERNATE | SET ALTERNATE |
SET BELL | SET BELL |
SET CENTURY | SET CENTURY |
SET CHARSET | SET CHARSET |
SET COLLATION | SET COLLATION |
SET COLOR | SET COLOR |
SET CONFIRM | SET CONFIRM |
SET CONSOLE | SET CONSOLE |
SET CURSOR | SET CURSOR |
SET DATE | SET DATE |
SET DECIMALS | SET DECIMALS |
SET DEFAULT | SET DEFAULT |
SET DELETED | SET DELETED |
SET DELIMITERS | SET DELIMITERS |
SET DEVICE | SET DEVICE |
SET EPOCH | SET EPOCH |
SET ESCAPE | SET ESCAPE |
SET EXACT | SET EXACT |
SET EXCLUSIVE | SET EXCLUSIVE |
SET FILTER | SET FILTER |
SET FIXED | SET FIXED |
SET FORMAT | SET FORMAT |
SET FUNCTION | SET FUNCTION |
SET INDEX | SET INDEX |
SET INTENSITY | SET INTENSITY |
SET KEY | SET KEY |
SET LEXICAL | SET LEXICAL |
SET MARGIN | SET MARGIN |
SET MESSAGE | SET MESSAGE |
SET NULLVALUE - Enables/Disables NULL/NIL values for fields | |
SET OPTIMIZE | SET OPTIMIZE |
SET ORDER | SET ORDER |
SET PATH | SET PATH |
SET PRINTER | SET PRINTER |
SET PROCEDURE | SET PROCEDURE |
SET RELATION | SET RELATION |
SET RUSHMORE | SET RUSHMORE |
SET SCOPE | SET SCOPE |
SET SCOREBOARD | SET SCOREBOARD |
SET SMARTFILTER | SET SMARTFILTER |
SET SOFTSEEK | SET SOFTSEEK |
SET TIME | SET TIME |
SET TYPEAHEAD | SET TYPEAHEAD |
SET UNIQUE | SET UNIQUE |
SET WRAP | SET WRAP |
Set() | Set() |
SetAppEvent() | SetAppEvent() |
SetAppFocus() | SetAppFocus() |
SetAppWindow() | SetAppWindow() |
SetBlink() | SetBlink() |
SetCancel() | SetCancel() |
SetClipRect() | SetClipRect() |
SetCollation() | SetCollation() |
SetCollationTable() | SetCollationTable() |
SetColor() | SetColor() |
SetCursor() | SetCursor() |
Setenv() | Setenv() |
SetKey() | SetKey() |
SetLexRule() | SetLexRule() |
SetLocale() | SetLocale() |
SetMode() | SetMode() |
SetMouse() | SetMouse() |
SetPos() | SetPos() |
SetPrc() | SetPrc() |
SetTimerEvent() | SetTimerEvent() |
SKIP | SKIP |
Sleep() | Sleep() |
SORT | SORT |
Soundex() | Soundex() |
Space() | Space() |
Sqrt() | Sqrt() |
StoD() | StoD() |
STORE | STORE |
Str() | Str() |
StrTran() | StrTran() |
StrZero() | StrZero() |
Stuff() | Stuff() |
SubStr() | SubStr() |
SymbolInfo() | SymbolInfo() |
SUM | SUM |
TBApplyKey() | TBApplyKey() |
TBColumnNew() | TBColumnNew() |
TBHandleEvent() | TBHandleEvent() |
TBrowseDb() | TBrowseDb() |
TBrowseNew() | TBrowseNew() |
TBtoMousePos() | TBtoMousePos() |
TEXT | TEXT |
ThreadID() | ThreadID() |
ThreadInfo() | ThreadInfo() |
ThreadObject() | ThreadObject() |
ThreadWait() | ThreadWait() |
ThreadWaitAll() | ThreadWaitAll() |
Time() | Time() |
Tone() | Tone() |
TOTAL | TOTAL |
Transform() | Transform() |
Trim() | Trim() |
TYPE | TYPE |
Type() | Type() |
U2bin() | U2bin() |
UNLOCK | UNLOCK |
UPDATE | UPDATE |
Updated() | Updated() |
Upper() | Upper() |
USE | USE |
Used() | Used() |
Val() | Val() |
Valtype() | Valtype() |
Var2Bin() | Var2Bin() |
Var2Char() | Var2Char() |
Var2LChar() | Var2LChar() |
Version() | Version() |
W2bin() | W2bin() |
WAIT | WAIT |
Word() | Word() |
WorkSpaceEval() | WorkSpaceEval() |
WorkSpaceList() | WorkSpaceList() |
Year() | Year() |
ZAP | ZAP |
Presentation Parameters for Xbase Parts | Параметры представления для Xbase Parts |
Generic presentation parameters | Общие параметры представления |
Special presentation parameters | Специальные параметры предствления |
Environment variables | Переменные среды |
Compiler warnings and error messages | Предупреждения компилятора и сообщения об ошибках |
Category - Information (XBT0020 to XBT0099) | Категория - Информация (XBT0020 to XBT0099) |
Category - Warning (XBT0100 to XBT0199) | Категория - Предупреждение (XBT0100 to XBT0199) |
Category - Error (XBT0200 to XBT0499) | Категория - Ошибка (XBT0200 to XBT0499) |
Category - Preprocessor (starting at XBT0501) | Категория - Препроцессор (начиная с XBT0501) |
Linker warnings and error messages | Предупреждения компоновщика и сообщения об ошибках |
Category - Warning (ALK1000 to ALK1999) | Категория - Предупреждение (ALK1000 to ALK1999) |
Category - Error (ALK2000 and higher) | Категория - Ошибка (ALK2000 и выше) |
Error codes of the Xbase++ runtime system | Коды ошибок Xbase++ текущей системы |
Error codes | Коды ошибок |
Key Words and Functions | Ключевые слова и функции |
Reserved key words | Зарезервированные ключевые слова |
Functions for text mode applications | Функции для приложений в текстовом режиме |
Event Constants | Константы событий |
Mouse events | События мыши |
Standard events | Стантартные события |
Inkey constants | Inkey константы |
Function keys | Функциональные клавиши |
Numeric keypad | Цифровая клавиатура |
Graphic constants | Графические константы |
GRA_CLR_ | GRA_CLR_ |
GRA_FGMIX_ | GRA_FGMIX_ |
GRA_BGMIX_ | GRA_BGMIX_ |
GRA_SYM_ | GRA_SYM_ |
GRA_LINEWIDTH_ | GRA_LINEWIDTH_ |
GRA_LINETYPE_ | GRA_LINETYPE_ |
GRA_MARKSYM_ | GRA_MARKSYM_ |
GRA_CHDIRN_ | GRA_CHDIRN_ |
GRA_HALIGN_ | GRA_HALIGN_ |
GRA_VALIGN_ | GRA_VALIGN_ |
GRA Error codes | Коды ошибок GRA |
Constants for Database Engines | Константы для DBE |
DBE_ | DBE_ |
DBO_ | DBO_ |
FLD_ | FLD_ |
XPP_ | XPP_ |
Specific constants for Database Engines | Специфические константы для механизмов БД |
DBFDBE_ | DBFDBE_ |
DBFDBO_ | DBFDBO_ |
FOXDBE_ | FOXDBE_ |
FOXDBO_ | FOXDBO_ |
SDFDBE_ | SDFDBE_ |
DELDBE_ | DELDBE_ |
DELDBE_MODE | DELDBE_MODE |
Copyright remarks | Авторские права |
Changes since Xbase++ 1.80.284 | Изменения, внесенные после Xbase++ 1.80.284 |
Changes since Xbase++ 1.82.294 |
Ниже приведено оглавление русскоязычной документации к Alaska ADS-DBE v.1.9:
Installation | Установка |
About Client/Server Concepts | О концепции клиент-сервер. |
The ADS DatabaseEngine | ADS механизм базы данных |
Limitations of the Advantage Database Server | Ограничения ADS |
Using the ADSDBE | Использование ADSDBE |
Transaction processing | Обработка транзакций |
Configuration of the ADSDBE | Конфигурация ADSDBE |
ADSDBE and DbInfo() | ADSDBE и DbInfo() |
Inquiring information about the ADS | Запрос информации об ADS |
Command reference | Информация о командах |
APPEND FROM | APPEND FROM |
COPY TO | COPY TO |
SET AXS LOCKING | SET AXS LOCKING |
SET RIGHTS CHECKING | SET RIGHTS CHECKING |
SET PASSWORD TO | SET PASSWORD TO |
ADS function reference | Справочная информация о функциях ADS |
AX_AXSLocking() | AX_AXSLocking() |
AX_DBFDecrypt() | AX_DBFDecrypt() |
AX_DBFEncrypt() | AX_DBFEncrypt() |
AX_Decrypt() | AX_Decrypt() |
AX_Encrypt() | AX_Encrypt() |
AX_IDType() | AX_IDType() |
AX_RightsCheck() | AX_RightsCheck() |
AX_SetPass() | AX_SetPass() |
AX_TableType() | AX_TableType() |
Ниже приведён фрагмент русскоязычной документация к Alaska Xbase++ v.1.9:
Основы программирования баз данных
В этой главе описываются основы программирования баз данных. Здесь объясняются фундаментальные аспекты, а также наиболее важные термины, используемые в контексте баз данных и доступа к ним.
Что такое база данных
Создание базы данных
Сохранение данных
Рабочая область и псевдоним (Alias)
Рабочее пространство Xbase++
Указатель записей и поля базы данных
Что такое база данных
Теоретически термин «база данных» относится ко всему набору данных, принадлежащих одной проблемной области. Эти данные могут подразделяться на множество файлов. В контексте Xbase диалектов термин «база данных» используется при обсуждении индивидуальных файлов, которые существуют в файловом формате DBF. По этой исторической причине термин «база данных» используется в предлагаемой документации как синоним отдельного DBF файла.
Файловый формат DBF является основой для всех Xbase диалектов и позволяет напрямую управлять большими объемами данных. Данные внутри каждого DBF файла организованы в форме таблицы. Каждая колонка соотносится с полем базы данных (полем, для краткости), и каждый ряд (строка) соотносится с записью данных (записью). Заголовок (или верхняя строка) содержит имена полей, идентифицирующих поля. Следующая таблица иллюстрирует, как организованы данные внутри DBF файла.
Номер клиента Фамилия Имя Телефон
40001 King Michael (609)423-4567
40002 Fisher Fred (614)713-4578
50013 Anderson Robert (819)567-9832
50021 Long Barbara (402)715-4321
50043 Baker Christine (517)454-3356
50057 Kemper Joseph (414)234-5678
50100 Smith Richard (303)614-4321
В данном примере DBF файл (таблица) содержит семь записей (рядов). Каждая запись включает четыре поля (колонки). Каждое поле содержит специфическую информацию о клиенте.
В DBF файле структура таблицы определяется вместе с данными. Определение таблицы включает имена полей (заголовки колонок), длину полей (ширина колонок), тип данных и число десятичных разрядов для числовых полей. Файл содержит данные строго определенного типа, т.е. данные одной колонки всегда будут одного типа. Файловый формат DBF позволяет хранение всего пяти различных типов данных: символьные, обозначающие дату, логические, текстовые и числовые.
Первоначальное определение структуры DBF таблицы также можно сохранить в DBF таблице. Для использования подобным образом таблица должна содержать имя поля, тип данных поля, длину поля и число десятичных разрядов (всех четырех колонок вместе). Определение структуры таблицы для приведенного выше примера будет следующим:
FIELD_NAME FIELD_TYPE FIELD_LEN FIELD_DEC
Имя поля Тип поля Длина поля Десятичные разряды поля
Номер клиента (CUSTNO) C 8 0
Фамилия (LASTNAME) C 20 0
Имя (FIRSTNAME) C 20 0
Телефон (PHONE) C 15 0
Эта таблица содержит всю необходимую информацию, необходимую для описания структуры DBF файла. Каждая запись содержит определение одного поля. Заголовки колонок в этой таблице являются именами полей, так называемых DBF файлов с «расширенной структурой». DBF файл с расширенной структурой содержит определения полей для еще одного DBF файла. Определения полей заключают в себе определение структуры DBF файла и являются отправной точкой для использования базы данных.
Создание базы данных
DBF файл может быть создан только из структурного определения. В Xbase++ функции и команды, приведенные в списке ниже, могут быть использованы для создания этого определения:
Функции и команды для создания баз данных
Функция Команда
DbCreateExtStruct() CREATE
DbCreateFrom() CREATE FROM
DbCopyStruct() COPY STRUCTURE
DbCopyExtStruct() COPY STRUCTURE EXTENDED
DbCreate()
Первые четыре функции и команды в этой таблице существуют только по причинам совместимости и далее не используются. Создание DBF файла в Xbase++ должно происходить при помощи функции DbCreate(). DbCreate() принимает как параметр структурное определение для DBF файла в форме двухмерного массива. Это позволяет избежать «окружного» механизма использования файлов с расширенной структурой. Следующий код демонстрирует оптимальное использование функции DbCreate():
cFileName := "CUST.DBF"
aStructure := { { "CUSTNO" , "C", 8, 0 }, ;
{ "LASTNAME" , "C", 20, 0 }, ;
{ "FIRSTNAME" , "C", 20, 0 }, ;
{ "PHONE" , "C", 15, 0 } }
DbCreate( cFileName, aStructure )
Для DBF файла имя файла и его структура хранятся в переменных пересылаемых к функции DbCreate(). Файловая структура определяется в двухмерном массиве. Все поля в этом примере имеют символьный тип данных, идентифицированный при помощи буквы "C" (character). Длина полей составляет 8, 20, 20 и 15 символов соответственно, и все поля имеют 0 десятичных разрядов.
Имя поля может содержать максимум 10 символов. Это же правило применимо к именам полей, используемых для имен переменных. Первая буква должна быть алфавитным символом или символом подчеркивания, а все остальные символы должны быть алфавитно-цифровыми или символами подчеркивания.
Тип данных в поле определяется одной буквой. Как правило, это буквы "C" (character - символьный), "D" (date - обозначающий дату), "L"(logical - логический), "M" (memo) and "N" (numeric - числовой).
Character - символьный("C") Maximum 64 kBytes
Date - обозначающий дату("D") Always 8 Bytes
Logical - логический("L") Always 1 Byte
Memo - текстовый("M") Always 10 Bytes
Numeric - числовой("N") Maximum 19 Bytes
Memo поле всегда занимает 10 байт, но может содержать неограниченное количество символов. Это происходит из-за того, что содержание memo полей хранится в отдельном файле, называемом DBT файл.
Числовые поля могут содержать числа с максимальной длиной 19 позиций. Десятичное число и префикс занимают каждый по 1 байту. Самое большое число, которое может быть сохранено - 2^32-1, а максимальное количество десятичных разрядов – 15.
Сохранение данных
После того как DBF файл был создан с помощью DbCreate(), его нужно открыть, прежде чем данные смогут быть сохранены в нем или прочитаны. Следующая таблица дает представление о функциях и командах, которые могут быть использованы для простых операций с базой данных, типа «открыть», «закрыть», «создать запись» и «изменить содержание поля».
Функции и команды для простых операций с базой данных
Функция Команда Описание
DbUseArea() USE Открывает базу данных
DbAppend() APPENDBLANK Добавляет новую запись
FieldPut() REPLACE Изменяет содержание полей
DbCloseArea() CLOSE Закрывает базу данных
Программировать ли операции над базой данных, используя функции или команды, - дело личных предпочтений программиста. Во время работы программы нет разницы между операциями над базой данных, которые запрограммированы посредством команд и теми, что запрограммированы посредством функций. Во многих случаях легче работать с синтаксисом командного языка. Следующий программный код (программа) показывает операции с использованием командного синтаксиса.
USECustomer // открыть базу данных
APPENDBLANK // добавить запись
REPLACE CustNo WITH " 50112" , ; // ввести данные в
LastName WITH "Miller" , ; // поля новой
FirstName WITH "Karl" , ; // записи
Phone WITH "(713)517-6554"
CLOSECustomer // закрыть базу данных
В этом примере новая запись добавляется к базе данных, содержащей клиентскую информацию. Те же операции представлены ниже, но уже с использованием синтаксиса функций:
DbUseArea(, , "Customer") // открыть базу данных
DbAppend() // добавить запись
FieldPut( 1 , " 50112") // ввести данные в
FieldPut( 2 , "Miller" ) // поля новой
FieldPut( 3 , "Karl" ) // записи
FieldPut( 4 , "(713)517-6554" )
DbCloseArea() // закрыть базу данных
In this example, the customer data is written into the database using the function FieldPut() which identifies the field by its ordinal position. In doing this, the program code loses clarity. A better solution, in this case, is to address the fields by the alias name FIELD and perform direct assignments:
В этом примере клиентские данные записываются в базу данных с использованием функции FieldPut(), которая идентифицирует поле по его порядковой позиции. Но таким образом программный код теряет ясность. Лучшим решением в данном случае будет адресовать (обозначить) поля псевдонимом FIELD и выполнять прямые задания:
DbUseArea(, , "Customer") // открыть базу данных
DbAppend() // добавить запись
FIELD->CustNo := " 50112" // ввести данные
FIELD->LastName := "Miller" // в поля новой
FIELD->FirstName := "Karl" // записи
FIELD->Phone := "(713)517-6554"
DbCloseArea() // закрыть базу данных
Наряду с этими элементарными операциями над базой данных Xbase++ предусматривает множество функций, которые могут быть использованы для получения информации о базе данных или индивидуальных полях. База данных должна быть открыта для использования представленных ниже функций:
Функции, которые возвращают информацию о базе данных.
Функция Описание
Header() Возвращает длину заголовка файла в байтах.
RecSize() Возвращает длину записи в байтах.
RecCount() Возвращает число записей в файле
LastRec() Возвращает число записей в файле
LUpdate() Возвращает дату последнего доступа для записи
Эти функции могут быть использованы для вычисления файлового размера базы данных (функции RecCount() и LastRec() обеспечивают то же значение). Формула для вычисления размера базы данных такова:
(RecSize() * LastRec()) + Header() + 1
This formula is frequently used, along with the function DiskSpace(), during backup routines to determine whether a DBF file fits on the target drive where it is to be copied.
Information about fields are very important in database programming. Not only are the contents of a field used when processing data, but the data type, ordinal position within the DBF file and the name of a field can also be used. For example, this information becomes useful when writing generic, or data-driven read/write routines.
Эта формула часто используется, наряду с функцией DiskSpace(), во время операций по резервному дублированию, для того чтобы определить поместится ли DBF файл на диск, куда его нужно скопировать.
Информация о полях очень важна в программировании баз данных. В процессе обработки данных используется не только содержание поля, но и тип данных, порядковая позиция в DBF файле, а также имя поля. Например, эта информация становится полезной во время записи общих или управляемых данными операций записи – считывания.
Функции, возвращающие информацию о полях базы данных
Функция Описание
FCount() Возвращает число полей в файле
FieldName() Возвращает имя поля, основанное на порядковой позиции
FieldPos() Возвращает порядковую позицию поля, основанного на имени поля
FieldGet() Возвращает содержание поля, основанного на порядковой позиции
Type() Возвращает тип данных поля, основанного на имени
DbStruct() Возвращает файловую структуру как двухмерный массив
Следующая программа представляет собой пример с использованием некоторых функций из этой таблицы. Эта программа включает две определяемых пользователем функции. Одна из них считывает все поля записи в массив, а другая записывает массив назад в файл. Это общепринятая техника программирования для буферизованного редактирования записей, она часто используется в программах, создаваемых для множества пользователей в рамках сети:
PROCEDURE Main
LOCAL aRecord := ReadRecord() // прочитать запись
// <edit data>
IFRLock() // заблокировать запись
WriteRecord( aRecord ) // записать запись
DbUnlock() // разблокировать запись
ENDIF
RETURN
FUNCTION ReadRecord() // прочитать запись
RETURN AEval( Array( FCount() ), {|x,i| x:= FieldGet(i) },,, .T. )
FUNCTION WriteRecord( aRecord ) // записать запись
RETURN AEval( aRecord, {|x,i| FieldPut(i, x) } )
Рабочая область и псевдоним (Alias)
В программировании баз данных скорее правилом, нежели исключением, является тот факт, что программа-приложение использует множество баз данных (DBF файлов) одновременно. Доступ к различным базам данных осуществляется посредством рабочих областей во время работы программы. Рабочая область идентифицируется числовым индексом и имеет два различных состояния, свободное и используемое. Если база данных открыта в рабочей области командой USE, рабочая область используется. Только одна база данных может быть открыта в рабочей области, и доступ к базе данных может происходить только в выбранной – или текущей – рабочей области. В программировании баз данных рабочие области играют центральную роль, поскольку они инкапсулируют (герметизируют) доступ к базам данных.
Когда база данных открыта, рабочая область получает символический идентификатор: псевдоним. Если псевдоним не специфицирован эксплицитно, он имплицитно создается на основе имени файла базы данных.
Функции для рабочих областей
Функция Описание
Select() Возвращает номер рабочей области
Used() Определяет, используется ли рабочая область
Alias() Возвращает псевдоним рабочей области.
Информация из различных рабочих областей может быть извлечена при помощи псевдоним-оператора (alias) (->) и номера рабочей области, или ее псевдонима. Кроме того, к полям множества (многокомпонентных) баз данных доступ осуществляется через ссылку на псевдоним. Обращение к рабочим областям посредством псевдонимов – фундаментальная операция и часто используется в программировании с многокомпонентными базами данных или рабочими областями, соответственно. Далее иллюстрируются некоторые базовые операции:
PROCEDURE Main
? Select() // результат: 1
? Used() // результат: .F.
? Alias() // результат: "" (пустая строка)
USECustomer // Открыть базу данных без псевдонима
USEInvoice ALIASInv NEW // Открыть базу данных в новых рабочих
USE Orders ALIAS Ord NEW // областях с псевдонимами
? Select() // результат: 3
? Used() // результат: .T.
? Alias() // результат: Ord
? (1)->(Alias()) // результат: Customer
? (2)->(Alias()) // результат: Inv
? Customer->Lastname // результат: Miller
? (2)->InvDate // результат: 06.12.1994
? Ord->(Select()) // результат: 3
RETURN
Эта программа демонстрирует наиболее важные аспекты использования многокомпонентных баз данных. В начале главной процедуры выбирается номер рабочей области 1, это текущая рабочая область. Поскольку изначально не было открыто ни одной базы данных, функция Used() возвращает значение .F. (false) и псевдоним первой рабочей области пустая строка (""). Только после того, как была открыта база данных командой USE, рабочая область получает псевдоним. Функция Used() возвращает значение.T. (true), что означает использование текущей рабочей области. Если команда USE программируется с опцией NEW, она сначала выбирает новую рабочую область, а затем открывает базу данных. Следовательно, возвратное значение функции Select() теперь 3, а не 1, как при первом вызове. Три базы данных открыты, и третья рабочая область является текущей. Ее псевдоним "Ord".
Когда функция вызывается без ссылки на псевдоним, она выполняется в текущей рабочей области. Ссылка на псевдоним делает возможным выполнение функции в соответствующей рабочей области (точнее соответствующая рабочая область временно становится текущей, в ней выполняется функция, а затем снова выбирается предыдущая рабочая область). Вызов функции (1)->(Alias()) возвращает псевдоним первой рабочей области. Именно строка "Customer" (клиент) была имплицитно создана на основе имени файла.
Пример также показывает различия в синтаксисе, которые требуются для псевдоним-ссылок на поля базы данных (или символов) и вызовов функций (или выражений). Если выражение появляется на правой стороне псевдоним-оператора, оно должно быть написано в скобках. Символ программируется без скобок. С левой стороны псевдоним-оператора скобки должны быть использованы, когда число или переменная используется вместо литерального имени псевдонима. Следовательно, ссылки на псевдоним могут быть закодированы разными способами:
cAlias := "Customer"
nArea := 1
xValue := Customer->Lastname // Ссылка псевдонима на переменную поля
xValue := (1)->Lastname
xValue := (cAlias)->Lastname
xValue := (nArea)->Lastname
xValue := Customer->(Select()) // Выполнить выражение в
xValue := (1)->(Select()) // рабочей области
xValue := (cAlias)->(Select())
xValue := (nArea)->(Select())
Псевдонимы рабочих областей всегда гарантированно уникальны, также как и номера рабочих областей. Если какой-нибудь файл базы данных открывается много раз в различных рабочих областях, то каждая рабочая область получит свой псевдоним, ссылаясь на одну и ту же физическую базу данных.
USE Customer NEW
USE Customer NEW
USE Customer ALIAS Cust NEW
USE Customer ALIAS Cust NEW
? (1)->(Alias()) // результат: Customer
? (2)->(Alias()) // результат: Customer_2
? (3)->(Alias()) // результат: Cust
? (4)->(Alias()) // результат: Cust_4
Если осуществляется попытка использовать псевдоним более одного раза, Xbase++ имплицитно создает уникальный идентификатор, добавляя подчеркивание и номер рабочей области к оригинальному псевдониму.
Рабочее пространство Xbase++
Концепция рабочих областей существует в каждом Xbase диалекте. Она продолжается в Xbase++ понятием рабочего пространства, которое обеспечивает более высокий уровень абстракции для рабочих областей. Концепция рабочих пространств может быть описана следующим образом:
- Рабочее пространство содержит рабочие области.
- Число рабочих областей внутри рабочего пространства ограничено до 65 000.
- Рабочее пространство определяет текущую рабочую область. Все операции с базой данных, запрограммированные без ссылки на псевдоним, выполняются в этой рабочей области.
- Выбор текущей рабочей области – это операция с рабочим пространством. Каждое рабочее пространство всегда имеет одну текущую рабочую область.
- Каждый поток (тред) имеет по меньшей мере одно рабочее пространство.
Рабочее пространство – контейнер для рабочих областей и дает возможность во время рабочего цикла открывать несколько баз данных. Доступ к полям баз данных в программе происходит согласно иерархической модели, описываемой ниже:
Рабочее пространство Одно рабочее пространство на каждый поток.
|
|- Рабочая область Максимум 65 000 рабочих областей в одном рабочем пространстве.
|
|- Псевдоним Ссылается на открытую базу данных.
|
|- Имя поля Ссылается на поле базы данных (переменную поля)
Рабочее пространство и содержащиеся в нем рабочие области всегда существуют во время работы программы, вне зависимости от того открыты ли базы данных. Фундаментальная операция в рабочем пространстве – выбор текущей рабочей области. Если рабочая область не используется, ее можно выбрать по номеру. Номер от 1 до 65 000 пересылается команде SELECT или функции DbSelectArea() для того, чтобы выбрать определенную рабочую область как текущую. В качестве альтернативы значение 0 (ноль) может быть специфицировано. Это делает следующую свободную рабочую область с наименьшим номером текущей. Например:
PROCEDURE Main
USE Customer
? Select() // результат: 1
SELECT 100
? Select() // результат: 100
SELECT 0
? Select() // результат: 2
RETURN
В примере в начале программы выбирается рабочая область 1, и открывается база данных CUSTOMER.DBF при помощи команды USE в первой рабочей области. Затем выбирается рабочая область 100, и она становится текущей. В конце командой SELECT 0 выбирается следующая свободная рабочая область. Она имеет порядковый номер 2.
Когда база данных открывается в рабочей области, она может быть выбрана не только по номеру, но и по псевдониму. Псевдоним – это символическое имя, которое намного облегчает программирование при работе с несколькими базами данных:
PROCEDURE Main
USE Customer
USE Invoice NEW
USE Parts NEW
? Select() // результат: 3
? Alias() // результат: Parts
SELECT 2
? Alias() // результат: Invoice
SELECT Customer
? Select() // результат: 1
DbCloseAll() // Закрыть все базы данных
RETURN
В этом примере открыты три базы данных в трех различных рабочих областях. Пример демонстрирует, как выбирать базу данных, используя номер или псевдоним. В конце все базы данных закрываются.
Операции в одном рабочем пространстве.
Вызов функции DbCloseAll() является примером для функций, которые выполняют операции в рабочем пространстве. Это влияет на все используемые рабочие области, а не только на свободные. В Xbase++ существует набор функций, которые оперируют на одном рабочем пространстве и выполняют операции с одной рабочей областью или всеми используемыми рабочими областями. В следующей таблице приводятся эти функции:
Функции и команды для одного рабочего пространства
Функция |
Команда |
Описание |
Влияет на одну рабочую область |
||
DbSelectArea() |
SELECT |
Выбирает текущую рабочую область |
Влияет на все используемые рабочие области |
||
DbCloseAll() |
CLOSE ALL |
Закрывает файлы базы данных |
DbCommitAll() |
COMMIT |
Записывает буферы (buffers) перманентно на диск |
DbUnlockAll() |
UNLOCK |
Разблокирует запись и файловые блокировки |
WorkspaceEval() |
|
Вычисляет фрагмент программы во всех используемых рабочих областях |
WorkspaceList() |
|
Возвращает псевдонимы всех используемых рабочих областей в массиве |
Функция WorkspaceEval(), представленная в таблице, самая действенная, так как она вычисляет фрагмент программы во всех используемых рабочих областях. Все функции Db...All() не могут с ней соперничать.
Операции между двумя рабочими пространствами
В Xbase++ рабочее пространство привязано к потоку. Как следствие этого, рабочие области также являются потоковыми, локальными ресурсами, так как они содержатся в рабочем пространстве. Это в свою очередь подразумевает, что база доступ к базе данных ограничивается до потока, где открывается база данных. Между тем, многопоточная программа должна быть способна получать доступ к базам данных с разных потоков. Этого можно достигнуть, либо открыв одну и ту же базу данных в разных потоках, либо обменявшись ссылкой на открытую базу данных между потоками и рабочими пространствами соответственно. Последней цели служат функции, представленные ниже:
Функции для множественных рабочих пространств.
Функция Описание
DbRelease() Переводит псевдоним рабочей области в нулевое пространство.
DbRequest() Переводит псевдоним из нулевого пространства в рабочую область.
В Xbase++ псевдоним – это ссылка на открытую базу данных. Может происходить обмен псевдонимом рабочей области между двумя рабочими пространствами. Пересылка псевдонимов вовлекает в работу виртуальное рабочее пространство, которое называется нулевым (Zerospace). Для обмена используются две функции DbRelease() и DbRequest():
USE Customer
? Used() // результат: .T.
DbRelease()
? Used() // результат: .F.
DbRequest()
? Used() // результат: .T.
CLOSECustomer
После вызова DbRelease() текущая рабочая область является свободной. Между тем, файл базы данных все еще открыт. Однако ссылки на базу данных (псевдонима) больше не существует в текущем рабочем пространстве. Он переведен в нулевое пространство и может быть переведен назад в рабочую область рабочего пространства посредством вызова функции DbRequest(). По окончании работы DbRequest() рабочая область снова получает псевдоним и снова используется. Важно понимать, что файл базы данных остается открытым во время всех этих операций. Только ссылка на открытый файл изменяет его место: из текущего рабочего пространства он переводится в нулевое пространство и назад к тому же или другому рабочему пространству.
-