| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > проблема с ADO и BLOB |
| Автор: kross 23.1.2004, 07:37 |
| Господа, вот у меня такая же ошибка выскакивает при попытке записать через поток содержимое RichEdit в базу(MSSQL2000) в поле типа Image. procedure TForm1.SpeedButton3Click(Sender: TObject); var bs: TADOBlobStream; begin bs:= Nil; with ADOQuery1 Do try close; open; edit; bs:= TADOBlobStream.Create( TBlobField(FieldByName('wordText')), bmwrite ); Richedit1.plaintext := false; Richedit1.Lines.Savetostream(bs); post; finally bs.free; close; end; end; на post выдает выдается сообщение ADOQuery:DataSet not in edit or insert mode. Перерыл весь интернет, но... с ADO это первое знакомство и понемного приходит разочарование. не дайте пропасть. С уважением... |
| Автор: Cashey 23.1.2004, 11:28 | ||
|
| Автор: Unregistered 23.1.2004, 11:43 |
| Cashey Это решает проблему ошибку(т.е. она не выскакивает) но записи в базу не происходит т.к. база не в режиме редактирования и естественно IF есть false и команда post обходится. Может где надо в настройках самого MSSQL пошариться? |
| Автор: Cashey 23.1.2004, 12:52 |
| если база не буферизированная, то сохранение может происходить автоматически, поэтому метод пост применяется к уже сохраненой базе и генерится ошибка. |
| Автор: Serggggg 23.1.2004, 14:35 |
| Знакомая проблема, только у меня не записывалось текстовое поле + я работал с Oracle. Как поведёт себя DataSet через ADO с MSSQL - точно сказать не могу. Я делал так: 1. Переход на нужную запись (типа FindKey или GotoKey). 2. Table1.Edit 3. Table1.FieldByName('Field1').As....... :=#########; 4. Table1.Post Или же после Edit внеси ВСЕ изменения. А потом, как и было отмечено, используй if Modified then Post. Попробуй, однако за слаженную работу такого метода через ADO с MSSQL я не могу отвечать. |
| Автор: Medved 26.1.2004, 23:24 |
| Набор даных возвращаемый TADOQuery нельзя редактировать напрямую (на самом деле можно, но при соблюдении определенных условий). Если хотите чтобы Ваш пример заработал, используйте TADOTable. Вот и весь ответ. (Кстати ADO здесь ни при чем. Если бы Вы использовали и BDEшные компоненты, выскочила такая же ошибка) |