| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Проблема с таблицей |
| Автор: Vinnety 23.11.2003, 14:59 |
| Есть таблица. Есть у нее поле Picture (BLOB field) . Загружаю туда картинку таким образом : table1.Edit; if OpenPictureDialog1.Execute then (table1.FieldByName('Picture') as TBlobField).LoadFromFile(OpenPictureDialog1.FileName); table1.Post; А при выходе из редактора делаю так: with Table1 do begin CachedUpdates:=true; Edit; fmAsk:=TfmAsk.Create(self); if fmAsk.ShowModal=mrOK then begin Post; ApplyUpdates; end else begin Cancel; CancelUpdates; end; CachedUpdates:=false; fmAsk.Free; end; И всё-вроде нормально! Но когда запускаю программу (в там только Table1, DdGrid1, DgImage1, DbNavigator1, DataSource1 - т.е. когда бегаешь по гриду в DbImage1 - отображается картинка), которая должна работать с этой таблицей возникает ошибка такого характера : "BLOB has been modified". Что делать |
| Автор: Vinnety 24.11.2003, 17:00 |
| Так что, никто не знает как решить такую проблему Или все надо делать через Query, а не через Table |
| Автор: Vit 24.11.2003, 17:37 |
| Ошибка связана с кэшированием изменений. Пиши flushBuffers после Post и перед закрытием таблицы. |
| Автор: Akella 26.11.2003, 14:13 |
| To Vit А если не использовать кэширование? В одной книжечке я прочитал 2 примера: 1. При добавлении записи не требуется применять кэширование. 2. При изменении записи применяется кэширование. (книжечка помоему по Delphi 5 - Фараонов) Я, честно говоря, не очень понимаю суть кэширования, какая разница с ним или без него? Почему при добвлении не надо использовать, а при изменении надо? |
| Автор: Vit 26.11.2003, 16:34 |
| Если используются BLOB/Memo поля особенно при многопользовательском доступе рекомендую после Post всегда ставить flushBuffers, а объяснить что думали авторы когда писали свои книжки не могу. |