|
p_art_rus
новенький
Сказали спасибо: +0/-0
Offline
Сообщений: 1
|
|
ODBC-bmp-LoadFromStream
« : 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, но результат тот же.
Куда ткнуться, что дописать, чтоб решить задачу - кто знает?
|