Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex Ermakov
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 4
#1

Запись в мемо поле (mdb) > 256 byte в VC - C++

26.12.2007, 16:09. Просмотров 984. Ответов 3
Метки нет (Все метки)

Народ помогите!
Зашел в тупик, как не бьюсь, ну никак VC не хочет
писать в мемо > 256 b. Делаю визардом простое приложение
с БД (ODBC), кидаю Edit и пытаюсь вбить кучу bytes.
Что за ограничение такое, будь оно ладно.....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2007, 16:09     Запись в мемо поле (mdb) > 256 byte в VC
Посмотрите здесь:
Запись в файл тхт из мемо C++
Запись в текстовое поле сторонней программы C++
C++ Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
C++ Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp
Используя цикл for вычислить и вывести на экран 1+2+4+8+.+256 C++
Разработать функцию, заполняющую массив из 256 указателей C++
Вывод чисел 1-256 в двоичной, восьмеричной и шестнадцатиричной системах C++
Замена символов в Мемо C++
C++ Переставить строку из рандомных 16 символов 256 раз случайным образом
C++ Byte to Hex
C++ String to BYTE
Char to byte C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pwa
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 35
26.12.2007, 19:59     Запись в мемо поле (mdb) > 256 byte в VC #2
На мой взгляд, возможные проблемы:
1. Правильно определить тип поля. Например, для Access это image:
CREATE TABLE tbl(Id integer, Data image)

2. Специфический алгоритм записи. См. работающуюю ф-ю, писал ее по
примеру из MSDN:
//------------------------------------------------------------------
short __stdcall ODBC_PutLongData(qodbc *q, char *cmd, char *fname) {
SQLINTEGER cbPhotoParam;
SQLPOINTER pToken;
SQLINTEGER cbLen;
SQLCHAR Buf[20000];
FILE *fp;
SQLRETURN hRes;
long len;
char ErrTxt[256];
char FName[256];

sprintf(FName, '%s\Temp.dat', PattPathVal);
PackFile(fname, FName, ErrTxt);

if ((fp=fopen(FName, 'rb'))==NULL) {
sprintf(q->ErrText, 'ODBC_PutLongData(): Error while open %s', FName);
return -1;
}
fseek(fp, 0, SEEK_END);
len = ftell(fp);
fseek(fp, 0, SEEK_SET);

q->nResult = SQLAllocHandle(SQL_HANDLE_STMT, q->hdbc, &(q->hstmt));
q->nResult = SQLPrepare(q->hstmt, cmd, SQL_NTS);
if (q->nResult == SQL_SUCCESS || q->nResult == SQL_SUCCESS_WITH_INFO) {
cbPhotoParam = SQL_LEN_DATA_AT_EXEC(len);
q->nResult = SQLBindParameter(q->hstmt, 1, SQL_PARAM_INPUT,
SQL_C_BINARY, SQL_LONGVARBINARY,
len, 0, (SQLPOINTER) 1, 0, &cbPhotoParam);
q->nResult = SQLExecute(q->hstmt);
while (q->nResult == SQL_NEED_DATA) {
if ((q->nResult=SQLParamData(q->hstmt, &pToken)) == SQL_NEED_DATA) {
// if ( (cbLen=fread(Buf, 1, sizeof(Buf), fp)) >0 ) {
// hRes = SQLPutData(q->hstmt, Buf, cbLen);
// }
// else
// break;
while ( (cbLen=fread(Buf, 1, sizeof(Buf), fp)) >0 ) {
hRes = SQLPutData(q->hstmt, Buf, cbLen);
len -= cbLen;
if (len<=0)
break;
}
}
}
}
if (q->nResult != SQL_SUCCESS)
DisplayError(q, SQL_HANDLE_STMT, q->hstmt);
fclose(fp);
return q->nResult;
}
Alex Ermakov
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 4
27.12.2007, 08:33  [ТС]     Запись в мемо поле (mdb) > 256 byte в VC #3
Если не сложно, можно ссылочку на пример из MSDN.
Спасибо за ответ.
pwa
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 35
27.12.2007, 09:29     Запись в мемо поле (mdb) > 256 byte в VC #4
Пример в описании функции SQLPutData (MSDN April 2000)
(Platform SDK -> Data Access Service -> MDAC SDK
->Microsoft ODBC -> ODBC reference -> Part 4 -> Chapter 21 -> SQLPutData)

Пример в MSDN описывает возможность записи данных 'на лету',
когда еще не известна длина данных.
Мой пример работает с известной длиной.
Yandex
Объявления
27.12.2007, 09:29     Запись в мемо поле (mdb) > 256 byte в VC
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru