![]() |
|
|
![]()
|
|
| nicvc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
VC++6, ADO, MSSQL
В функции добавления в дерево узлов из БД – вот такая ошибка: error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class _variant_t' (or there is no acceptable conversion) Код такой: // чтение полей таблицы int iElementID = -1; //long iElementID = -1; int iParentID = -1; // long iParentID = -1; CString strName; if (m_pRS->Fields->Item["ElementID"]->ActualSize > 0) { iElementID = m_pRS->Fields->Item["ElementID"]->Value; /////////// } if (m_pRS->Fields->Item["ParentID"]->ActualSize > 0) { iParentID = m_pRS->Fields->Item["ParentID"]->Value; //////////// } if (m_pRS->Fields->Item["ElementName"]->ActualSize > 0) { strName = m_pRS->Fields->Item["ElementName"]->Value; /////////// strName.TrimRight(); } Три ошибки в строках, отмеченных /////////. Если int поменять на long, то ошибка только одна – в строке с strName. Добавлял вот это: #include <iostream> #include <algorithm> #include <fstream> #include <string> #include <vector> #include <iterator> #include <functional> #include <stdlib.h> using namespace std; не помогло. Ставил перед знаком = знак + - тоже не помогло. Подскажите, в чем дело? Кто-нибудь встречался? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Делай явное преобразование:
для всех интов пиши так: int abc = (unsigned)v; для строк так: CString str = (LPCTSTR)(_bstr_t)v; Ничего дополнительно включать не нужно. -------------------- ... |
|||
|
||||
| nicvc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Благодарю.
Начал с первого инта и сразу понял, что не знаю как использовать подсказку. Пробовал так: int v = -1; int iElementID = (unsigned)v; Ошибка та же. А со строкой тем более даже не знаю с чего начать. Подскажите пожалуйста поподробнее применительно к моему коду. |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
Попробуй так
Это сообщение отредактировал(а) Greeen - 2.3.2007, 23:43 -------------------- Подпись больше не нужна |
|||
|
||||
| nicvc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Благодарю.
Строка работает. А с интами ничего не получается. Пробовал даже аналогично строке. Ситуацию портит то, что необходимо присваивать значение -1 и то, что далее присваивается m_pRS, т.е. не зная логики все не так просто. Помогите еще с интами. |
|||
|
||||
| Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 10 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
| nicvc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Не работает.
Ошибка такая: error C2440: 'type cast' : cannot convert from 'class _variant_t' to 'unsigned int' Не понятно, что делать со значением -1? PS: Я тут копнул откуда у меня этот код и выяснил, что из работающего кода, но он сделан в VisualStudio6. У меня VS6 нет, только VC++6. Может все-таки дело в отсутствии каких-то библиотек? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Что-то я разницы не улавливаю... У меня такой код в VС++ 6 компилируется: int iElementID = (long)v; где v = _variant_t. Преобразование не к int, а именно к long или unsigned. У тебя ведь, если iElementID объявлен как long, компилируется? Подумаешь, какие нежности! -------------------- ... |
|||
|
||||
| nicvc |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Благодарю.
Так работает: int iElementID = -1; iElementID = (long)m_pRS->Fields->Item["ElementID"]->Value; |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |