C-Rover Software C-Rover Software




DM Tutorial





English Russian

Data Manager Tutorial

In case you have a problem working with Data Manger or Demo version, if you see a lack of Data Manager functionality, if working with it looks inconvenient for you in some aspects - please let us know using our feedback page. First, we'll do our best to answer you without delays and, second, we will take in account all your proposals while developing new Data Manager versions.

Data Manager purpose

Data Manager is a set of products to collect, process, analize, and present data basing on common table and database handling technology. Data Manager product line may be changed to react on market conditions, so this tutorial is focusing not on concrete products but on Data Manager functionality groups :

  • Function supporting database general functionality
  • Web data handling, in-product specialized web browser
  • Table data handling - testing, analisys, processing; data import from different sources
  • Datasets handling, data access forms creation and usage
  • Query system functionality
  • Data view screen forms (panels) creation, specialized HTML-editor
  • Database connection, tables description
  • Setting and administration, creation of user-defined Data Manager applications

These functional groups will be considered in details below.

Go to top of the page

Tables: Data input and Data editing

My Datasets

My Datasets By clicking the "My Datasets" button the user can select and open one of his Datasets.

Data Access Forms for dataset

This dataset is presented on the screen as a table. Data can be entered into the table or edited directly inside the table cells. The table structure, data filtering and sorting options are available according to selected Data Access Form assigned to the dataset.

Data Access Form defines options related with data sorting and filtering, and also defines the list and the order of table columns presented for the dataset. It is possible for different user's needs to work with different sets of columns of the same table, or to provide the end user with a variety of ways to manipulate with table data using several different Data Access Forms for the same dataset.

Data Access Forms are presented in the system by files with the ".VME" extention.

Tipically the first Data Access Form is created by the system automatically during the dataset creation. This default Data Access Form present the entire dataset (all table columns) without any filtering or sorting. The default Data Access Form for dataset can be easily changed (edited) as needed. It is possible also to create any amount of additional Data Access Forms for the dataset.

To select Data Access Form for the Dataset the control box in the top of the dataset dialog window is to be used.

Go to top of the page

Sorting, filtering and editing controls on Dataset window

When the user opens Data Access Form (opens dataset) Data Manager selects in the dataset table all columns and rows which have to be presented. It also performs data sorting, downloads dictionary files connected with the dataset. In case the table is big enough this may take some time so that data in the dialog window may be displayed with some delay, not just after clicking on the "Open Dataset" button or selecting new Data Access Form.

In the left top corner of the window, just below the "Save current dialog settings" button, there is the "Show/Hide filtering and sorting controls" button. In case you click on this button the dialog window will look like the following :

In the upper side of the window special filering and sorting controls areas will appear.

In the bottom half of the screen the data table is located. The table fits to the window size - its size is changing just after changing the window size. So it is possible to maximize window to see more data on it.

The upper table row - header line - holds column names. It can be also used to change the width of columns: put the mouse on the vertical line between columns and drag it on the left or on the right to change the column width.

Column widths settings (and also current state of sorting and filtering controls) can be saved - just click on the "Save current dialog settings" button.

Above the table, on the right side there are two counters. The first counter shows the total number of records in the table, the another one indicates currently selected record number. The selected record is just a record available for editing at the moment. To select record the user shoud click on this record.

The rest of the line above the table (the center and left side of the screen) contains buttons used for displaying dataset components. In general there are following components connected with dataset :

  • Panels (Records views). Panels are used for line-by-line view and editing table data. Panel typically contains current record data which are presented by the most sutable way to perform some specialized actions for the record. For example it could be some screen view form for data input. Or panels can be used to present record data in a way sutable for printing as a formal document. The "Record" button is used to select and show panels defined for the dataset.

  • Data Access Forms. As noticed earlier - Data Access Form defines which columns should be presented on the screen and the order of these columns. It specifies also selection conditions (filers) for rows and row sortiong options. The "Data" button allows to display in a separate window a copy of the currently selected Data Access Form, so that the user can select another data access form in the main window and so have a deal on the screen with two different dataset presentation at the same time.

  • Query Forms are defined to provide different ways of data selection and totals calculations for the dataset. The "Query" button is used to select and display in a seperate window one of the query forms defined for dataset.

  • Auxilary Tables. It is possible to define one or several auxilary tables connected with the main dataset table. These tables represent data connected with separate main table records. For example if records in the the main table represent artist - some auxilary table could present masterpieses made by each of these artists. So auxilary table represent additional data connected with main table records. The "Tables" button is used to select and display auxilary table connected with dataset.

At the left top corner of the dataset window (above filtering control) there are 3 buttons. We have already mentioned the most left button "Save current dialog settings". On the left the "Edit Dataset propoerties" button is located. This button is to open dialog window which controls dataset components - data access forms, query forms, panels, auxilary tables. It is possible in this dialog to select needed component and call corresponding editor to change its propeties. It is also possible here to create new components.

The "Edit Table structure" button with pencil is used to change main dataset table structure - add or delete columns, change column names or data types.

On the left side of the dataset dialog window near left table side there are buttons for table editing -

  • "Delete current record",
  • "Add a copy of current record into the table",
  • "Add new record into the table".

These buttons perform corresponding operations on table records.

At the left bottom corner there is "Enter data from Internet" button. By clicking on this button it is possible to open specialized web browser which provides data input into the table directly from web pages.

Go to top of the page

Data sorting

Table records sorting can be performed by two different ways - via sorting control panel (group sorting), and by clicking on the title bar of the table (custom sorting by column).

Data sorting

Sorting control panel is located in the upper right side of the dataset window. It is used for group sorting of the table, i.e. table sorting by the values in a group of columns.

Strings of sorting panel contain names of table columns, by which the table sorting can be performed (multi-level sorting is allowed). Active columns (columns with sorting enabled) marked with "V" on the left and highlighted with yellow background. The left mouse button click on the control panel string changes the state of the string on the opposite, and thus, turns on or off sorting by that column.

The upper line of the sorting control panel is used to turn off all the sorting for the table.

The activation order of sorting control strings is impotant - at the beginning the sorting is performed for the first activated string (column), after that - for the second one and so on. To specify needed sorting order - turn off the sorting and then activate sorting control strings in the required order.

In default Data Access Form (created automatically) no sorting columns defined (sorting control panel is empty). To enter some columns into sorting control panel you need to use Data Access Forms editor.

For custom sorting by columns the table header line is used. Just click on the column header to sort the table by values in the corresponding table column. Next clicking on the column header sorts the column in the backword order.

The most left table column (with the "#" header) contains records numbers, so that you can restore the "natural" recors order in the table just by clicking on the header of the most left column.

The costom sorting by columns do not work for big tables ( for tables marked by "Big Table" flag ) as such tables are shown "on-the-fly", without data buffering.

Go to top of the page

Data filtering

When you need to edit some big table (dataset) it is sutable to see on the screen only a part of the table, only records you are going to edit. To provide such possibility there is a special record filtering control in the dataset window. Every line of this control defines some condition for data (records) filtering. When a filter control line is activated only those table records are displayed on the screen which correspond to condition defined by this filter. If second filter is activated then only those records will be displayed which satisfy both conditions and so on.

Filtering control panel is located on the left upper side of the dataset window. This panel can be hide or shown by the "Show/Hide filtering and sorting controls" button.

Data filtering

Strings on filtering control panel contain names of filters and conditions for records fetching. Active filter (lines with filtering enabled) are marked with "V" on the left and highlighted with yellow background. The left mouse button click on the control panel string changes the state of the string on the opposite, and thus, turns on or off filtering using that condition. It is possible to turn off all filters by clicking the upper line of the filtering control panel.

Every time tou turn on or turn off some filer Data Manager clears the table and reads table records from database. This may lead to some delays in a case the database size is big enough.

Condition defined by a filter is formulated as a comparison of a value in some table field (column) with some fixed value (the condition paramenter).

It is possible to change condition parameters in filters manually - condition parameters can be edited just like values in main table cells. You need to double click the condition parameter and then edit the value in edit window. In case of coded values some dictionary will be opened automatically when you try to edit the value, so you will need just to select new value in the dictionary and click on the "Select" button.

Some table fields (columns) can be defined as having help-dictionaly, so in case such field is used in the filter definition and its value is used as a condition parameter - you may use F1 key to call help-dictionary while editing this value.

A set of filters defined in filering control panel and compare operations itself cannot be changed directly in the dataset window. To add or delete filters from filtering control panel or to change the compare operation for some filter you need to call Data Access Form editor.

In general the following compare operations could be used for filter definiotion:

  • "=" - equal;
  • "><" - not equal;
  • "<" - less then;
  • ">" - greater then;
  • "<=" - less or equal;
  • ">=" - greater or equal;
  • "from-to" - compare with a range of values;
  • "like" - compare with a sample;

All these compare operations are clear possibly except the last one, the "compare with a sample" operation.

The "compare with a sample" operation compares the value under testing with a sample and checks if the value matches the sample. In case the sample is defined as some text then this operation just checks if the beginning of the string is the same as the sample string. For example, the 'Name like "A"' filter selects only records with Names starting on "A" letter.

