C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: ODBC-bmp-LoadFromStream  (Прочитано 1721 раз)
p_art_rus
новенький
*

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 1


« : 02 февраля 2016, 18:28:46 »

Доброго времени!

Нужно в печатную форму в QRImage загрузить логотип из MS SQL server. Использовать по лицензионным причинам могу только ODBC. Раньше использовал ADO и TBlobStream, всё было легко и здорово, но времена поменялись, и я могу только через ODBC работать. В базе картинка лежит в bmp-формате в поле типа varbinary(max). Опустив проверки, предполагаем, что все данные отдаются корректно.

SQLCHAR col_name[32];
SQLSMALLINT NameLengthPtr;
SQLSMALLINT DataTypePtr;
SQLUINTEGER ColumnSizePtr;
SQLSMALLINT DecimalDigitsPtr;
SQLSMALLINT NullablePtr;
char img[164000];
long rd;
TMemoryStream *bs;

req="select im.logo from images im where im.pnum=25";

SQLExecDirect(hstmt, req.c_str(), req.Length());

SQLBindCol(hstmt, 1, SQL_BINARY, img, 164000, &rd);

bs=new TMemoryStream();
bs->SetSize(rd);
bs->ReadBuffer(img, rd);
bs->Position=0;
QRImage2->Picture->Bitmap->LoadFromStream(bs);

Последняя строка возвращает ошибку "Bitmap image is not valid".
Для img ghjdthzk типы short, int, long, но результат тот же.
Куда ткнуться, что дописать, чтоб решить задачу - кто знает?
Записан
direk
Участник
**

Сказали спасибо: +6/-0
Offline Offline

Сообщений: 79


« Ответ #1 : 05 февраля 2016, 21:40:39 »

Я не профессиональный программист, но мне интересно - если картинку из потока сохранить в файл, картинка откроется?
И сравнить сохранный код картинки с оригиналом?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: