Страница 1 из 1

Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 17:57
Developer
Привет Всем!

Clarion 9 (9.0.10376) Windows 7 SP1 Русский

Как сохранить графический файл в Blob поле базы данных без отображения на экране прямым перемещением информации?

Есть функция FileToBLOB. При её использовании ошибка: Unresolved External FILETOBLOB@FsbBb

Как применить данную функцию для сохранения графического файла в BLOB поле базы данных?

Пожалуйста, подскажите какие практические решения существуют для данной задачи?

Необходим работающий исходник.

С Уважением, Developer, cfwdeveloper@gmail.com

Re: Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 18:28
Дед Пахом
Смотрите хелп оп FILETOBLOB, там всё написано и работает - подтверждаю.

Re: Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 19:54
Developer
Спасибо за отклик, help смотрел, результата нет.

Unresolved External FILETOBLOB@FsbBb

Необходим рабочий пример проекта (clw, prj, sln)

Re: Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 21:51
Дед Пахом
может наоборот - пример от Вас, который не работает? clw, prj, sln...

Re: Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 22:29
Developer
Вот пример:

Код: Выделить всё

  PROGRAM
     MAP
     INCLUDE('CWUTIL.INC'),ONCE 
    END

Products   FILE,DRIVER('TopSpeed'),PRE(PRO),CREATE,BINDABLE,THREAD                                                                                                                       
KeyProductNumber         KEY(PRO:ProductNumber),NOCASE,OPT,PRIMARY 
PictureImage                BLOB,BINARY                    !                    
Record                   RECORD,PRE()
ProductNumber               LONG                          
                         END
                     END                       
FileName        STRING(254)

    CODE
        Filename = 'D:\Picture.bmp'
        CREATE (Products)
        OPEN (Products)
      FILETOBLOB(Filename, PRO:PictureImage ) ! Ошибка Unresolved External FILETOBLOB@FsbBb
            ADD(Products)
            IF ERRORCODE() THEN STOP(ERROR()).
        PUT(Products) 
       CLOSE (Products) 

Re: Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 23:32
Дед Пахом
надо в проекте указать _ABCLinkMode_=>1

Re: Сохранить графический файл в Blob поле Database

Добавлено: 24 Май 2014, 23:47
Developer
Дед Пахом огромное спасибо!

Ошибка Unresolved External FILETOBLOB@FsbBb решена!

Подскажи пожалуйста, где почитать об директивах компилятора в связи с данной темой?

Re: Сохранить графический файл в Blob поле Database

Добавлено: 25 Май 2014, 0:05
Дед Пахом
посмотри в хелпе #pragma, там общие сведения.

Re: Сохранить графический файл в Blob поле Database

Добавлено: 26 Май 2014, 10:42
Yufil
Есть ещё тонкость. Дело в том, что кларионовские драйвера, как правило, не видят модификаций поля Blob. Поэтому если сохранение идёт в форме и ни одно другое поле, кроме блоба, не менялось, нажатие кнопки OK может и не сохранить запись. Record же не изменилась,и Memo-поля тоже... Поэтому если есть Блоб в записи, желательно добавить ещё поля Дата-время записи или что-то подобное.

И, кстати, много раз рассылал класс CSTR, в котором делается с полпинка.
S Cstr
....
S.LoadFromFile(filename)
S.SaveToBlob(blobfield)

и процедуру PackBlob-UnpackBlob для утрамбовки данных