In case the sign "%" is pointed out in the sample string this sign matches to any sequence of characters. So the "A%ing" sample will match to any string which starts from the "A" letter and ends by 'ing".

The "_" sign in a sample maches to any single symbol.

Go to top of the page

Data editing

To enter new value into a table data cell it is needed to select this cell by single or double click and then use keyboard to enter new field value.

Data editing

Depending on field type it will be opened in the cell a new edit window or new specialized date edit window or (in case this field is coded by a dictionary) new dictionary window will be opened to allow new field value selection.

Numeric and text fields editing is to be performed by standard way similar to any text editor. Date editing is organozed by a way which allows to enter only correct dates. To enter NULL instead of concrete date you need to use F1 key.

In case of dictionary window needed line is to be selected and the button "Enter" is used to enter new value in the cell. Also it is possible just to double click dictionary line with needed value located in it. The "Cancel" button or "Esc" key could be used to close the dictionary window without changing the value in the edited cell.

Some record fields (table columns) can have help-dictionary assigned - these dictionaries are called by user request. To open help-dictionary just select the cell by double click and push the F1 key.

For other fields the "F1" key can be used to clear the cell - set the NULL value in it (NULL is a special value which means that the cell have no value). The "F1" key opens a dialog window which allows to clear the cell.

The "Tab" key could be used to move from one cell to another, Shift/Tab - to return to previous cell.

It is possible also to use arrow keys (Up, Down, Right, Left) for intercell navigation - arrow keys work in case the cell was selectded by single click (in the navigation mode). In case the cell is already under editing (it was selected by double click) you need to use the "Esc" key first to return to navigation mode and use arrow keys for navigation.

Go to top of the page

Add, delete, copy record

To add, copy or delete row from the table one should use corresponding command buttons located on the left from the table.

Add, delete, copy record

The "Add new record into the table" button creates new record and adds it at the end of the table.

Field values in the new record are defined as following. In case some filters were activated when the record was added then these fields (participating in filter conditions definitions) are defined to be equal to filter parameters. Other fields are set to be NULL (no value) except the the first field. The first field value is set to be 0.

Added record is activated as the current one. It could be immidiately edited.

The "Add a copy of current record into the table" button inserts the current record copy at the end of the table. The inserted record is set as the current record.

The "Delete current record" button is active only when some record selected (set as current one). The next record is set as current record after the operation.

Go to top of the page

How to edit dictionary

When the user starts editing a field, coded by a dictionary, or the user press F1 key in a field having a connected help-dictionary - the system opens the dictionary window which allows the user to select a value for the field. In the left bottom corner of the dictionary window there is the "Edit dictionary" button . Pushing this button turns on the dictionary edit mode.

edit dictionary

In this mode it is possible to change values in the current dictionary row (both the "Code" field and the "Value" field). Also additional buttons appear in the right side of the dictionary window - the "Add" button, the "Copy" button, and the "Delete" button can be used to add new records or to delete selected record.

Dictionary record editing is performed by the same way as the main table editing. The only special thing is that all records in the dictionary must have unic CODE fileds. Any pair of records in the dictionary must have different values in the CODE field.

The "Add" button creates new dictionary record at the end of the dictionary. The CODE field of the record is set to be "***" (in case the field is char type) or "999" (in case of numeric field). It is assumed that after adding an entry to the dictionary the user will edit the CODE field and the CODE field in the new record will be assigned an unique code.

The "Copy" button works by similar way. The CODE field will have standard value and the VALUE field will be dublicated.

So in case you need to add several records into the dictionary you need to edit each record just after it was added (to set unic value into its CODE field). If you try to add several records without editing - you will get a message that the record with the same CODE already exists in the dictionary and new record will not be added.

Dictionary edit mode is a part of general dictionary value selection dialog, so at the end of the dialog it is possible to select value for the main table cell. In case the value in the main table is not to be changed - then the "Cancel" button is to be used to close the Edit Dictionary dialog.

After the Edit Dictionary dialog is closed Data Manager automatically updates the content of the main table to reflect new dictionary values for it.

Go to top of the page

Data Access Form editor

How to go to Data Access Form editor

There are two ways to go to Data Access Form Editor from the dataset window.

The standard way to go to the Data Access Editor is connected with usage of dataset property window. First push the "Edit dataset properties" button, located at the left top corner of the dataset window. After clicking this button the Dataset Properties window appears.

The Dataset Properties window contains a set of command buttons which allows to work with different dataset components - Data Access Forms, Panels, Query Forms, Auxilary Tables. In this case we are interested in the editing of Data Access form we deal with, so first we need to select needed Data Access Form in the corresponding dropdown control box and then push the "Edit this data access form" button on the right of the control box (marked by red color on the screen below).

Pushing the "Edit this data access form" button will call the Data Access Form editor.

The another way to call the Data Access Form editor is possible from the own data access form window.

On the main dataset window there is the "Data" button just above the table. This button opens current data access form in a separate window, it is so called Data-window. The Data-window is differ from the main dataset window in that it represents only one data access form and does not allow to swich to another one. The Data-window also does not have command buttons to open other dataset components - panels, queries, and auxilary tables.

The Data-window is tipically used to open several data access forms for dataset at the same time. Afer opening current access form in Data-window the user can select another data access form for the dataset in the main window and so on. Each Data-window represent some specific data access form and the "Edit" button on it is used to edit this specific data access form.

Pushing the "Edit this data access form" button at the left top corner of the Data-window will call the Data Access Form editor.

Go to top of the page

Data Access Form editor window

Data Access Form editor window is intended to define and change Data Access Form properties.

At the window title the Data Access Form name is presented. The most upper line in the window named as "Form definition File:" presents the name of the Data Access Form file - this file has the ".vme" extention, it presents this Data Access Form in the system. At the second line named as "Referenced Table:" there is name of the main table of the dataset. It is a table to which the current Data Access Form belongs. Actually the Referenced Table is a control (drop-down list), so that it is possible to change the table for the Data Access Form, but typically there is no reasons to do this. At the left of the Referenced Table there is the "Edit Table structure" button. It can be used to edit main table structure (add, delete, rename or change table columns).

За именем описания таблицы находится окно "ПОЛЯ ТАБЛИЦЫ" - чуть ниже, в левой части экрана. Здесь высвечивается полный список полей (столбцов) целевой таблицы. Выбрав нужные поля в этом списке можно их переместить в центральное окно - список "ПОЛЯ РЕДАКТИРОВАНИЯ". Здесь задаются столбцы таблицы базы данных, которые подлежат редактированию при работе с данной формой показа. Именно эти поля, и только они будут представлены в таблице, представляемой в этой форме показа. Важен порядок, в котором эти поля перечислены - он определяет порядок расположения полей в таблице, представляемой в форме показа.

Обычно для редактирования одной и той же таблицы базы данных создаётся несколько форм ввода, различающихся составом и порядком расположения полей в таблице редактирования. Это упрощает ввод данных, поскольку для каждого конкретного вида работ по вводу данных можно определить наиболее удобный состав и расположение столбцов в таблице редактирования.

Справа находится окно управления сортировкой "ПОЛЯ СОРТИРОВКИ". Здесь можно указать поля, по которым пользователь сможет производить сортировку редактируемой таблицы. Сюда следует помещать поля, по которым имеет смысл задавать многоуровневую сортировку, поскольку сортировка по отдельно взятому полю возможна даже и в случае, если этого поля и нет в окне управления сортировкой (простым нажатием на заголовок столбца в таблице редактирования - но это работает только для случая, если данной формы показа не установлен флажок "Редактирование больших таблиц").

Окно, занимающее правую нижнюю часть экрана, предназначено для формирования условий отбора записей для редактирования (задания фильтров). Кнопки правее надписи "УСЛОВИЯ ВЫБОРКИ (ФИЛЬТРЫ") предназначены для задания условий в отдельных фильтрах.

Go to top of the page

Table selection

В строке ниже имени названия формы ввода находится окно "Обращение к Таблице МД:", предназначенное для выбора таблицы Базы данных, к которой относится данная форма ввода.

Каждая форма ввода предназначена для редактирования определенной таблицы базы данных. При создании новой формы система выбирает некоторую таблицу по умолчанию. Для выбора другой таблицы необходимо щелкнуть левой кнопкой мыши на значке и в окрывшемся списке таблиц указать на требуемую.

Набор таблиц соответствует набору специальных файлов описаний, хранящихся в директории (папке) описаний таблиц (файлов с расширением ".vms"). Эти описания готовятся администратором Базы данных или пользователем с помощью Менеджера Данных (см. описание Административного режима).

Иногда, в процессе работы с Менеджером Данных выясняется, что необходимо изменить описание некоторой таблицы. Это можно сделать, перейдя в Административный режим и вызвав Редактор Описаний Таблиц командой "Редактировать Описания Таблиц..." из меню "Команды". Однако, чтобы эти изменения вступили в силу для формы ввода, относящейся к этой таблице - необходимо эту форму ввода открыть для редактирования и перевыбрать эту же таблицу в ниспадающем списке "Обращение к Таблице МД".

Go to top of the page

Field list definition

