Рейтинг:  3 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда не активнаЗвезда не активна
 

 

Нашей фирмой предлагается русскоязычная документация к 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++ понятием рабочего пространства, которое обеспечивает более высокий уровень абстракции для рабочих областей. Концепция рабочих пространств может быть описана следующим образом:

 

  1. Рабочее пространство содержит рабочие области.
  2. Число рабочих областей внутри рабочего пространства ограничено до 65 000.
  3. Рабочее пространство определяет текущую рабочую область. Все операции с базой данных, запрограммированные без ссылки на псевдоним, выполняются в этой рабочей области.
  4. Выбор текущей рабочей области – это операция с рабочим пространством. Каждое рабочее пространство всегда имеет одну текущую рабочую область.
  5. Каждый поток (тред) имеет по меньшей мере одно рабочее пространство.

 

 

Рабочее пространство – контейнер для рабочих областей и дает возможность во время рабочего цикла открывать несколько баз данных. Доступ к полям баз данных в программе происходит согласно иерархической модели, описываемой ниже:

 

   Рабочее пространство              Одно рабочее пространство на каждый поток.

    |

    |- Рабочая область     Максимум 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() рабочая область снова получает псевдоним и снова используется. Важно понимать, что файл базы данных остается открытым во время всех этих операций. Только ссылка на открытый файл изменяет его место: из текущего рабочего пространства он переводится в нулевое пространство и назад к тому же или другому рабочему пространству.

-