Контакти

Приклад роботи з dbf на c. Чим відкрити DBF? Видалення записів в файлі DBF

DBF - широко поширений формат зберігання даних, що з'явився в 80-х роках минулого століття. Вперше формат застосовувався в сімействі СУБД dBase. У зв'язку з популярністю і широким поширенням dBase, було створено безліч dBase-подібних програмних продуктів, Які отримали збірна назва xBase. Незважаючи на значний вік формату, він до цих пір досить широко використовується. У даній статті розглядаються способи роботи з DBF з «1С: Підприємство».

В «1С: Підприємство» для роботи з файлами формату DBF (версія dBase III) застосовується спеціальний програмний об'єкт - xBase. Робота з цим об'єктом зазвичай не викликає труднощів.

Увага!

При роботі з файлами DBF слід пам'ятати, що ім'я файлу повинна задовольняти обмеження 8.3.

Увага!

Об'єкт xBase доступний як на стороні клієнта, так і на стороні сервера. Слід продумувати клієнт-серверне взаємодія при вирішенні кожної конкретної задачі.

Читання файлу DBF

Читання даних з файлу DBF проводиться за кілька послідовних етапів:

  1. Створення об'єкта XBase;
  2. Відкриття файлу;
  3. Послідовний перебір всіх рядків файлу і зчитування значень полів;
  4. Закриття файлу.
ДБФ \u003d Новий XBase; ДБФ. ОткритьФайл ( "D: \\ MyFile.dbf"); // Етап 2. Відкриття файлу Поки Істина Цикл // Етап 3. Перебір рядків файлу Повідомити (ДБФ. NAME); Якщо НЕ ДБФ. Наступна () Тоді // Позиціонування на наступному записі перервати; КонецЕсли; КонецЦікла; ДБФ. ЗакритьФайл (); // Етап 4. Закриття файлу

Можна використовувати декілька змінений алгоритм перебору рядків файлу:

Поки НЕ ДБФ. Наприкінці () Цикл Повідомити (ДБФ. NAME); ДБФ. Наступна(); КонецЦікла;

Вивантаження в файл DBF

Етапи вивантаження в файл DBF:

  1. Створення об'єкта XBase;
  2. Вказівка \u200b\u200bкодування (якщо не вказати, то буде використовуватися кодування ANSI);
  3. Опис полів;
  4. Створення файлу;
  5. Цикл з додаванням і заповненням рядків;
  6. Закриття файлу.

Розглянемо цей процес на прикладі:

ДБФ \u003d Новий XBase; // Етап 1. Створення об'єкта XBase ДБФ. Кодування \u003d КодіровкаXBase. OEM; // Етап 2. Вказівка \u200b\u200bкодування ДБФ. Поля. Додати ( "CODE", "S", 9); // Етап 3. Опис імені та типу поля ДБФ. Поля. Додати ( "NAME", "S", 40); ДБФ. СоздатьФайл ( "D: \\ MyFile.dbf"); // Етап 4. Створення файлу Вибірка \u003d Довідники. Номенклатура. Вибрати (); Поки Вибірка. Наступний () Цикл ДБФ. Додати (); // Додавання рядка ДБФ. CODE \u003d Вибірка. код; // Заповнення значення поля ДБФ. NAME \u003d Вибірка. Найменування; ДБФ. Записати (); // Запис рядка КонецЦікла; ДБФ. ЗакритьФайл(); // Етап 6. Закриття файлу

При вказівці кодування використовується тип КодіровкаXBase, який може приймати два значення:

  • ANSI - формат Windows;
  • OEM - формат DOS.

Додавання нового поля при описі структури має синтаксис

Додати (< Имя>, < Тип>, < Длина>, < Точность>)

Доступні наступні типи:

  • «N» - число;
  • «S» - рядок;
  • «D» - дата;
  • «L» - логічне;
  • «F» - аналогічно «N» - число.

Довжина поля є обов'язковим для типів полів «N», «F» і «S».

Робота з індексами

Спільно з файлом DBF може використовуватися індексний файл, в якому може міститися інформація про один або більше індексі. Наявність індексів уможливлює використання пошуку, а не тільки послідовного перебору всіх рядків файлу.

При створенні індексного файлу слід задати:

  • Перелік індексів;
  • Шлях збереження індексного файлу (на етапі 4 вивантаження).

Приклад створення індексного файлу:

ДБФ . Індекси інфляції. Додати ( "INDCODE", "CODE"); ДБФ. СоздатьФайл( "D: \\ MyFile.dbf", "D: \\ index.cdx");

Процедура додавання нового індексу має синтаксис:

Додати (< Имя>, < Выражение>, <Уникальность>, < Убывание>, < Фильтр >)

Для використання індексів при читанні з файлу DBF слід:

  • Вказати шлях до індексного файлу (на етапі 2 завантаження);
  • Задати поточний індекс.

Приклад відкриття файлу DBF з використанням індексного файлу:

ДБФ . ОткритьФайл ( "D: \\ MyFile.dbf", "D: \\ index.cdx"); ДБФ. ТекущійІндекс \u003d ДБФ. Індекси інфляції. INDCODE;

Увага!

При відкритті файлу DBF позиціонування відбувається на першому записі в файлі. Перший запис у файлі не відповідає першому записі в індексі. У зв'язку з цим при використанні індексів перед тим, як послідовно обходити рядки, необхідно позиційований на першому рядку індексу. Це можна зробити шляхом Перша (), наприклад:

ДБФ. Перша ();

Для пошуку може використовуватися одна з двох функцій:

  • знайти (< Ключ>, < Режим >) ;
  • НайтіПоКлючу (< Режим >) .

В результаті роботи обох функцій повертається значення з типом булево (знайдено запис з зазначеними умовами чи ні). У разі успішного пошуку поточний покажчик встановлюється на знайденої рядку. Як режим пошуку може використовуватися одне із значень:

  • «>=»;
  • «>»;
  • «<=»;
  • «<«.

Розглянемо пошук у файлі DBF на прикладах:

ДБФ \u003d Новий XBase; ДБФ. ОткритьФайл ( "D: \\ MyFile.dbf", "D: \\ index.cdx"); // При відкритті файлу DBF додатково вказується індексний файл ДБФ. ТекущійІндекс \u003d ДБФ. Індекси інфляції. INDCODE; // Установка поточного індексу // пошук методом Знайти: Якщо ДБФ. Знайти ( "000000003", "\u003d") Тоді Повідомити (+ ДБФ. NAME); Інакше Повідомити ( "Не знайдено"); КонецЕсли; // пошук методом НайтіПоКлючу: ДБФ. Ключ. CODE \u003d "000000002"; Якщо ДБФ. НайтіПоКлючу ( "\u003d") Тоді Повідомити ( "Знайдено. Найменування елемента:" + ДБФ. NAME); Інакше Повідомити ( "Не знайдено"); КонецЕсли; ДБФ. ЗакритьФайл();

Видалення записів в файлі DBF

Видалення запису відбувається методом Видалити ():

ДБФ . вилучити();

Але при використанні цього методу запис не видаляється з файлу безповоротно, їй присвоюється позначка видалення. При переборі рядків помічені на видалення запису пропускаються. Якщо необхідно обійти весь файл, включаючи помічені на видалення запису, необхідно присвоїти значення Істина властивості ОтображатьУдаленние об'єкта xBase. Дізнатися позначена запис на видалення чи ні можна за допомогою функції ЗапісьУдалена (). Для зняття позначки видалення використовується метод Восстановить ().

ДБФ . ОтображатьУдаленние \u003d Істина; Поки НЕ ДБФ. Наприкінці () Цикл Якщо ДБФ. ЗапісьУдалена () Тоді ДБФ. Відновити (); КонецЕсли; ДБФ. Наступна(); КонецЦікла;

