Страница 1 из 1

ошибка доступа к dbf

Добавлено: 04 июн 2008, 16:03
eyolkina
Добрый день! Может быть не совсем по теме, но вдруг кто-нибудь сталкивался с такой проблемой.

Мне нужно открыть dbf-файл, прочитать из него данные и дозаписать свои.

Когда открываю его

Код: Выделить всё

DBFOpen('C:\my_vip\to_galaxy.dbf',stOpen);
Все отлично читает, но изменения не записывает.

Когда открываю:

Код: Выделить всё

DBFOpen('C:\my_vip\to_galaxy.dbf',stOpenWrite); 
то выдает ошибку:
Ошибка в файле: имя_файла (Нет доступа).

Доступ пробовала давать всем кому не лень.


Код: Выделить всё

DbfFile:=DBFOpen('C:\my_vip\to_galaxy.dbf',stOpenWrite);
     if DbfFile <= 0 then
     begin
      message(''#3'Не могу открыть файл '+'C:\my_vip\to_galaxy.dbf',mfError+mfOkButton);
      Exit;
     end;

MESSAGE('Открыли файл '+'C:\my_vip\to_galaxy.dbf');
 
if(DBFGetFirst(DbfFile)=0)
 then
   begin
   
   do
   begin
  Message(DBFGetFieldValue(DbfFile,'NODOK'));
  DBFPutFieldValue(DBFFile,'NREC', 'mambo'); // Год
   end
   while DBFGetNext(DbfFile)=0;



   end
 else
  begin
  MESSAGE('В файле не найдено ни одной записи!');
  end;

 


 DBFClose (DbfFile); 

Добавлено: 04 июн 2008, 19:56
aleks1232321
Функция DBFOpen (string, integer) : longInt

Назначение

Открыть или создать DBF файл.

Описание

function DBFOpen (name : string, mode : integer) : longInt;
Параметры

name : string - имя DBF файла.

mode : integer - режим создания, открытия DBF файла:


stCreate = $3C00;

stOpenWrite = $3D01;

stOpen = $3D02;

stOpenRead = $3D20.

Возвращаемое значение

Функция возвращает дескриптор файла или 0 в случае ошибки.

Добавлено: 04 июн 2008, 21:39
edward_K
DBFUpDateRecord не пробовали? И проверьте правильность полей.

Добавлено: 10 июн 2008, 17:00
eyolkina
DBFUpDateRecord не пробовали? И проверьте правильность полей.
ОГРОМЕДНОЕ СПАСИБО :)
Помогло!

Добавлено: 11 дек 2008, 16:29
hope
Аналогичная проблема (перевожу свои отчеты в 8.1): есть каталог с dbf-файлами, нужно данные из этих файлов прочитать.
Выбираю каталог. Открываю в нем конретные файлы.
Ругается: ошбка в файле C:\2\KATCOMPL.DBF (процесс не может получить доступ к файлу, т.к. этот файл занят другим процессом).

С файлом все нормально, но Галактика его открывать не хочет почему-то? В чем может быть проблема? В 7.12 таких проблем нет.

doroga:=GetDirName('Выберете каталог с данными для загрузки');
hDBF1:=DBFOpen(doroga+'\KATCOMPL.DBF', stOpen);
IF hDBF1=0
Message('Не могу открыть файл '+doroga+'\katcompl.dbf. Проверьте правильность выгрузки');

Добавлено: 12 дек 2008, 00:30
edward_K
ну с открытием на чтение вообще никаких проблем.
w_handle:=Dbfopen(w_filename,stOpenRead)
вроде был еще режим открытия на шару. и возможно \ лишний?

Добавлено: 12 дек 2008, 09:05
hope
Извиняюсь - мой косяк - дважды открываю один и тот же файл.

Добавлено: 15 дек 2008, 09:07
ilshat
А вот вопрос почему нельзя дважды открыть один и тот же файл так и остается открытым. На дворе 21 век вроде как...

Добавлено: 15 дек 2008, 09:52
PViP
ilshat, видимо на DBF устанавливается эксклюзивный доступ! Поэтому никто ни читать его не может, а уж тем более читать!

Добавлено: 15 дек 2008, 09:55
ilshat
не видимо а совершенно верно :) вопрос в другом - нешто сложно сделать уже в 2008 году нормальные функции работы с файлами без наложения блокировок полностью на файл

Добавлено: 15 дек 2008, 10:54
edward_K
режим открытия на шару был - для fopen по крайне мере - ищите. ключевое слово Deny наверное