Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Права записи в InterBase [D7, IB6.x]


Страницы:   1 2

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 =)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо