Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 447

•  TDictionary Custom Sort  6 479

•  Fast Watermark Sources  6 272

•  3D Designer  9 220

•  Sik Screen Capture  6 609

•  Patch Maker  6 992

•  Айболит (remote control)  6 995

•  ListBox Drag & Drop  5 864

•  Доска для игры Реверси  97 039

•  Графические эффекты  7 193

•  Рисование по маске  6 489

•  Перетаскивание изображений  5 362

•  Canvas Drawing  5 739

•  Рисование Луны  5 449

•  Поворот изображения  4 978

•  Рисование стержней  3 535

•  Paint on Shape  2 803

•  Генератор кроссвордов  3 668

•  Головоломка Paletto  2 959

•  Теорема Монжа об окружностях  3 762

•  Пазл Numbrix  2 481

•  Заборы и коммивояжеры  3 166

•  Игра HIP  2 132

•  Игра Go (Го)  2 066

•  Симулятор лифта  2 438

•  Программа укладки плитки  2 111

•  Генератор лабиринта  2 583

•  Проверка числового ввода  2 262

•  HEX View  2 590

•  Физический маятник  2 202

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Access to table disabled because of previous error - Read failure



Автор: Наталия Елманова
WEB-сайт: http://www.sources.ru

При добавлении новых записей с помощью метода TTable.AppendRecord в индексированную таблицу FoxPro через какое-то время (то есть при одновременном добавлении большого количества записей) возникает ошибка:

"Access to table disabled because of previous error. Read failure. File <имя_файла.cdx>".

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

В случае применения старых версий формата FoxPro следует избегать кэширования при выполнении дисковых операций с файловым сервером, содержащим базу данных FoxPro. Кроме того, следует проверить и, если необходимо, изменить в настройках BDE параметры MINBUFSIZE, MAXBUFSIZE, LOCAL SHARE - возможно, проблема заключается в недостаточной величине буферов BDE для кэширования данных или в одновременном доступе к данным приложений, использующих и не использующих BDE.

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