2009-04-07 2 views
0

У меня есть рабочее приложение, которое я недавно просмотрел.Почему TADOBlobField.Savetofile записывает только 8 байтов

Я сохраняю файл в текстовом поле в базе данных MSSQL. Я прочитал его в ADOTable и, как TBlobfield, вызову Savetofile, чтобы записать его в файл на диске. Это всегда срабатывало. Однако теперь он просто сохраняет 8-байтовый файл, а не правильный файл.

У меня есть смутное воспоминание об этом раньше, и мне было интересно, если кто-нибудь встретил это и знает решение? Я использую Delphi 7.

+0

кода образец могущество Помогите. – mj2008

ответ

0

Эта проблема была непосредственно вызвана моим того не было установлено обновлению Delphi 7 1.

Это известная ошибка в поставляемой версии Delphi 7.

1

Несколько лет назад (более старые версии ado) проблема была в том, что поле blob() не было последним полем в запросе. Я не знаю, что это правда.

4

Что-то изменилось в базе данных (обновление сервера/версии)? Клиентская машина (XP? Vista?)? Что сохраняется при вызове метода SaveToFile (возможно, файл имеет всего 8 байтов)? Может ли поле быть пустым/нулевым?

Я бы рекомендовал не использовать компоненты на основе таблиц (TTable, TADOTable и т. Д.) В отношении RDBMS на основе набора (MSSQL, Oracle и т. Д.), Использовать TADODataSet и убедиться, что у вас есть все исправления D7/ADO.

Успехов

+0

У Delphi 7 не было исправлено обновление 1. Это известная ошибка, исправленная обновлением 1. –