Форум: "Базы";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизПрава записи в InterBase Найти похожие ветки
← →
George © (2006-12-07 09:48) [0]Доброго времени суток.
Имеется такая проблемка, в мою БД нужно запихать файлы т.е. BLOB поля, однако при попытке записать что-либо вылетает ошибка - БД только для чтения. Раньше все делал SQL запросами, при попытке поставить в params компонента IBDatabase параметра set_db_readonly=false ругается, что параметр не найден. Как это лечится?
← →
atruhin © (2006-12-07 10:21) [1]Обычно такое сообщение вылетатет если не заданы модифицирующие запросы.
Под какой учетной записью конектишься?
← →
George © (2006-12-07 10:53) [2]SYSDBA=masterkey =)
← →
Desdechado © (2006-12-07 12:11) [3]> БД только для чтения
1. файл имеет атрибут Read-only
2. у сервера нет прав на файл БД
3. у БД внутреннее свойство read-only, выставленное gfix"ом или gbak"ом
← →
George © (2006-12-07 12:56) [4]1. Файл не имеет атрибут только для чтения.
2. Что подразумевается у сервера нет прав на БД? В св-вах БД на сервере параметр ReadOnly стоит False.
3. Попробовал gfix -mode read_write -user sysdba -password masterkey c:\db.gdb типо вроде что-то поменял. При попытке записи опять натыкаешься "Cannot modify a read-only dataset"...
Слушайте, а может это где-то в TIBQuery искать надо?
← →
Desdechado © (2006-12-07 13:28) [5]> Cannot modify a read-only dataset
Это же совсем другое. Значит, не включен CachedUpdates
← →
DrPass © (2006-12-07 13:29) [6]
> Cannot modify a read-only dataset
Дык... это совсем не "БД только для чтения". Это просто означает, что твоя компонентина вернула необновляемый набор данных. Почему? Ну, вариантов множество в зависимости от того, как и что ты там делаешь. Возможно, ты просто не прописал SQL на UPDATE
← →
atruhin © (2006-12-07 13:34) [7]> Значит, не включен CachedUpdates
А причем здесь CachedUpdates? Совсем из другой оперы.
Автору: ответ дан в > [1] atruhin © (07.12.06 10:21)
ЗЫ. Телепатор сработал! :)
← →
Desdechado © (2006-12-07 13:42) [8]atruhin © (07.12.06 13:34) [7]
Как это причем? А ты модифицирующие запросы без CachedUpdates прописываешь?
А с телепатором своим разберись, тюнингом займись... ;))
← →
George © (2006-12-07 14:19) [9]CachedUpdates включил - толку мало....
SQL запросами все отлично работает. Записи и добавляются и редактируются и даже удаляются. Только теперь мне надо скажем обработать такую штуку:
var Table1bitmap:TBlobField;
begin
Table1bitmap.LoadFromFile(тра-ля-ля);
после этого вылетает...
← →
atruhin © (2006-12-07 14:33) [10]> А ты модифицирующие запросы без CachedUpdates прописываешь?
Ну в реальных проектах нет. Зачем открытую транзакцию по пол часа держать.
А в тестовых да. Какое отношение CachedUpdates имеет к вопросу? Поподробнее можно?
> после этого вылетает...
И должно вылетать. Ты объявил переменную, Table1bitmap:TBlobField; т.е. объект и не создавая его
вызываешь методы.
Вообще сделай поиск по сайту (ключевое слово Blob) Здесь каждую неделю подобные вопросы поднимают.
ПРиведи весь код процедуры.
← →
George © (2006-12-07 14:41) [11]Я имел ввиду вылетает "Cannot modify a read-only dataset" ))) Оно вылетает даже если просто присвоение делать скажем Query1.FieldValue[]:="о.О";
← →
George © (2006-12-07 15:04) [12]Ошибку при работе с БЛОБ понял. Пробую:
procedure TForm1.Button1Click(Sender: TObject);
var
Kartinka: TBitmap;
begin
Kartinka := TBitmap.Create;
try
Query1.Insert;
Kartinka.LoadFromFile("c:\1.bmp");
DBImage1.Picture.Assign(Kartinka);
finally
Kartinka.Free;
Query1.post;
end;
end;
Вылетает ошибка. Экспериментируем дальше - удаляем из процедуры все, оставляем только Query1.insert, запускаем, вылетает ошибка.
← →
Desdechado © (2006-12-07 16:43) [13]George © (07.12.06 15:04) [12]
Зачем такие махинации, чтобы в кверик записать картинку?
Сразу blobfield.loadfromfile
> Вылетает ошибка
текст гадалке по почте отправил?
← →
Hm... (2006-12-07 19:28) [14]а можно полюбопытствовать что такое blobfield и что нужно прописать чтобы оно заработало?
← →
Desdechado © (2006-12-07 21:21) [15]или так
Query1.Sql.Text :=
"INSERT INTO testblob " +
" ( " +
" fBlob" +
" )" +
" VALUES" +
" (" +
" :ParamBlobField" +
")";
Query1.ParamByName("ParamBlobField").DataType := ftBlob;
Query1.ParamByName("ParamBlobField").ParamType := ptInput;
Query1.ParamByName("ParamBlobField").LoadFromFile("MyFile",ftBlob);
Query1.ExecSql;
← →
имя (2007-01-13 13:47) [16]Удалено модератором
← →
имя (2007-01-13 13:48) [17]Удалено модератором
← →
имя (2007-01-13 13:48) [18]Удалено модератором
← →
имя (2007-01-13 13:49) [19]Удалено модератором
← →
_no_name_ (2007-01-14 11:59) [20]Если есть DBGrid связанный с Query1, то проверь у него свойство dgEditing, должно быть true
← →
George © (2007-03-13 12:03) [21]"dgEditing, должно быть true" не помогает, а вот
Query1.Sql.Text :=
"INSERT INTO testblob " +
" ( " +
" fBlob" +
" )" +
" VALUES" +
" (" +
" :ParamBlobField" +
")";
Query1.ParamByName("ParamBlobField").DataType := ftBlob;
Query1.ParamByName("ParamBlobField").ParamType := ptInput;
Query1.ParamByName("ParamBlobField").LoadFromFile("MyFile",ftBlob);
Query1.ExecSql;
Работает оч хорошо =) Спасибо всем кто откликнулся.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c