OPENCHILDDOC

Материал из Фабиус wiki
Перейти к: навигация, поиск

Функция открывает этаж документа

Затем его нужно закрывать CloseForm

OpenChildDoc( 1.kinddoc, 2.lvlnum, 3.parent, 4.SaveStatus, 5.ParentForm, 6.mModFilter, 7.IsCondition, 8.Month, 9.Year, 10.Day, 11.TableToReplace, 12.DisFormEvent, 13.OpenPrevLvl, 14.IsNewForm, 15.OpPath, 16.RefPath, 17.closefrm, 18.CurLevel, 19.FormClass, 20.Access )

Примеры

 OpenChildDoc( 'EOR', '2', DOCS1->RGNUM )
  uth2 := OpenChildDoc( 'UTH', '2', ( uth1 )->RGNUM,, ( uth1 )->( GetForm( GetArea() ) ) )
 // документ YTM, уровень 1
 ytm1 := OpenChildDoc( 'YTM', '1', ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data )  )
 flt := [ KINDDOC = 'YTM' and LVLNUM = '1' ]
 ( ytm1 )->( SetFilter( flt ) )
 ( ytm1 )->( Refresh() )
 // открыть уровень PAZ2 ( работает, если курсор установлен на уровне PAZ1 )
 paz2 := OpenChildDoc( 'PAZ', '2', RGNUM )
OpenChildDoc( 'U_N', '1', ~ParentForm := "", ~IsCondition := false, ~Month := Month( data ), ~Year := Year( data ) )

Использование

SCADA

Ошибки

Если файл на диске был поврежден, то эта функция вам может вернуть ошибку

25-12-2015 10-30-53.png


В этом случае смотрите статью Как восстановить разрушенные данные

Предположим, adtfix не нашел ошибок

25-12-2015 10-59-42.png

Читаем лог

 Advantage Table Repair Utility ver 1.6
 Started on 25.12.2015 at 17:57:22
 *** Begin ADT Check on: f:\FABIUS\Temp\1\DOCP1115.ADT ***
   Memo file check on: f:\FABIUS\Temp\1\DOCP1115.ADM
   Memo blocks exist without a corresponding record.
   This is not corruption, i.e. not an error. You can use Advantage Data Architect
   or AdsPackTable to pack the table and release these blocks.
   These blocks account for 27.69% of the total file size.
   DOCP1115.ADM passed ADM check.
   DOCP1115.ADT passed ADT check.

Упаковываем таблицу

 Advantage Table Repair Utility ver 1.6
 Started on 25.12.2015 at 18:09:53
 *** Begin ADT Check on: f:\FABIUS\Temp\2\DOCP1115.ADT ***
   Memo file check on: f:\FABIUS\Temp\2\DOCP1115.ADM
   DOCP1115.ADM passed ADM check.
   DOCP1115.ADT passed ADT check.

Сервис - Восстановление - Разрушенных баз - Документов

Исправление некорректных значений

я Администратор - Данные - Восстановление - Разрушенных баз данных - Исправление некорректных значений

7038 Invalid record number

Problem: Attempted to read a record and the record number is greater than the number of records in the file. This error often results from using an index that contains more keys than the table has records. This can occur if a Pack or Zap is performed on the table when the index file(s) was closed.

Solution: Reposition to a valid record number. Reindex the index(es) that contain more keys than the table has records.

Удаляем индекс

После этого ошибка исчезает

25-12-2015 11-32-03.png

Смотрите также

Полезные функции

Функции Delphi

Corrupt index

AddAll