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