Обычно для выполнения конкретного вида работ по вводу данных (например, вводу данных из определенной ведомости) в форме ввода, ориентированной на этот вид работ, имеет смысл оставить для показа в редактируемой таблице только то поля, которые нужны для иденитфикации редактируемой записи, а такде поеле, в которое осуществляется ввод данных из этой ведомости. Какие именно столбцы и в каком порядке показываются в редактируемой таблице для данной формы ввода определяется содержимым окна "ПОЛЯ РЕДАКТИРОВАНИЯ:".

Вставка столбцов в список редактируемых полей производится путем их выборки в списке "ПОЛЯ ТАБЛИЦЫ:" и последующем их переносе в список "ПОЛЯ РЕДАКТИРОВАНИЯ:" клавишей .

Для выбора поля необходимо навести на него указатель мыши и нажать ее левую клавишу. Можно выбрать несколько полей, если одновременно удерживать нажатой клавишу Shift или Ctrl - при нажатии клавиши Shift выбирается группа смежных полей, а при нажатии клавиши Ctrl можно произвести произвольную выборку.

Порядок столбцов в редактируемой таблице определяется порядком, в котором они перечислены в списке "ПОЛЯ РЕДАКТИРОВАНИЯ:". Этот порядок может быть изменен путем перемещения полей в этом списке. Выберите поле, которое Вы хотите переместить и нажмите клавишу для перемещения поля вверх в списке или клавишу для перемещения поля ближе к концу списка выходных полей.

Можно выбрать несколько полей для перемещения, если использовать клавиши Shift или Ctrl.

Выбранное поле может быть удалено из списка редактируемых полей нажатием клавиши .

Go to top of the page

Sorting definition

При редактировании базы данных в зависимости от желания пользователя записи в редактируемой таблице могут быть упорядочены (отсортированы) по значению одного или нескольких полей (столбцов). Для указания столбцов, по которым пользователь может осуществлять сортировку используется список "ПОЛЯ СОРТИРОВКИ:".

Вставка столбцов в список полей сортировки производится путем выборки нужного поля в списке "ПОЛЯ РЕДАКТИРОВАНИЯ:" и последующем их переносе в список "ПОЛЯ СОРТИРОВКИ:" клавишей .

Для выбора поля необходимо навести на него указатель мыши и нажать ее левую клавишу. Можно выбрать несколько полей, если одновременно удерживать нажатой клавишу Shift или Ctrl - при нажатии клавиши Shift выбирается группа смежных полей, а при нажатии клавиши Ctrl можно произвести произвольную выборку.

Порядок перечисления полей в списке полей сортировки не является слишком существенным. Он определяет только первоначальное положение соответствующей строки управления сортировкой в поле "СОРТИРОВКА" при открытии данной формы для редактирования базы данных. Далее этот порядок меняется в зависимости от того, какие строки управления сортировкой активизируются пользователем.

Тем не менее, порядок столбцов в списке полей сортировки может быть изменен путем перемещения полей в этом списке. Выберите поле, которое Вы хотите переместить и нажмите клавишу для перемещения поля вверх в списке или клавишу для перемещения поля ближе к концу списка выходных полей.

Можно выбрать несколько полей для перемещения, если использовать клавиши Shift или Ctrl.

Также как и для списка полей редактирования, выбранное поле может быть удалено из списка сортировки нажатием клавиши .

Go to top of the page

Filters definition

Фильтры (условия выборки записей) определяют какие записи редактируемой таблицы будут доступны для редактирования. При создании формы ввода следует описать все возможные фильтры, которые впоследствии (во время редактирования) может активизировать пользователь.

Фильтры создаются путем добавления новых строк в таблицу "УСЛОВИЯ ВЫБОРКИ (фильтрЫ):", расположенную внижней части экрана.

Каждый фильтр связан с каким-нибудь полем (столбцом) редактируемой таблицы. Фильтр налагает некоторое ограничение на значение в этом поле. Например, он может задавать отбор для редактирования только записей, у которых значение заданного поля меньше заданного.

Поле, на которое данный фильтр налагается условие, может быть полем редактирования (присутствовать в списке "ПОЛЯ РЕДАКТИРОВАНИЯ:"), но это не обязательно - любое поле исходной таблицы может учавствовать в формировании условия фильтра.

Для добавления нового фильтра в таблицу условий выборки (фильтров) необходимо выбрать в списке полей таблицы поле, на которое Вы хотите наложить условие, т.е. поле, значение которого должно сравниваться с некоторым эталонным значением. Затем следует перенести это поле в первый столбец списка фильтров ("ПОЛЕ В БАЗЕ") путём нажатия клавиши .

Затем следует выбрать для данного фильтра операцию сравнения, Это осуществляется нажатием одной из клавиш выбора условия, расположенных над таблицей фильтров. Можно выбрать одну из следующих операций сравнения:

  • "=" - равно;
  • "><" - не равно;
  • "<" - меньше;
  • ">" - больше;
  • "<=" - меньше или равно;
  • ">=" - больше или равно;
  • "от-до" - сравнение с диапазоном значений;
  • "образец" - сравнение с образцом;

Далее задается параметр (аргумент) операции сравнения - значение, с которым поле будет сравниваться. Для этого нужно просто ввести некоторое значение в столбец "Аргумент". Ввод значений осуществляется так же как и редактирование параметров фильтров в режиме редактирования базы данных - нужно селектировать соответствующую ячейку таблицы фильтров наведением на неё указателя мыши и нажатием левой клавиши, а затем ввести с клавиатуры новое значение или выбрать значение из открывшегося справочника.

Операция сравнения с диапазоном "от-до" требует указания дополнительного аргумента, размещаемого в столбце "Доп. аргумент".

Особым образом задается аргумент операции сравнения с образцом "образец". Это должна быть строка, задающая некоторый образец. Обычно это последовательность символов, с которых должны начинаться значения сравниваемого поля. Например, если поле "Ф.И.О." будет сравниваться с образцом, в качастве которого задана большая буква А, то будут отбираться записи, в которых ФИО начинается с буквы А.

Если в любом месте текстовой строки в образце указать символ "%" ("любая последовательность символов"), то с данныму образцу будут соответсвовать все строки, начало которых совпадает с символами образца слева от знака "%", а конец - с символами образца справа от него. Например, образцу "%ов" будут соответствовать все фамилии, заканчивающиеся на "ов". А под образец "А%ов" подойдут все фамилии, начинающиеся на букву "А" и заканчивающиеся на "ов".

Образец "%" соответствует любому значению поля, в том числе пустому, поэтому указание такого образца в некотором смысле "отключает" данную операцию сравнения.

Знак "_" в образце соответствует любому одиночному символу. Таким образом, под образец "перв__" будут подходить как значение "первый", так и значение "первая".


В правой верхней части экрана радактора форм показа находится группа управляющих элементов-флажков, которые определяют некоторые специальные свойства формы показа Набора Данных.

Установка флажка "Только для чтения" запрещает для данной форма показа возможность изменения данных в таблице. Это может потребоваться в случаях, если табличные данные не должны изменяться в процессе эксплуатации информационной системы, для предотвращения случайного изменения данных пользователем. Важно отметить, что этот флажок запрещает доступ по записи не только непосредственно в самой экранной форме показа, но и во всех "подчиненных" ей компонентах Набора Данных - например, в связанных с этой формой показа экранных панелях для работы с отдельными записями (строками) таблицы.

Флажок "Для больших таблиц" изменяет механизм буферизации записей таблицы при её показе. По умолчанию показ таблицы осуществляется с предварительной буферизацией данных - при открытии формы показа все строки таблицы считываются в системный буфер и последующий показ различных порций табличных данных (групп строк, одновременно видимых на экране) осуществляется с использованием этого системного буфера, без обращения к физической базе данных. Это позволяет реализовать некоторые дополнительные полезные функции - например, быструю "внутреннюю" сортировку записей в таблице при нажатии на заголовок того или иного столбца, без использования общего механизма сортировки по выбранным в списке полей сортировки полям.

Но предварительная буферизация данных требует времени, поэтому для больших таблиц (десятки тысяч записей) при изменении условий фильтрации (включении и выключении фильтров) и изменении условий групповой сортировки система начинает "тормозить", начинают происходить заметные задержки при обновлении табличной выборки. Чтобы этого не происходило следует установить флажок "Для больших таблиц". Если этот флажок установлен, то глобальной буферизации табличных данных не происходит и система показывает данные "на лету", выбирая из базы данных нужную порцию данных для показа непосредственно в момент, когда пользователь "перемещается" по таблице (смещает индикацию текущей записи).

И, наконец, флажок "Кнопка доступа к web" указывает системе, нужно ли показывать пользоватедю при открытии данной формы доступа кнопку вызова интернет-браузера. По умолчанию эта кнопка всегда показывается. Если прямой ввод данных из интернета для этой формы показа Набора Данных не предусмотрен, то эту кнопку лучше удалить, установив флажок.

Go to top of the page

Tables description

Simple table description dialog




Go to top of the page

Field types




Go to top of the page

Extended Table description dialog




Go to top of the page

Database definition




Go to top of the page

File (phisical table) creation or selection

