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

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

Хранимая процедура - запрос - BLOB - поле [D6, IBExpert]


TATIANA ©   (2004-05-05 09:52:00) 

Здравствуйте господа мастера !
База создана в IBExpert , использую компонент - IBQuery , IBStoredProc , Image (показываю на форме) . Работаю с базой через хранимые процедуры , запрос сделанный с помощью IBQuery1 не может изменяться .
if OpenPictureDialog1.Execute then
   Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
 B1STR := TStringStream.Create('');
 Image1.Picture.Graphic.SaveToStream(B1STR);
 IBQuery1PLAN_KV.LoadFromStream(B1STR);
 B1STR.Free;
.....
IBStoredProc1.ParambyName('plan_kv').AsBlob := IBQuery1['PLAN_KV'];
  IBStoredProc1.Prepare;
  IBStoredProc1.ExecProc;
  IBStoredProc1.UnPrepare
При записи из потока в поле -
 IBQuery1PLAN_KV.LoadFromStream(B1STR);
дает сообщение об ошибке : "Not edit mode" .
Поле записывается в базу , но это сообщение очень раздражает .
Вопрос такой :
 Как записать передачу BLOB-поля в хранимую процедуру минуя запись - IBQuery1PLAN_KV.LoadFromStream(B1STR); ?
Всем спасибо .
Поздравляю всех с прошедшими и наступающими праздниками .


Johnmen   (2004-05-07 10:13:00) [1]

http://ixbt.wallst.ru/ib/i00001.html
и на ibase.ru есть много материала


TATIANA   (2004-05-07 09:56:00) [2]

Господа , здравствуйте !
Возвращаюсь к нашему любимому вопросу .
Заменила IBQuery на IBDataSet1 и что-то неправильно в этой записи , а что не знаю , пожалуйста подскажите :
IBDataSet1.ModifySQL.Clear;
 IBDataSet1.ModifySQL.Add('update KVARTIRA set PLAN_KV = :PLAN_KV ');
 IBDataSet1.ModifySQL.Add('where KOD_KVAR = :OLD_KOD_KVAR');
 IBDataSet1.Params[0].LoadFromStream(b1str);
 IBDataSet1.Params[1].AsInteger := IBDataSet1['kod_kvar'];
 IBDataSet1.ExecSQL;
На строке -
  IBDataSet1.Params[0].LoadFromStream(b1str);
дает ошибку - 'XSQLDA index out of range' .
Спасибо всем .


TATIANA   (2004-05-05 16:22:00) [3]

IBQuery1PLAN_KV.LoadFromStream(B1STR);
Потому и задала вопрос , что не знаю как правильно , а на этой строке дает сообщение .


Johnmen   (2004-05-05 15:46:00) [4]

>TATIANA  

>IBQuery1PLAN_KV.LoadFromStream(B1STR);
>Я работаю с данными с помощью хранимых процедур (IBStoredProc) ,

Здесь явное противоречие...


Соловьев   (2004-05-05 15:38:00) [5]


> TATIANA   (05.05.04 15:34) [5]

А где сказано что с ХП нельзя работать через запрос? наоборот рекомендуют :)


TATIANA   (2004-05-05 15:34:00) [6]

Все это хорошо . UpdateObjct требует наличия IBUpdateSQL , а в нем есть 3 строки :
- ввод ;
- удаление ;
- изменение ;
Я работаю с данными с помощью хранимых процедур (IBStoredProc) ,
мне придется делать лишние действия .


Соловьев   (2004-05-05 12:31:00) [7]


> TATIANA   (05.05.04 12:08) [2]

IBDataSet - самое оно


Johnmen   (2004-05-05 12:21:00) [8]

Работают.
UpdateObject+F1


TATIANA   (2004-05-05 12:08:00) [9]

Проблема в том , что с IBQuery1 методы Edit и Post не работают .


Курдль   (2004-05-05 10:02:00) [10]

Может так:

IBQuery1.Edit;
IBQuery1PLAN_KV.LoadFromStream(B1STR);
IBQuery1.Post;


Наверх

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