Для безпосереднього видалення позначених записів використовується метод Стиснути ():

ДБФ . стиснути();

Якщо необхідно видалити всі записи у файлі безпосередньо, то можна використовувати метод ОчістітьФайл ():

ДБФ . ОчістітьФайл();

Завантаження з DBF за допомогою ADO

Для роботи з файлами DBF може використовуватися технологія ADO. Драйвери ADO входять до складу операційної системи Windows і додатково їх встановлювати не треба.

Розглянемо приклад коду для читання з файлу DBF за технологією ADO:

АДО \u003d Новий COMОб'ект ( "ADODB.Connection"); // Створення COM-об'єкта АДО. Open ( "Provider \u003d Microsoft.Jet.OLEDB.4.0; | Data Source \u003d" "D: \\" "; | Extended Properties \u003d DBASE III"); БД \u003d АДО. Execute ( "Select * from MyFile"); // запит з отриманням всіх записів з файлу MyFile.DBF Поки БД. EOF \u003d 0 Цикл // Цикл по записах файлу DBF Повідомити (БД. Fields ( "Name"). Value); // Приклад звернення до значення поля БД. MoveNext (); // Переходимо до наступного запису КонецЦікла; АДО. Close ();

У наведеному прикладі використовується рядок підключення «Provider \u003d Microsoft.Jet.OLEDB.4.0; Data Source \u003d« D: \\ »; Extended Properties \u003d DBASE III». У цьому рядку:

  • Provider - це використовуваний драйвер;
  • Data Source - шлях, де знаходиться файл DBF. Шлях вказується з точністю до каталогу. Файл використовується в якості імені таблиці в запитах;
  • Extended Properties - в разі звернення до файлів DBF є обов'язковим параметром. Можна вказати формат файлу

Увага!

При читанні зазначеним способом кодування за замовчуванням - OEM. Для того, щоб змінити кодування на ANSI необхідно в реєстрі Windows привласнити параметру HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Wow6432Node \\ Microsoft \\ Jet \\ 4.0 \\ Engines \\ xBase \\ DataCodePage значення «ANSI».

Таблиці формату dbf відомі ще з далекого 1980 року. З тих пір dBase формат еволюціонував, розвивався, з'явилися dBase II, dBase III і dBase IV, до теперішнього часу було розроблено багато популярних програм, які працюють з базами даних, в яких використовуються таблиці dbf формату і по сей день. Формат dbf таблиць досить старий, але його продовжують використовувати для створення як великих і амбітних, так і для невеликих проектів, таблиці dbf використовуються в освітніх цілях, для знайомства і вивчення базових знань та подання організації баз даних. DBFNavigator це безкоштовна програма для перегляду і редагування таблиць dbf формату, проста і зручна утиліта.

З програмою DBFNavigator Ви можете відкривати і переглядати таблиці dbf, редагувати таблиці - змінювати, додавати і видаляти записи. Використовуючи DBFNavigator Ви зможете змінювати структуру таблиць, додавати, змінювати і видаляти поля таблиці, стискати dbf таблиці для очищення їх від віддалених записів (збір сміття), змінювати кодування таблиць Windows-\u003e DOS і навпаки. У програмі можна сортувати записи таблиці, копіювати записи і окремі поля, виводити рядки таблиці на друк, виконувати пошук і застосовувати до перегляду записів таблиць фільтри, змінювати параметри відкриття файлів dbf.

Скріншоти програми DBFNavigator



DBF Viewer 2000 ® - додаток для перегляду і редагування DBF всіх типів - Clipper, dBase, FoxPro, Visual FoxPro, Visual dBase.

Програма виконує різні дії: запити, видалення дублікатів або експорт в різні формати - швидше ніж ви очікуєте!

DBF редактор динамічно створює візуальні форми на основі структури DBF файлів для редагування і запросов.Программа дозволяє також переглядати і редагувати мемо поля наступних форматів: dBase III, dBase IV, FoxPro, VFP і dBase Level 7.

Програма полность підтримує використання командного рядка для наступних дій: імпорт, експорт, видалення дубльованих записів або заміна даних в DBF файли. працює незалежно від різних СУБД, - все що вам потрібно для перегляду і редагування DBF файлу це встановити додаток!

Чому DBF Viewer 2000
унікальний?

Простий і інтуїтивний інтерфейс

Інтерфейс програми досить простий і зручний, дозволяє вам зберегти багато часу при щоденній роботі.

Зручна модифікація структури DBF файлів в DBF Viewer 2000

Ви можете додавати, видаляти, перейменовувати, змінювати порядок полів і оптимізувати структуру DBF файлів.

Імпорт даних з різних форматів за допомогою DBF Viewer 2000

DBF Viewer 2000 дозволяє вам імпортувати дані з таких форматів: TXT, CSV, Excel (XLS, XLSX), DBF і Paradox. Імпорт даних може виконуватися з попереднім переглядом або з командного рядка.

DBF Viewer 2000 пропонує розширені можливості для експорту

Додаток дозволяє вам експортувати DBF файли в Excel (XLS, XLSX), CSV, TXT, SQL, SDF, XML, HTML, PRG, і MS SQL, MySQL, Oracle, PostgreSQL скрипти.

DBF Viewer 2000 допомагає видаляти дублікати

Видалення дубльованих записів легко як 1-2-3.

Працює на всіх платформах

DBF Viewer 2000 запускається на всіх версіях Windows від 95 до XP, Vista, 7/8/10 і Server Editions (32/64-bit)

Найбільш часто зустрічається проблемою, через яку користувачі не можуть відкрити цей файл, є невірно призначена програма. Щоб виправити це в ОС Windows вам необхідно натиснути правою кнопкою на файлі, в контекстному меню навести курсор на пункт "Відкрити за допомогою", а випадаючому меню вибрати пункт "Вибрати програму ...". В результаті ви побачите список встановлених програм на вашому комп'ютері, і зможете вибрати відповідну. Рекомендуємо також поставити галочку напроти пункту "Використовувати цей додаток для всіх файлів DBF".

Інша проблема, з якою наші користувачі також зустрічаються досить часто - файл DBF пошкоджений. Така ситуація може виникнути в масі випадків. Наприклад: файл був викачаний НЕ польностью в результаті помилки сервера, файл був пошкоджений спочатку тощо. Щоб вирішити цю проблему скористайтеся однією з рекомендацій:

  • Спробуйте знайти потрібний файл в іншому джерелі в мережі інтернет. Можливо вам пощастить знайти більш відповідну версію. Приклад пошуку в Google: "Файл filetype: DBF". Просто замініть слово "файл" на потрібне вам назву;
  • Попросіть надіслати вам вихідний файл ще раз, можливо він був пошкоджений під час передачі;

Формат DBF (Data Base File) був введений в ужиток компанією Ashton-Tate в 1980 році, в першій СУБД сімейства систем управління базами даних dBase - dBase II.

Відкритий формат даних і популярність початкової системи привели до появи безлічі різних аналогів СУБД, таких як FoxPro, dbFast, XBase ++ та інших. При цьому розробники вносили різні зміни в базовий формат пов'язані з функціональністю (додавання нових типів даних, зміна структури заголовка або структури полів таблиці і т.д.).

Відсутність будь-якої жорсткої стандартизації та подібні зміни призвели до у себе відсутність гарантій що розробляється програма зможе коректно виконати операцію читання / запису з будь-яким dbf-файлом. Проте, зберігається базова сумісність між різними форматами DBF.

DBF-файл складається з 2 розділів: заголовок і безпосередньо сама таблиця даних. Тема містить загальну інформацію про dbf-файл: структуру файлу, кількість записів, яка використовується версія dbf, обсяг пам'яті яку він обіймав заголовком і таблицею і т.п. Склад структури заголовка відрізняється в різних версіях формату.