Как говорилось выше, таблица Менеджера Данных (логическая таблица) обычно подключена к некоторому физическому файлу (физической таблице). Между полями логической таблицы и полями подключенного к ней файла есть соответствие - поле логической таблицы всегда соответствует (базируется на) некотором поле физической таблицы. Однако это НЕ ЕСТЬ строгое взаимооднозначное соответствие.

Во-первых возможно, что не всем полям физического файла соответствуют поля логической таблицы. В этом смысле логическая таблица может рассматриваться как некоторое сужение физической таблицы в том смысле, что не все поля физического файла доступны пользователю, "видны" ему как поля логической таблицы. Вообще говоря, можно описать несколько логических таблиц для доступа к одному и тому же физическому файлу, указывая в них разные наборы полей. Таким образом обеспечивается возможность разного "взгляда" на один и тот же физический файл через разные логические таблицы.

Более того, одну и ту же логическую таблицу можно подключать к разным физическим файлам при условии, что они совместимы с этой логической таблицей, то есть в них есть все поля, на которые эта таблица ссылается.

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

Так, например, в данном описании сразу три поля логической таблицы соответствует физическому полю R1. Поле "№ карты" представляет непосредственно физическое поле R1, оно используется напрямую, так как оно есть в физическом файле. Поля "ФИО пациента" и "Дата рождения" - кодированные поля, причем они кодируются одним и тем же справочником (sem_kart). Но ссылаются они на разные поля записи в sem_kart. Поле "ФИО пациента" представляет поле К1_3, а поле "Дата рождения" - поле К1_4. Таким образом к записи одного файла как бы присоединяется часть записи другого файла.

Поскольку в Менеджере Данных все запросы описываются в терминах логических таблиц они оказываются независимыми от физических данных. Логические таблицы Менеджера Данных представляют данные при описании всех операций над ними.

Go to top of the page

How to create table description for existing file




Go to top of the page

Field description editing

Менеджер Данных не привязан к форматам конкретных баз данных и не ссылается непосредственно на физические файлы / таблицы, где данные физически хранятся. Вместо этого он имеет дело с набором логических таблиц (таблиц Менеджера Данных).

Таблицы Менеджера Данных имеют регулярную структуру, типичную для любой базы данных. Таблица состоит из последовательности записей, которые, в свою очередь, состоят из именованных полей, где хранятся данные. Структура всех записей в таблице одинакова - все записи имеют одно и то же число полей, их последовательность и тип. Поля записей составляют столбцы таблицы. Число записей (строк) в таблице может быть переменным, но число и состав столбцов фиксирован для каждой таблицы.

Таким образом, описание таблицы Менеджера Данных может быть представлено описанием всех столбцов (полей записей) этой таблицы.

Ниже приведено описание таблицы Менеджера данных, которая была показана выше. Рассмотрим подробнее как оно устроено и как описывается каждый столбец (каждое поле) таблицы Менеждера Данных.

Прежде всего мы видим, что каждое поле имеет ВНЕШНЕЕ ИМЯ - название поля, печатаемое в заголовке столбца таблицы Менеджера Данных, когда она высвечивается на экране. С этим именем столбец таблицы появляется во всех диалоговых окнах Менеджера данных - чтобы сослаться на столбец (поле записи) таблицы в любом диалоге надо просто указать его имя. Об этом имени поля говорят как о ВНЕШНЕМ имени, подчеркивая этим то обстоятельство, что это имя скорее предназначено для внешнего использования, чем для внутренних нужд системы.

Для каждого поля (столбца таблицы) указывается ТИП данных, которые могут быть записаны в данное поле (столбце). Кроме этого задается также ширина поля (в графе "<--->" описания таблицы). Ширина поля определяет сколько позиций (максимально) данное поле занимает при печати. Для числовых полей также задаётся точность представления (в графе ".хх" описания таблицы) - точность задает количество знаков, печатаемых после десятичной точки.

В настоящий момент для таблиц Менеджера Данных могут быть определены поля следующих типов:

  • Num (Numeric) - числовые поля. Числовое поле характеризуется шириной поля и точностью. Ширина поля указывает, сколькими десятичными цифрами (максимально) может представляться число в печатном документе. Точность определяет, сколько цифр знаков дробной части (после десятичной точки) должно печататься. Для целых чисел =0.
  • Char - текстовые поля. Текстовое поле характеризуется шириной, которая определяет максимально допустимую длину поля в символах.
  • Data - поле даты. Обычно дата представляется в виде ДД.ММ.ГГГГ
  • Log (Logical) - логическое значение (да-нет).
  • Memo - текстовое поле большого размера.

Таблица Менеджера Данных в некотором смысле является логической таблицей. Она является описанием структуры некоторых табличеых данных, но сами данные хранятся отдельно, в некотором физическом файле базы данных. Обычно каждая таблица Менеджера Данных ссылается на какой-то физический файл или на таблицу физического файла, в котором (в которой) хранятся реальные данные. В этом случае говорят, что логическая таблица ПОДКЛЮЧЕНА к некоторому физическому файлу (физической таблице). О физическом файле, к которому подключена (или может быть в при необходимости подключена) логическая таблица, можно говорить как о некотором ЭКЗЕМПЛЯРЕ этой логической таблицы.

Так вот, в описании таблицы Менеджера Данных (логической таблицы) для каждого поля нужно указываться имя поля физического файла базы данных, соответствующего данному полю. Это имя указывается в графе "ПОЛЕ В БАЗЕ". Ссылка на поле базы позволяет Менеджеру Данных при подключении к логической таблице физического файла правильно определять, из какого поля физического файла нужно брать данные для данного поля логической таблицы.

Имена полей реального физического файла являются сугубо внутренними именами системы, используемыми Менеджером Данных в процессе работы с логической таблицей и подключенным к ней файлом (экземпляром этой таблицы). Они не используются нигде кроме как в описаниях логических таблиц.

Часто в базах данных по некоторым причинам (обычно историческим) существуют (или существовали) ограничения на именование столбцов физических файлов - либо имена полей должны быть короткими, либо не содержать нелатинских символов или каких-то специальных знаков. Поэтому часто внутренние имена полей (столбцов) физических файлов имеют неудобочитаемые имена, иногда просто некоторые кодовые обозначения. Именно это мы видим в приведенном выше примере.

В большинстве случаев перечисленных выше четырёх граф описания таблиц Менеджера Данных вполне достаточно, чтобы описывать вполне работоспособные системы. Но если мы заботимся о сокращении размеров файлов в нашей базе данных, а также о предоставлении некоторых удобств пользователю при редактировнии таблиц - придется разобраться с дополнительными возможностями, которые предоставляются Менеджером Данных при работе с таблицами.

Go to top of the page

Tables description. Extended features


В большинстве случаев перечисленные выше четыре графы полностью описывают поля логической таблицы Менеджера Данных. Но если мы хотим сократить размеров файлов в нашей базе данных, либо предоставить дополнительные удобства пользователю при редактировнии таблиц - их не достаточно.

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

Часто бывает, что некоторые поля таблицы можно отнести к разряду перечислимых полей - полей с перечислимым набором значений. Такие поля могут принимать значение только из некоторого фиксированного множества значений. Например, поле "Пол" может иметь только одно из значений "мужчина" или "женщина", а полю "Специальность" можно присваивать значения только из фиксированного набора специальностей. Если задавать значения таких полей в виде обычных текстовых строк, то при вводе название специальности может быть введено с ошибкой, и запись с ошибочным названием специальности будет неправильно обрабатываться.

Другой проблемой может быть сложность набора длинных значений перечислимых полей. Хотелось бы видеть значение полей в виде содержательных текстовых строк, но ввод таких строк для повторяющихся значений полей - утомительное занятие.

Для перечислимых полей хорошо было бы предоставить пользователю возможность при редактировании поля вместо ручного ввода значения просто выбрать одно из значений из списка предложенных.

Эти проблемы решаются давно известным способом - путем использования справочников. Справочник - это вспомогательная таблица, используемая для кодирования длинных, обычно символьных, значений короткими кодами, обычно числовыми. Таблица-справочник состоит из записей, состоящих из двух полей - поля кода и поля значения - и позволяет по коду быстро находить соответствующее ему значение. В основной таблице (в перечислимом поле) хранится при этом не само целевое значение, а его код, который при необходимости всякий раз автоматически расшифровывается системой через такую таблицу-справочник.

Механизм справочников не только позволяет резко сократить размер основной таблицы за счет хранения в ней коротких кодов вместо длинных значений, но и решает проблему ошибок при вводе значений - а поле основной таблицы могут записываться только значения из справочника, поэтому ошибка с неправильным написанием строки значения исключается.

Перечислимые поля, в которых хранятся коды из некоторого справочника, а не сами значения, называются кодированными полями.

Другой способ использования вспомогательных таблиц-справочников не связан напрямую с необходимостью кодирования значений. Справочники могут использоваться просто для обеспечения возможности расшифровки вводимых значений, как справочники-подсказки. Примером является классификатор заболеваний. Всем видам заболеваний присвоены коды, которые и указываются в историях болезней. Обычно медицинский работник, работающий с базой данных, знает коды основных заболеваний и вводит их напрямую, не заглядывая в классификатор. Однако иногда такая необходимость возникает, и хорошая система ввода данных должна обеспечивать возможность заглянуть в справочник.

