ПредишенСледващото

File = sozdatObekt ( "XBASE"); // създаване на препратка към файла DBF
Fayl.OtkrytFayl ( "catalog.dbf"); // отваряне на файла на диска
Fayl.KodovayaStranitsa (1); // задаване на кодиране: 0 - прозорци, 1 - DOS

Ако Fayl.Otkryta () = 0 Тогава // проверява дали да отворите файл провали
. Доклад ( "Не може да бъде отворен файл!");
ENDIF;

Fayl.Pervaya (); // се позиционира на първия запис
Докато Fayl.VKontse () = 0 // Loop докато достигне цикъл край обрат
. NomerZapisi Fayl.NomerZapisi = (); // получите текущия брой рекорд
. = Some_file.name на NazvTovara; // получите стойността на поле
. Цена = Fayl.PoluchitZnacheniePolya ( "цена"); // така че могат да го направят, но малко по-бавно
. Fayl.Sleduyuschaya (); // премине към следващия запис
KonetsTsikla;

Fayl.Poslednyaya (); // се позиционира на първия запис
Докато Fayl.VNachale () = 0 // Loop, докато стигнат до цикъла старт обрат
. = Some_file.name на NazvTovara;
. Цена = Fayl.PRICE;
. Файл. Предишна (); // преминете към предишното влизане
KonetsTsikla;

За п = 1 Чрез Fayl.KolichestvoZapisey () // цикъл всички са ясни, по мое мнение
. Fayl.Pereyti (п); // се нагласи до специфична запис
. = Some_file.name на NazvTovara;
. Цена = Fayl.PRICE;
KonetsTsikla;

Fayl.ZakrytFayl (); // моля не забравяйте

File = sozdatObekt ( "XBASE"); // създаване на препратка към файла DBF

// определи структурата на файловете
// Синтаксис: DobavitPole (<Название>,<Тип>,<Длина>,<Точность>)

Fayl.DobavitPole ( "NAME", "S", 50,0);
Fayl.DobavitPole ( "цена", "N", 10,2);

Fayl.SozdatFayl ( "catalog.dbf"); // създадете файл физически

SprTovary.VybratElementy ();
Докато SprTovary.PoluchitElement () = 1 цикъл
. Fayl.Dobavit ();
. = Some_file.name на SprTovary.Naimenovanie;
. Fayl.UstanovitZnacheniePolya ( "цена", SprTovary.Tsena) // така също може да бъде;
. Fayl.Zapisat ();
KonetsTsikla;

Fayl.ZakrytFayl (); // моля не забравяйте

Работа с DBF файл структура

Например, да създадете файл, който е идентичен по структура на първоначалния.
// При този метод се прилага OpisaniePolya която връща характеристиките на областта с определен брой
// синтаксис OpisaniePolya (<НомерПоля>,<НазваниеПоля>,<Тип>,<Длина>,<Точность>)

ФАЙЛ1 = SozdatObekt ( "XBASE");
ФАЙЛ2 = SozdatObekt ( "XBASE");

За п = 1 С Fayl1.KolichestvoPoley () цикъл
. NazvPolya = "";
. Тип = "";
. Дължина = 0;
. Acc = 0;
. Fayl1.OpisaniePolya (п, nazvPolya, Тип, дължина, Acc);
. Fayl2.DobavitPole (nazvPolya, Тип, Дължина, ACC);
KonetsTsikla;

За да работите с често се използват DBF файлове с неизвестна структура следните техники:
PoluchitZnacheniePolya (<ИмяПоля>);
UstanovitZnacheniePolya (<ИмяПоля>,<значение>);

Използване на отдалечени профили
DBF файлове са подредени по такъв начин, че премахването на записа не физически премахнете записите от файла. Записът е само маркиран за изтриване и игнорира, когато повтаряне. По този начин размерът на файла остава същата. За да изтриете всички физически записи, маркирани за изтриване е необходимо да се прилагат методи на компресиране. вградени езикови инструменти ви позволяват да се работи с такива записи, за да се докосне до тях и дори да заличава марката за изтриване.

