Почему TADOBlobField.Savetofile записывает только 8 байтов - PullRequest
0 голосов
/ 07 апреля 2009

У меня есть рабочее приложение, которое я недавно посетил.

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

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

Ответы [ 3 ]

4 голосов
/ 13 апреля 2009

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

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

Удачи

1 голос
/ 07 апреля 2009

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

0 голосов
/ 18 февраля 2012

Эта проблема была напрямую вызвана тем, что я не применил Delphi 7 Update 1.

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

...