powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDbf: cannot modify a read-only dataset
10 сообщений из 10, страница 1 из 1
TDbf: cannot modify a read-only dataset
    #39417457
Megadragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть программа для оптимизации рутины, а именно выборки данных из Оракловой базы и сохранения их в DBF-файл. Написана она в Delphi 2010 с использованием компонентов ODAC v9.3.8 (используются лишь TOraSession и TOraQuery) и TDbf v7.0.1. Запуск программы осуществляется посредством подключения по RDP к серверу приложений на базе Windows Server 2008 R2, причём каждый юзер подключается под своей учёткой. Одни юзеры нормально получают DBF'ники, тогда как у других каждый вызов Dbf1.Append вызывает ошибку (см. название темы). Забавное совпадение: ошибка вылазит только у юзеров, подключающихся с компа с Windows 10.
Запись в DBF'ник происходит незаурядным способом:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
OraQuery1.Open;
OraQuery1.FetchAll := True;
OraQuery1.First;
Dbf1.TableName := 'D:\filepath\filename.dbf'; // имя файла сокращено в целях демонстрации
Dbf1.CreateTable;
Dbf1.Open;
while not OraQuery1.Eof do begin
  Dbf1.Append; // именно здесь вылазит ошибка (см. название темы)
  for I := 0 to Dbf1.FieldCount - 1 do // I – локальная Integer-переменная, поля согласованы заранее в design-time
    Dbf1.Field[I] := OraQuery1.Field[I]; // допускается (и работает) св-во по умолчанию AsVariant
  Dbf1.Post;
  OraQuery1.Next;
end;
Dbf1.Close;
OraQuery1.Close;


Скажу сразу, что свойства TDbf ReadOnly и Exclusive были сразу сброшены в False через Object Inspector, и программа к ним нигде и никак не обращается. Уже пробовали в начале while'а, сразу перед Append'ом вставлять
Код: pascal
1.
Assert(not Dbf1.ReadOnly and not Dbf1.Exclusive, '!!!');


Ни разу ни у кого он не сработал, даже у «Десяточников», у которых ошибка вылезла.
Где здесь собака м.б. зарыта: в настройках учёток на сервере приложений, в Win10 на компах юзеров или ещё где-нибудь?
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417480
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megadragon,

чета сбойнуло. Удали все таблички и пересоздай их заново.
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417483
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трассировка невозможна?

Может быть это просто проблема с доступом к файлу.
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417487
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

с TDbf обычное дело. Лечится обычно пересозданием файьлв с табличками, если разбираться лень.
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417496
Megadragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreatТрассировка невозможна?
В том-то и дело, что «в боевых условиях», то бишь на сервере приложений, невозможна. А разрабатывается прога на локальном компе с Win7, на котором, естественно, данной проблемы не возникает.

rgreatМожет быть это просто проблема с доступом к файлу.
Смотрели права доступа к папке и к создаваемым файлам – все одинаковые.

чччДУдали все таблички и пересоздай их заново.
Таблички в смысле TDbf-компоненты или файлы на диске? Если файлы, то они и так создаются во время вызова Dbf1.CreateTable.
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417506
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegadragonrgreatТрассировка невозможна?
В том-то и дело, что «в боевых условиях», то бишь на сервере приложений, невозможна. А разрабатывается прога на локальном компе с Win7, на котором, естественно, данной проблемы не возникает.Удаленную отладку не предлогать?
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417636
Megadragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreatMegadragonпропущено...

В том-то и дело, что «в боевых условиях», то бишь на сервере приложений, невозможна. А разрабатывается прога на локальном компе с Win7, на котором, естественно, данной проблемы не возникает.Удаленную отладку не предлогать?
Идея хорошая. Не подскажете, как её делать по RDP?
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39417662
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39499791
UserGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megadragon,

Доброго времени суток!
Помог Fix in DBF.pas

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function TDbf.GetCanModify: Boolean; {override;}
begin
if FReadOnly or (csDesigning in ComponentState) then
Result := false
else
//Result := FTranslationMode > tmNoneAvailable; // "faulty" line which I commented out
Result := True;
end;




Описано здесь https://sourceforge.net/p/tdbf/discussion/107245/thread/c0de08c9/
...
Рейтинг: 0 / 0
TDbf: cannot modify a read-only dataset
    #39502041
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее всего кодировку или не распознало или не смогло найти соотв. таблицу
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDbf: cannot modify a read-only dataset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]