Менеджер Данных поддерживает как справочники как кодированных полей, так и использование справочников-подсказок.

Go to top of the page

How to connect dictionary to some field

При описании логических таблиц возможно связывать с полем таблицы Менеджера Данных некоторый справочник. Говорят, что этот справочник подключен к данному полю.

Менеджер Данных использует подключенный справочник при редактировании поля для помощи пользователю. Делать это он может двумя способами.

Справочник может быть подключен к полю в режиме "автоматического выбора". В этом случае Менеджер Данных будет всегда высвечивать справочник и предлагать пользователю выбрать данные из справочника - при каждой попытке пользователя изменения данные в этом поле.

Другой режим использования справочника - "справка по требованию (F1)". В этом режиме редактирование поля возможна путём прямого ввода данных с клавиатуры и Менеджер Данных будет высвечивать справочник для подсказки и выбора данных только по требованию пользователя - по нажатию пользователем клавиши F1. Для краткости первый способ будем будем называть подключением справочника в автоматическом режиме (режим "авто"), а второй - в режиме вызова по требованию (режим "F1").

Другой аспект при подключении справочника к полю связан с использованием справочника для кодирования. Справочник может применяться либо для кодирования поля, либо просто для подсказки, вспомогательной расшифровки поля.

Если подключенный справочник кодирует некоторое поле основной таблицы, то в этом поле реально хранится не само целевое значение а некоторый код. Раскодирование этого кода осуществляется через подключенный к полю справочник. Это означает, что всякий раз, когда нужно получить значение поля основной таблицы, Менеджер Данных ищет в справочнике строку (запись), в поле кода которой записан такой же код, как и в основном поле, и данные из поля значения этой строки справочника выбираются и используются Менеджером Данных в качестве целевого значения закодированного поля основной таблицы.

Для кодированного поля целевое значение определяется полем значения справочника.

Если же справочник используется не для кодирования, а для вспомогательной расшифровки, то в поле основной таблицы хранится непосредственно целевое значение. В общем случае оно может выбираться из подключенного справочника, в котором оно снабжается расширенной расшифровкой, помогающей пользователю сделать выбор строки из справочника. Целевое значение, подлежащее расшифровке, играет в справочнике роль ключа, по которому Ьенеджер Данных ищет его подсказку для показа её пользователю. Если пользователь на основании найденной подсказки выбирает строку из справочника, то в качестве целевых данных в поле основной таблицы попадут данные из поля ключа справочника.

В первом случае (случае кодированного поля) будем говорить, что описываемое поле является кодированным.

Если к полю должен быть подключен справочник, то в графе "Подключение" в описании данного поля должен быть указано как справочник должен вызываться (атоматически или по F1) и способ его использования (используется он для кодирования поля или нет)ю В графе "СПРАВОЧНИК" при этом должно быть указано имя справочника - имя физического файла (без пути и без расширения) или имя таблицы (для баз данных, представленных многотабличными файлами типа Access и Excel).

Итак, в графе "Подключение" Может быть указан один из следующих способов подключения справочника:

  • код, авто - подключение для кодирования поля, справочник вызывается автоматически:
    - справочник кодирует данное поле (в поле основной таблицы хранится код, автоматически расшифровываемый Менеджером Данных через указанный справочник),
    - при любой попытке редактирования данных в этом поле Менеджер Данных автоматически открывает справочник и предлагать выбрать значение;

  • код, F1 - подключение для кодирования поля, справочник вызывается по требованию пользователя:
    - справочник кодирует данное поле (в поле основной таблицы хранится код, автоматически расшифровываемый Менеджером Данных через указанный справочник),
    - разрешен прямой >ввод данных в это поле с клавиатуры, и Менеджер Данных высвечивает справочник для выбора строки из него только по требованию пользователя (по нажатию клавиши F1);

  • авто - подключение без кодирования поля, только для подсказки; справочник вызывается автоматически:
    - поле основной таблицы хранится непосредственно целевое значение, а справочник хранит все возможные расшифровки поля (подсказки);
    - при любой попытке редактирования данных в этом поле Менеджер Данных автоматически открывает справочник и предлагает выбрать код;

  • F1 - подключение без кодирования поля, только для подсказки; справочник вызывается по требованию пользователя:
    - поле основной таблицы хранится непосредственно целевое значение, а справочник хранит все возможные расшифровки поля (подсказки);
    - разрешен прямой ввод данных в это поле с клавиатуры, и Менеджер Данных высвечивает справочник для выбора строки из него только по требованию пользователя (по нажатию клавиши F1);

Как уже говорилось, справочник - это вспомогательная таблица, записи которой имеют два основных поля - поле ключа и поле значения. При описании подключенного справочника необходимо указать названия этих полей (в графе "ПОЛЕ КЛЮЧА" и графе "ПОЛЕ ЗНАЧЕНИя" соответственно). Кроме этого необходимо указать их тип.

Тип какого поля справочника указывается в графе "ТИП", расположеннойи между графами "ПОЛЕ КЛЮЧА" и "ПОЛЕ ЗНАЧЕНИЯ"? Ответ на этот вопрос зависит от типа поключения справочника.

Если поле кодированное (то есть справочник подключен в режиме "выбор значения" или "ввод значения"), то значением данного поля логической таблицы считается поле значения подключенного справочника, так что его тип фактически указан в графе "ТИП" рядом с графой "ВНЕШНЕЕ ИМЯ". Таким образом, в данном случае справа от "ПОЛЯ КЛЮЧА" должен указываться тип поля ключа справочника. Считается, что этот тип совпадает с типом "ПОЛЯ В БАЗЕ" - внутреннего поля основной таблицы.

Если же справочник подключен в режиме "выбор кода" или "ввод кода", то значением данного поля логической таблицы считается значение внутреннего поля основного файла ("ПОЛЕ В БАЗЕ"). Тип "ПОЛЯ КЛЮЧА" справочника совпадает с типом внутреннего поля основной таблицы, и в графе типа справа от "ПОЛЯ КЛЮЧА" указывается тип "ПОЛЯ ЗНАЧЕНИЯ" справочника.

Эта логика поддерживается цветовой раскраской фона соответствующих ячеек таблицы описания - указывыаемый тип имеет фон того же цвета, что и поля, к которым он относится.

Представленная в описании поля информация позволяет Менеджеру Данных производить автоматическую кодировку - раскодировку значений кодированных полей и когда нужно - вызавать справочники при работе с логической таблицей. Так что пользователю нет необходимости как-то специально беспокоиться о кодированных полях и полях с присоединенными справочниками-подсказками - в Менеджере Данных работа с ними не сильно отличается от работы с обычными полями.

Go to top of the page

Compound dictionaries




Go to top of the page

Field definition editor dialog window




Go to top of the page

Field processing

Calcelated (processed) fields (table rows) are fields which are defined not directly by the user (with values saved in database) but which are to be calculated automatically by the system using some formula defined by the user. As a rule this formula defines the field value basing on values of other table fields. For example, if a table have "First name" and "Last name" fields then it is possible to define the "Full name" (calculated) field, which is formed by the system automatically cotenating the "First name" and "Last name" fields with the space between them.

To define a field as processed field You need to set the "Field processing" flag in the Field definition editor dialog window (at the bottom).

Just below the "Field processing" flag there is the "Processing type" switch (drop down menu). It shoud be set as "formula". This defines the field as a field to be calculated according to a formula defined.

To define formula for the calculated field the "Formula" edit window at the right side is to be used. You cannot edit the formula text directly in this window - click the "Edit" button to activate special "Formula (script) definition" dialog window.

On the contrary to usual fields - the value of the processed field is not saved in the database but it is calculated automatically "on the fly" - each time as the field value is needed to show it in the table, to print, to show on the screen (on panel), or to copy into other table. When any primary field is changed (primary fields are fields mentioned in the formula) - the value of calculated field will be updated automatically.

Calculate fields cannot be used for table record filtering or sorting in data access forms, as they are not in database. (Record filtering and sorting are implemented using database engine manipulating by phisical data saved in database). The only exeption here is a possibility for internal selective sorting (by clicking on the column title) in data access forms for "small" tables (for data access forms where the "For big tables" flag is not set).

Go to top of the page

Formula syntax

Для определения и редактирования формул вычисляемых полей используется диалоговое окно Определения формулы (скрипта), представленное ниже.

В верхней части окна Определения формулы находится список определений полей. С помощью этого списка полям таблицы присваиваются однобуквенные обозначения, которые затем можно ипользовать в тексте формулы для ссылки на значения соответствующих полей. Использование в тексте формулы однобуквенных обозначений полей вместо их полных имён делает текст формул более удобным для чтения и понимания.

Если значение некоторого поля записи должно быть использовано в формуле, то это поле должно быть добавлено в список определений полей. Для этого следует нажать клавишу "Добавить" справа от списка определений полей и выбрать в появившемся полном списке полей нужное поле. Выбранное поле появляется в списке определений полей и ему автоматически присваивается однобуквенное обозначение.

В случае необходимости определение поля может быть удалено из списка определений полей нажатием кнопки "Удалить".

