![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Права записи в InterBase [D7, IB6.x]
George © (2006-12-07 09:48:00)Доброго времени суток.
Имеется такая проблемка, в мою БД нужно запихать файлы т.е. BLOB поля, однако при попытке записать что-либо вылетает ошибка - БД только для чтения. Раньше все делал SQL запросами, при попытке поставить в params компонента IBDatabase параметра set_db_readonly=false ругается, что параметр не найден. Как это лечится?
George (2007-03-13 12:03:00) [1]"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;
Работает оч хорошо =) Спасибо всем кто откликнулся.
_no_name_ (2007-01-14 11:59:00) [2]Если есть DBGrid связанный с Query1, то проверь у него свойство dgEditing, должно быть true
(2007-01-13 13:49:00) [3]Удалено модератором
(2007-01-13 13:48:00) [4]Удалено модератором
(2007-01-13 13:48:00) [5]Удалено модератором
(2007-01-13 13:47:00) [6]Удалено модератором
Desdechado (2006-12-07 21:21:00) [7]или так
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;
Hm... (2006-12-07 19:28:00) [8]а можно полюбопытствовать что такое blobfield и что нужно прописать чтобы оно заработало?
Desdechado (2006-12-07 16:43:00) [9]George © (07.12.06 15:04) [12]
Зачем такие махинации, чтобы в кверик записать картинку?
Сразу blobfield.loadfromfile
> Вылетает ошибка
текст гадалке по почте отправил?
George (2006-12-07 15:04:00) [10]Ошибку при работе с БЛОБ понял. Пробую:
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, запускаем, вылетает ошибка.
George (2006-12-07 14:41:00) [11]Я имел ввиду вылетает "Cannot modify a read-only dataset" ))) Оно вылетает даже если просто присвоение делать скажем Query1.FieldValue[]:='о.О';
atruhin (2006-12-07 14:33:00) [12]> А ты модифицирующие запросы без CachedUpdates прописываешь?
Ну в реальных проектах нет. Зачем открытую транзакцию по пол часа держать.
А в тестовых да. Какое отношение CachedUpdates имеет к вопросу? Поподробнее можно?
> после этого вылетает...
И должно вылетать. Ты объявил переменную, Table1bitmap:TBlobField; т.е. объект и не создавая его
вызываешь методы.
Вообще сделай поиск по сайту (ключевое слово Blob) Здесь каждую неделю подобные вопросы поднимают.
ПРиведи весь код процедуры.
George (2006-12-07 14:19:00) [13]CachedUpdates включил - толку мало....
SQL запросами все отлично работает. Записи и добавляются и редактируются и даже удаляются. Только теперь мне надо скажем обработать такую штуку:
var Table1bitmap:TBlobField;
begin
Table1bitmap.LoadFromFile(тра-ля-ля);
после этого вылетает...
Desdechado (2006-12-07 13:42:00) [14]atruhin © (07.12.06 13:34) [7]
Как это причем? А ты модифицирующие запросы без CachedUpdates прописываешь?
А с телепатором своим разберись, тюнингом займись... ;))
atruhin (2006-12-07 13:34:00) [15]> Значит, не включен CachedUpdates
А причем здесь CachedUpdates? Совсем из другой оперы.
Автору: ответ дан в > [1] atruhin © (07.12.06 10:21)
ЗЫ. Телепатор сработал! :)
DrPass (2006-12-07 13:29:00) [16]
> Cannot modify a read-only dataset
Дык... это совсем не "БД только для чтения". Это просто означает, что твоя компонентина вернула необновляемый набор данных. Почему? Ну, вариантов множество в зависимости от того, как и что ты там делаешь. Возможно, ты просто не прописал SQL на UPDATE
Desdechado (2006-12-07 13:28:00) [17]> Cannot modify a read-only dataset
Это же совсем другое. Значит, не включен CachedUpdates
George (2006-12-07 12:56:00) [18]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 12:11:00) [19]> БД только для чтения
1. файл имеет атрибут Read-only
2. у сервера нет прав на файл БД
3. у БД внутреннее свойство read-only, выставленное gfix'ом или gbak'ом
George (2006-12-07 10:53:00) [20]SYSDBA=masterkey =)