Fayl.PokazyvatUdalennye (1);
Fayl.Pervaya ();
Докато Fayl.VKontse () = 0 цикъл
. Ако Fayl.ZapisUdalena () = 1 Тогава
. Fayl.Vosstanovit ();
. ENDIF;
. Fayl.Sleduyuschaya ();
KonetsTsikla;

Fayl.Pervaya ();
Докато Fayl.VKontse () = 0 цикъл
. Ако Fayl.PRICE <1000 Тогда
. Fayl.Udalit ();
. ENDIF;
. Fayl.Sleduyuschaya ();
KonetsTsikla;

Fayl.Szhat (); // физически изтриване на записи

Можете да изтриете всички записи с едно движение. В същото време те са физически изтрита и не могат да бъдат възстановени.
Fayl.OchistitVse ();

Заслужава да се отбележи за метода Clear (), че изчиства всички области на текущия запис. Атрибути съответните области на номера на типовото "низ" печалба стойност "празен ред" - 0, логично - 0, - "празна дата".

Работа с индекси

За организирането поръчване на съдържанието на база данни файл и да го потърсите на стойността на една или повече области на механизма на използвания индекс. Нейното прилагане може да се сравни с сортиране подаване на определена функция (комбинация от функции). Въпреки това, за разлика от каталозите, файлът с базата данни може да има няколко индекси, и следователно да се поръча едновременно по няколко причини. Индекси се съхраняват в индексния файл. Файлът с индекс може да съдържа информация за повече от един индекс. Препоръчва се за DBF файл, за да има право на един индексен файл, който съхранява всички показатели за този файл.

Всеки индекс има име, в знак на уникалността на изразяването на индекс филтър. индекс име се използва за идентифициране на индекса. индекс и филтърните изрази са написани на специални езикови изрази, изчисли стойността на които, за всеки запис, за да се определи местоположението си при поръчване и необходимостта от поставянето им в подреден списък (индекс може да се споменават не всички настолни записи, но само за задоволяване на изразяване на филтъра). Уникална индекс (като уникален набор атрибут) позволява да има референтен индекс на записа само с различна стойност на индекс израз.

Основното правило: ние се нуждаем индекс за бързо търсене на желаната позиция.

Ние трябва да бързо да намерите Комаров. В неподредена да търси файла източник може само груба сила на всички записи, които ще бъдат много дълго време за голям брой записи. Индексът намери Комаров може да бъде много бързо, защото индексът се сортирано по Последно Името на полето. В същото време ние сме на брой физически запис във файла DBF и се получи прав позициониране на желаната позиция.

След създаването на структурата на базата данни, можете да добавите индекси, както следва:
// синтаксис: DobavitIndeks (<Название>, <Выражение>, <Уникальность>, <Убывание>, <Фильтр>)

File = SozdatObekt ( "XBase");
Fayl.DobavitPole ( "NAME", 1, 19, 3);
Fayl.DobavitPole ( "цена", 2, 25, 0);
Fayl.DobavitIndeks ( "IDXCODE", "код", 1, 0, "");
Fayl.DobavitIndeks ( "IDXNAME", "NAME", 0, 0, "");
Fayl.DobavitIndeks ( "IDXNAMECODE", "NAME + КОД", 0, 0, "");
Fayl.SozdatFayl ( "mydb.dbf", "mydb.cdx");

// Вариант 1
Fayl.TekuschiyIndeks ( "IDXNAME");
Fayl.Nayti ( "Смит", 0); // стойност се предава, а в режим на търсене

Вариант 2 //
Fayl.TekuschiyIndeks ( "IDXNAMECODE");
Fayl.Klyuch .name = "Смит";
Fayl.Klyuch .CODE = 123;
Fayl.NaytiPoKlyuchu (0);

// след препоръчителната отново катастрофата променям всички индекси
Fayl.Pereindeksirovat ();

Новини
Knights етер теория

Свързани статии

Подкрепете проекта - споделете линка, благодаря!