Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Права записи в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.059 c
15-1177411473
CCili
2007-04-24 14:44
2007.05.27
Купить мобильник через интернет. Подскажите где?


2-1178710015
DevilDevil
2007-05-09 15:26
2007.05.27
Быстрая загрузка Delphi


9-1139755441
angour
2006-02-12 17:44
2007.05.27
помощь по созданию игры "ГО" в Delphi


3-1173435842
emfw
2007-03-09 13:24
2007.05.27
Фильтр и поиск


2-1178534180
=Teddy=
2007-05-07 14:36
2007.05.27
Как установить фокус в Stringgride для конкретной ячейке?