В нижней части окна находится текстовая зона для ввода и редактирования текста формулы. Зона формулы - многострочная, так что текст формулы можно размещать на нескольких строках. Для переноса части формулы на новую строку следует нажать клавишу Enter при нажатой клавише Ctrl.

Слева от заголовка "Формула:" (сразу над зоной ввода текста формулы) находится маленькая кнопка "?". Эта кнопка служит для вызова справочного окна, в котором приведены краткие сведения о синтаксисе формул и перечислены основные функции, к которым можно обращаться в формулах. В данном разделе, ниже, приводятся подробные сведения о синтакисе формул и доступных функциях.

Общий синтаксис

Формулы задаются по обычным правилам написания математических выражений - как набор операндов, разделенных знаками операций, с возможным использованием скобок, (в том числе вложенных) и вызовов функций.

Типы данных

Операнды и результаты вычисления выражений могут иметь один из следующих типов:

  • Целые числа
  • Числа с плавающей точкой
  • Логические значения (да-нет)
  • Даты
  • Общие Даты
  • Символьные значения (строки)
  • Точки на карте


В качестве целочисленных операндов могут выступать:

  • Целочисленные константы (целые числа - без точки и дробной части)
  • Однобуквенные обозначения целочисленных полей (числовых полей типа Numeric, не имеющих дробной части)
  • Вызовы функций возвращающие целочисленное значение
  • Выражения с целочисленным результатом

В качестве числовых операндов с плавающей точкой могут выступать:

  • Числовые константы с десятичной точкой и дробной частью
  • Однобуквенные обозначения числовых полей с непустой дробной частью
  • Вызовы функций возвращающие числовое значение с плавающей запятой
  • Выражения с результатом в виде числа с плавающей запятой

В качестве операндов логического типа могут выступать:

  • Однобуквенные обозначения полей логического типа
  • Вызовы функций возвращающие логическое значение
  • Выражения с результатом логического типа

В качестве операндов типа Дата могут выступать:

  • Однобуквенные обозначения полей типа Дата
  • Вызовы функций возвращающие значение типа Дата
  • Выражения с результатом типа Дата
  • Дата-константа (в виде текстовой строки, ограниченной кавычками)

В качестве операндов типа Общая Дата могут выступать:

  • Однобуквенные обозначения полей типа Общая Дата
  • Выражения с результатом типа Общая Дата
  • Дата-константа (в виде текстовой строки, ограниченной кавычками)

В качестве операндов с символьным значением могут выступать:

  • Символьные константы - текстовые строки, ограниченные кавычками
  • Однобуквенные обозначения полей символьного типа, полей типа Memo, а также типов Изображение и Ссылка
  • Вызовы функций возвращающие симольное значение
  • Выражения с результатом в виде символьного значения

В качестве операндов типа Толчка на карте могут выступать:

  • Однобуквенные обозначения полей типа Точка на карте
  • Константные координаты (в виде текстовой строки, ограниченной кавычками)


В формулах могут использоваться следующие знаки операций :

+ сложение числовых значений или катенация (соединение) символьных значений
- вычитание числовых значений или катенация символьных значений с их разделением знаком "пробел"
* умножение числовых значений или катенация символьных значений с их разделением знаком "_"
/ деление числовых значений или катенация символьных значений с их разделением знаком "перевод строки"
= сравнение значений на равенство
# сравнение значений на неравенство
< сравнение на "меньше"
> сравнение на "больше"
<= сравнение на "меньше или равно"
>= сравнение на "больше или равно"
! операция отрицания (применяется к логическому значению)
| операция логического ИЛИ
& операция логического И
a?b:c операция выбора по условию

Операция сложения ( + )

Для числовых значений операция сложения выполняет арифметическое сложение операндов. Числовые операнды могут быть как целыми числами, так и числами с плавающей точкой. Тип результата будет целым числом в случае сложения двух целых чисел. Если хотя бы один из операндов является числом с плавающей точкой, то результат сложения также будет числом с плавающей точкой.

Для символьных (строковых) значений операция сложения выполняет катенацию (сцепление) строк, представляющих её операнды - результатом катенации строк s1 и s2 является строка s1s2, составленная путем присоединения строки s2 к строке s1 (без каких-либо разделительных знаков между ними).

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

Операция сложения двух дат не определена. Можно складывать операнды типа дата и Общая дата с числовым операндом - результатом такой операции сложения будет дата, увеличенная на соответствующее число дней.

Логические значения и Значения типа Точка на карте складывать нельзя. В этом случае, как и во всех других случаях недопустимого смешивания типов операндов в операции сложения, результатом будет логическое значение FALSE ("нет").

Операция вычитания ( - )

Для числовых значений операция вычитания выполняет арифметическое вычитание второго операнда из первого. Числовые операнды могут быть как целыми числами, так и числами с плавающей точкой. Тип результата будет целым числом в случае вычитания двух целых чисел. Если хотя бы один из операндов является числом с плавающей точкой, то результат вычитания также будет числом с плавающей точкой.

Для символьных (строковых) значений операции вычитания, также как и операция сложения, выполняет катенацию (сцепление) строк, представляющих её операнды. Однако, в отличие от операции катенации s1+s2, результатом катенации строк s1-s2 является строка "s1 s2", составленная путем присоединения строки s2 к строке s1 с вставкой знака "пробел" между ними. Это удобно, когда операнды представляют отдельные слова, из которых необходимо составить предложение.

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

Операция вычитания двух дат определена и выдает в качестве результата число дней между датами. (Для Общих дат - число дней между срединными точками этих Общих дат) Можно также вычитать из операнда типа дата или Общая дата число - результатом такой операции будет дата, уменьшенная на соответствующее число дней.

Определена также и операция вычитания для двух операндов типа "Точка на карте". Результатом этой операции будет расстояние между этими точками в метрах.

Логические значения вычитать нельзя. В этом случае, как и во всех других случаях недопустимого смешивания типов операндов в операции вычитания, результатом будет логическое значение FALSE ("нет").

Операция умножения ( * )

Для числовых значений операция умножения выполняет арифметическое умноженние операндов. Числовые операнды могут быть как целыми числами, так и числами с плавающей точкой. Тип результата будет целым числом в случае перемножения двух целых чисел. Если хотя бы один из операндов является числом с плавающей точкой, то результат умножения также будет числом с плавающей точкой.

Для символьных (строковых) значений операции умножения, также как и операция сложения, выполняет катенацию (сцепление) строк, представляющих её операнды. Однако, в отличие от операции катенации s1+s2, результатом катенации строк s1*s2 является строка "s1_s2", составленная путем присоединения строки s2 к строке s1 с вставкой знака "подчеркивание" между ними.

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

Перемножать даты нельзя. Также нелья перемножать операнды типа "Точка на карте".

Логические значения перемножать можно. Операция перемножения логических значений эквивалентна операции "логическое И".

Во всех случаях недопустимого смешивания типов операндов в операции умножения, результатом будет логическое значение FALSE ("нет").

Операция деления ( / )

Для числовых значений операция деления выполняет арифметическое деление операндов. Если второй операнд равен нулю, то результат деления не определен. Числовые операнды могут быть как целыми числами, так и числами с плавающей точкой. Тип результата будет целым числом в случае деления двух целых чисел. Если хотя бы один из операндов является числом с плавающей точкой, то второй операнд также приводится к плавающему виду, результат деления также будет числом с плавающей точкой.

Для символьных (строковых) значений операции деления, также как и операция сложения, выполняет катенацию (сцепление) строк, представляющих её операнды. Однако, в отличие от операции катенации s1+s2, результатом катенации строк s1/s2 является строка "s1\ns2", составленная путем присоединения строки s2 к строке s1 с вставкой знака "перевод строки" между ними.

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

Делить даты друг на друга нельзя. Также операция деления не определена для операндов типа "Точка на карте".

Логические значения делить друг на друга нельзя. В этом случае, как и во всех других случаях недопустимого смешивания типов операндов в операции сложения, результатом будет логическое значение FALSE ("нет").