Кінець файлу позначається маркером EoF (End Of File).

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

В 1С робота з dbf-файлами може здійснюватися кількома способами:

  • Об'єкт XBase;
  • інтерфейс програмування

об'єкт XBase

Об'єкт XBase забезпечує можливість роботи з базами даних формату DBF за допомогою вбудованої мови 1С: Підприємство.

Даний об'єкт забезпечує доступ до колекції полів і індексів dbf-таблиці, дозволяє виконувати будь-які дії над даними (створення нових і читання існуючих таблиць, додавання, коригування та видалення записів).

Для кожного файлу dbf, з яким доведеться працювати, потрібно створювати окремий об'єкт XBase.

Інтерфейс програмування ADO

ADO (ActiveX Data Objects) - інтерфейс програмування для доступу до даних, що дозволяє отримати дані з різних джерел.

Основні об'єкти ADO дозволяють виконувати маніпуляції з dbf-файлом:

З повним переліком об'єктів і їх властивостей можна ознайомитися в MSDN.

Connection - об'єкт, безпосередньо забезпечує доступ до dbf-файлу

Open (ConnectionString) Відкриває сеанс роботи з джерелом даних. Як параметр передається рядок з'єднання виду "Provider \u003d Microsoft.Jet.OLEDB.4.0; Data Source \u003d;
Extended Properties \u003d dBASE IV; User ID \u003d; Password \u003d; "
У параметр DataSource вказується папка, в якій знаходяться файли dbf.
Close () Закриває з'єднання з джерелом даних
Provider Містить ім'я використовуваного провайдера. При виконанні методу Open автоматично заповнюється значенням Provider з рядка підключення
ConnetionString Містить рядок підключення. При виконанні методу Open автоматично заповнюється параметром функції ConnectionString
ConnetionTimeout Містить число секунд очікування при підключенні. За замовчуванням - 15
CommandTimeout Містить число секунд очікування при виконанні команди. За замовчуванням - 30
Execute (CommandText) Виконує запит, здійснює виклик збереженої процедури або будь-який інший команди доступною на стороні провайдера.

Recordset - об'єкт являє собою набір записів (рядків) таблиці даних

ActiveConnection Визначає об'єкт типу Connection. Як значення можна задавати як об'єкт типу Connection, так і текстову рядок аналогічного виду, як і властивість ConnectionString у об'єкта Connection
ActiveCommand Визначає об'єкт типу Command в результаті виконання якого був отриманий даний RecordSet
Filter Містить фільтр даних, який необхідно застосувати до даного RecordSet.
Close Закриває об'єкт RecordSet
Requery Виконує оновлення об'єкта шляхом повторного запиту до таблиці. Аналогічний послідовному викликом Close () Open ()
BOF / EOF Ознаки початку / кінця таблиці. Якщо BOF \u003d Істина, тоді покажчик перебувати перед першим записом об'єкта RecordSet. Якщо EOF \u003d Істина, тоді покажчик знаходиться після останнього запису об'єкта RecordSet
Move Здійснює зрушення покажчика поточного запису вперед на вказану кількість записів (або назад, якщо це число негативне)
MoveFirst Здійснює зрушення покажчика на перший запис
MoveLast Здійснює зрушення покажчика на останній запис
MoveNext Здійснює зрушення покажчика на наступний запис
MovePrevious Здійснює зрушення покажчика на попередній запис
Fields Містить колекцію полів. Через конструкцію ( "ім'я_поля"). Value можемо отримати значення зазначеного в поточному рядку.
Find Здійснює пошук рядка за заданими критеріями.
GetString Дозволяє отримати строкове представлення поточного рядка

Command - об'єкт забезпечує виконання команд або SQL-запитів



Сподобалася стаття? поділіться їй