Операции сравнения ( =, #, <, >, <=, >= )

Операции сравнения применимы только к операндам одного и того же типа. Исключение составляют числовые типы - сравнивать целые числа и числа с плавающей точкой можно. Результатом операции сравнения является логическое значение, формируемое в соответствии с используемой операцией сравнения.

Даты можно сравнивать с общими датами. Также при сравнении дат одна из дат может быть константной датой, то есть заданной в виде текстовой строки, ограниченной кавычками.

Операции сравнения на неравенство для операндов типа "Точка на карте" сравнивают значения широты для точек.

Операция отрицания ( ! )

Операция отрицания является унарной - она имеет только один операнд. Эта операция применима только к логическому значению, поэтому перед выполнением операции её операнд приводится к логическому типу. Результатом операции отрицания является логическое значение, противоположное значению операнда.

Операции логическое "И" и логическое "ИЛИ" ( & и | )

Операции логическое "И" и логическое "ИЛИ" применимы только к логическим операндам. Как правило, операндами этих операций являются результаты операций сравнения. Результат логических операций - также логическое значение.

Результатом операции логическое "И" будет значение TRUE, если значения обоих её операндов - TRUE. Если хотя бы один операнд имеет знвчение FALSE, то и операция логическое "И" будет иметь в качестве результата значение FALSE.

Результатом операции логическое "ИЛИ" будет значение TRUE, если значение хотя бы одного из её операндов - TRUE. Если оба операнда имеют знвчение FALSE, то операция логическое "ИЛИ" будет иметь в качестве результата значение FALSE.

Операция логическое "И" имеет приоритет выше, чем операция логическое "ИЛИ", однако, приоритет обеих логических операций ниже приоритета операций сравнения. Таким образом, выражение :

a < b | c > d & e = f

эквивалентно выражению :

(a < b) | ( (c > d) & (e = f) )

Операция выбора по условию ( a?b:c)

Операция выбора по условию является тернарной - она имеет три операнда. Первым операндом является логическое значение. Второй и третий операнды могут быть любого типа, однако обычно их типы совпадают. Эта операция выполняется следующим образом: проверяется значение первого операнда. Если операнд "a" имеет значение TRUE, то результатом операции выбора по условию a?b:c будет операнд b. В противном случае (если операнд "a" имеет значение FALSE) - результатом будет значение операнда c.


В качестве операндов формулах могут использоваться вызовы функций. Можно вызывать следующие функции :

INT(a) приведение к целочисленному значению
FLOAT(a) приведение к числу с плавающей точкой
SIN(a) вычисление синуса
COS(a) вычисление косинуса
MAX(a,b) определение максимума
MIN(a,b) определение минимума
RNUM() номер текущей строки (записи)
TODAY() сегодняшняя дата
DAY(d) день месяца в дате
MONTH(d) номер месяца в дате
YEAR(d) число лет в дате
DATEDIFF(d1,d2) вычисление числа лет, месяцев и дней между двумя датами
ADDDAY(d,n) добавить к дате n дней
ADDMONTH(d,n) добавить к дате n месяцев
ADDYEAR(d,n) добавить к дате n лет
DATETEXT(d) преобразование даты в текст
DATETEXTSHORT(d) преобразование даты в текст укороченного формата
PRINTF1(f,a) форматированная строка с одной управляющей последовательностью
PRINTF2(f,a,b) форматированная строка с двумя управляющими последовательностями
PRINTF3(f,a,b,c) форматированная строка с тремя управляющими последовательностями

Наименования функций всегда должны начинаться с прописной буквы. Остальный буквы наименования могут быть как строчными, так и прописными. Аргументами функций могут быть любые выражения, в том числе вызовы других функций. Таким образом, значением формулы :

DateText( AddDay( Today(), 7 ) )

будет текстовая строка, представляющую дату, следующую через неделю после сегодняшней.


Функция INT приводит значение своего аргумента к целому числу. Аргументом этой функции может быть значение любого типа.
Число с плавающей точкой преобразуется к целому путем отбрасывания дробной части.
Приведение строкового значения к целому имеет смысл лишь в случае, если строка - это текстовое представление целого числа.
Логическое значение TRUE преобразуется в 1, FALSE преобразуется в 0.
Дата преобразуется в целое путем вычисления числа дней от "нулевой даты" (Рождества).


Функция FLOAT приводит значение своего аргумента к числу с плавающей точкой. Аргументом этой функции может быть значение любого типа.
Приведение строкового значения к числу с плавающей точкой имеет смысл лишь в случае, если строка - это текстовое представление числа с плавающей точкой.
Логическое значение TRUE преобразуется в 1.0, FALSE преобразуется в 0.0
Дата преобразуется в число путем вычисления числа дней от "нулевой даты" (Рождества).

SIN(a), COS(a)

Функции SIN и COS вычисляют значения синуса и, соответственно, косинуса от своего аргумента. Аргументами этих функций должны быть числовые значения. Значением этих функций будет число с плавающей точкой.

MAX(a,b), MIN(a,b)

Функции MAX и MIN сранивают значения своих аргументов и выдают в качестве результата максимальный или минимальный из них. Аргументами этих функций могут быть числовые значения, даты, либо текстовые значения. Для текстовых значений аргументы сравниваются посимвольно, в лексикографическом (алфавитном) порядке. Типы аргументов должны совпадать. При сравнении Точек на карте сранивается значение широты, то есть функция MAX(a,b) выбирает более северную точку, а функция MIN(a,b) - более южную.


Функция RNUM не имеет аргументов и выдаёт в качестве результата целочисленное значение - номер текущей строки (записи) таблицы.


Функция TODAY не имеет аргументов и выдаёт в качестве своего результата значение типа дата, представляющее текущую дату.


Функция DAY имеет один аргумент типа дата. Значение этой функции является целое число, соответствующее дню, указанному в дате-аргументе.


Функция MONTH имеет один аргумент тапа дата. Значение этой функции является целое число, соответствующее месяцу, указанному в дате-аргументе (номер месяца, т.е. январю соответствует 1).


Функция YEAR имеет один аргумент тапа дата. Значение этой функции является целое число, соответствующее году, указанному в дате-аргументе.


Функция DATEDIFF вычисляет, сколько лет, месяцев и дней прошло от одной даты до другой. Результат выдается в виде даты, но это "не настоящая" дата. Предполагается, что далее к ней будут применены функции для выделения отдельных компонентов даты:
YEAR(DATEDIFF(d1,d2)) - для определения числа лет,
MONTH(DATEDIFF(d1,d2)) - для определения числа месяцев,
DAY(DATEDIFF(d1,d2)) - для определения числа дней.


Функции ADDDAY, ADDMONTH и ADDYEAR имеют два аргумента. Первый аргумент имеет тип дата, а второй аргумент - это целое число, представляющее число дней, месяцев или лет, на которое указанная дата должна быть увеличена (это число может быть как положительным, так и отрицательным). Значение функции вычисляется путем увеличения исходной даты на указанное число дней, месяцев или лет.


Функции DATETEXT и DATETEXTSHORT преобразовывают дату, указанную в качестве аргумента, в текстовый вид. Результатом этих функций будет текстовая строка, представляющая дату, то есть строка с указанием наименования месяца (например 1 Января 2013). Различие между этими функциями заключается в том, что в случае функции DATETEXT название месяца указывается полностью, а функция DATETEXTSHORT формирует строку с сокращенным наименованием месяца(например 1 Янв 2013). Функции DATETEXT работает также для Общих дат.

PRINTF1(f,a), PRINTF2(f,a,b), PRINTF3(f,a,b,c)

Функции PRINTF1, PRINTF2 и PRINTF3 форматируют строку, указанную в качестве первого аргумента (f), вставляя в неё следующие аргументы (a,b,c), преобразованные в соответствии с указанными в этой строке управляющими последовательностями. Эти функции соответствуют случаям, когда в форматируемой строке указана одна, две или три управляющие последовательности. Соответственно, в дополнение к форматируемой строке в этих функциях указываются один, два, или три дополнительных аргумента, которые преобразуются и вставляются в форматируемую строку вместо этих управляющих последовательностей. Семантика этих функций полностью совпадает с семантикой стандартной функции printf языков программирования С и С++, с той лишь разницей, что число аргументов в них жестко фиксировано.

Функции PRINTF1, PRINTF2 и PRINTF3 выдают в качестве результата текстовую строку, полученную путем замены в строке форматирования (аргумент f) всех управляющих последовательностей значениями параметров, которые предварительно преобразуются в текстовый вид в соответствии с флагом, шириной, точностью и типом, указанными в соответствующей управляющей последовательности.

Первый аргумент функций PRINTF должен быть текстового типа, он должен задавать форматируемую строку, то есть текстовую строку, в которую вставлены управляющие последовательности. Все символы, кроме управляющих последовательностей, копируются в итоговую строку без изменений. Признаком начала управляющей последовательности является символ % (процент), для вывода самого знака % используется его удвоение %%.

Управляющая последовательность имеет вид:


Обязательными составными частями являются символ начала управляющей последовательности (%) и тип.

Ширина задается как десятичное число, которое указывает минимальную ширину поля (включая знак для чисел). Если представление величины больше, чем ширина поля, то запись выходит за пределы поля (например, %2d для величины 100 даст значение поля в три символа). Если представление величины менее указанного числа, то оно будет дополнено (по умолчанию) пробелами слева, но это поведение может меняться предшествующими флагами.

Тип в управляющей последовательности указывает тип соответствующего ему операнда функции PRINTF и задает способ его преобразование в текстовое значение.

В управляющих последовательностях, соответствующим целочисленным аргументам можно использовать следующие типы:

d — десятичное знаковое число. По умолчанию записывается с правым выравниванием, знак пишется только для отрицательных чисел.

o — восьмеричное беззнаковое число

x или X — шестнадцатеричное число, x использует маленькие буквы для представления числа (abcdef), X - большие (ABCDEF)

c — вывод символа с кодом, соответствующим переданному аргументу

В управляющих последовательностях, соответствующим числовым аргументам с плавающей точкой можно использовать следующие типы:

f — число с плавающей точкой. По умолчанию выводятся с точностью 6 (число знаков после точки), Если число по модулю меньше единицы, перед десятичной точкой пишется 0.

e или E — число с плавающей точкой в экспоненциальной форме записи (вида 1.1e+44); e выводит символ «e» в нижнем регистре, E — в верхнем (3.14E+0);

g — число с плавающей точкой; форма его представления будет зависетьь от значения числа (f или e - как разумнее);

a — число с плавающей точкой в шестнадцатеричном виде.

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

Для числовых аргументов (целых и с плавающей точкой) в управляющей последовательности можно указать один из следующих флагов:

- (дефис) — выводимое значение выравнивается по левому краю в пределах минимальной ширины поля (в отсутствие этого флага - по правому).

+ (плюс) — всегда указывать знак (плюс или минус) для выводимого десятичного числового значения (в отсутствие этого флага знак указывается только для отрицательных чисел).

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

0 (ноль) — дополнять поле до ширины, указанной в поле ширина управляющей последовательности, символом 0 слева (в отсутствие этого флага вставляются пробелы)

Нечисловые аргументы функций PRINTF всегда интерпретируются как строковые значения. То есть логические значения и значения типа дата перед подачей их на вход управляющей последовательности будут преобразованы в текстовый вид. В управляющих последовательностях, соответствующим нечисловым аргументам, можно использовать только один тип:

s — вывод строки.

Вместе с этим типом в управляющей последовательности можно указать ширину поля (которая задаёт минимальную ширину), и точность (которая задаёт максимальную ширину выводимого поля). Если задана ширина, то можно также задать и флаг - (дефис) для выравнивания текста по левому краю поля.

Подробные сведения о синтаксисе форматируемой строки, синтаксисе и семантике управляющих последовательностей можно найти, например, в статье из Википедии Синтаксис строки форматирования.

Перейти на начало страницы


В данном примере логической таблицы поля "ФИО пациента" и "Врач" являются кодированными. Поле "ФИО пациента" кодировано файлом sem_kart.dbf, представляющем список пациентов. Фактическая фамилия пациента хранится в поле K1_3 файла sem_kart.dbf, а ссылка к ней из основного файла осуществляется через поле R1 - по коду в этом поле ищется запись в файле sem_kart.dbf (со значением в поле ключа K1_2, совпадающим со значением R1), и поле значения K1_3 этой записи и считается искомым именем пациента.

Другое поле в данном примере - "Врач" - кодируется справочником "sprav1.dbf". Значение поля "Врач" будет не просто выбираться из поля R2 основного файла, на который ссылается логическая таблица. Вместо этого поле R2 будет расшифровываться - Менеджер Данных будет сравнивать его значение со значением поля ключа K_FILE справочника "sprav1.dbf" и выбирать искомое значение из поля S_FILE.

Однако использование справочника "sprav1.dbf" в данном примере имеет некоторую особенность. Дело в том, обычно в реальных базах данных многие поля кодируются и число справочников бывает довольно большим. Для сокращения общего числа файлов-справочников используют следующий прием. Несколько справочников объединяют в один файл (мульти-справочник) и для различения записей разных справочников в этот файл добавляют дополнительный столбец (поле), в котором записывается дополнительный признак, позволяющий отличить записи оного справочника от записей другого (например, номер кодировочной таблицы).

При работу с мульти-справочником для расшифровки кодового значения недостаточно только сравнивать его со значением поля ключа в справочнике - необходимо задать некоторое дополнительное условие, позволяющее идентифицировать подсправочник, в котором производится поиск. Обычно это условие связано с проверкой значения дополнительного поля, введенного в мульти-справочник для этой цели.

В приведенном выше примере файл "sprav1.dbf" является мульти-справочником. Кроме ключевого поля K_FILE и поля значения S_FILE в него включено дополнительное поле N_FILE, идентифицирующее подсправочник, к которому относится запись. Для всех записей подсправочника врачей в этом поле записан код 'K6_15'. Таким образом, дополнительным условием для данного кодированного поля является условие

При записи дополнительных условий следует соблюдать следующие правила:

  • Дополнительное условие должно начинаться с названия дополнительного поля,
  • В зависимости от типа дополнительного поля значение, с которым это поле сравнивается, должно указываться:
    • в одиночных кавычках ( 'K6_15' ), если это текстовое поле
    • в виде #ГГГГ-ММ-ДД# для полей типа дата ( #2010-03-29# )
    • просто в виде числа (без ограничивающих кавычек) для числовых полей ( 17.21 )

И, наконец, последняя графа описания таблицы (графа "ввод") задает признак необходимости расшифровки по справочнику при вводе значений кодированного поля. Если этот признак установлен, то Менеджер данных при вводе значения в данное поле будет высвечивать дополнительное окно и предлагать выбрать вводимое значение из списка доступных (имеющихся в справочнике). Если же признак "ввод" не установлен, то ввод в данное кодированное поле не будет ничем отличаться от ввода в обычное поле, то есть будет осуществляться прямым набором значения.

Обычно признак "ввод" устанавливается для полей, кодированных небольшими справочниками и в случаях, когда важно, чтобы пользователь ввводил только те значения, которые имеются в справочнике. В случаях же, когда кодированное поле ссылается на большой справочный файл, такой подход неудобен и в этом случае признак "ввод" устанавливать не следует.

Кодированные поля могут использоваться не только для С помощью кодированных полей можно ссылаться из одной таблицы на данные другой таблицы, обеспечивая связи между различными объектами в базах данных.

Go to top of the page

Administration and Settings

Administration and Settings dialog window

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

Это диалоговое окно вызывается нажатием кнопки Администрирование "Администрирование" в главном окне Менеджера Данных. В верхней части окна находится переключатель режима работы Менеджера Данных, а чуть ниже - переключатели общих свойств (пока что только один - переключатель показа полных путей).

Окно настройки Менеджера Данных

Кнопка Выбор приложения "Переключиться на другое приложение", расположенная в центре окна, предназначена для вызова диалоговой панели управления выбором и вызовом на исполнение нового приложения. Там же можно управлять загрузкой типовых приложений из сети, а также наоборот, подготавливать своё приложение для загрузки в сетевую библиотеку приложений.

Рядом с кнопкой переключения приложений находятся поля, в которых указывается наименование текущего приложения (приложения, которое выполняется Менеджером Данных в настоящий момент), а также полный путь к корневой папке текущего приложения.

Ниже расположены две большие кнопки для сохранения и восстановления текущих позиций и размеров диалоговых окон, открытых в Менеджере Данных. Нажатие на кнопку "Сохранить позиции открытых окон" приводит к запоминанию набора, позиций и состояний открытых в Менеджере Данных в настоящий момент окон (кроме самого окна настройки и администрирования), так что состояние текущего приложения запоминается и становится состоянием "по умолчанию", которое будет восстанавливаться всякий раз, когда Менеджер Данных будет запускаться на исполнение.

Кнопка Настройка Баз Данных "Настройка Баз Данных"

Кнопка Настройка директориев "Настройка путей к стандартным папкам"

Кнопка Редактирование сценариев "Редактирование сценариев"

Кнопка Редактирование панелей "Редактирование панелей"

Go to top of the page

Data Manager mode settings




Go to top of the page

Data Manager applications




Go to top of the page

Database settings




Go to top of the page

Standard foolders settings




Go to top of the page

Application Scenario editing




Go to top of the page

Panels creation and editing




Go to top of the page

Special and auxilary Data Manager Files list




Go to top of the page


Special notes about access to Excel files

Менеджер Данных может работать информацией, подготовленной в Excel. В настоящий момень поддерживается только работа с файлами в формате Excel 1997-2003 (файлами XLS).

С точки зрения Менеджера Данных таблицей является именованный диапазон смежных ячеек на листе Excel. Это должна быть регулярная таблица. В первой её строке должен находиться заголовок таблицы, задающий имена столбцов. Следующие строки представляют данные и должны иметь одинаковую структуру - все значения в столбце должны быть одного и того же типа. Если типы данных в столбце будут чередоваться, то это приведет к ошибке чтения Менеджером Данных записей из этой таблицы.

Для присвоения имени диапазону смежных ячеек (таблице) необходимо:

  • открыть в Excel файл XLS,
  • выделить соответствующие таблице смежные ячейки,
  • подать команду Insert / Name, указав в ней нужное имя.

В Excel 2007 после выделения ячеек следует нажать правую кнопку мыши и выбрать команду Имя диапазона.

Файл XLS (книга excel) может содержать несколько таблиц.

Go to top of the page

Data Manager modes

  • Administration mode. This mode is mainly for Data Manager adjustment to user's databases. Definition of logical Data Manager Tables and their connection to phisical database files / tables are provided in this mode. It allows also to set up such Data Manager parameters as location (directories) of databases. Some understanding of particular database staff and structure is needed to work in this mode. However no programming skills is needed.
  • Standard mode (execution mode). This mode allows the user to work with Data Manager applications implemented on users database. Типичное приложение обеспечивает выбор и представление информации из базы данных в различном виде, а также ввод данных и редактирования таблиц по выбранной форме ввода, исполнение запросов к базе данных для поиска необходимой информации, печать результатов запроса или их сохранение в виде файла / таблицы для дальнейшей обработки.

Go to top of the page

All rights reserved. All materials on this site are protected by Russian and International lows
© C-Rover Software, 2010-2013