Поиск:

Ответ в темуСоздание новой темы Создание опроса
> error C2679: binary '=' : no operator…, VC++6, ADO, MSSQL 
V
    Опции темы
nicvc
Дата 1.3.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;

не помогло.

Ставил перед знаком = знак +   - тоже не помогло.
Подскажите, в чем дело? Кто-нибудь встречался?
PM MAIL   Вверх
Earnest
Дата 2.3.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Делай явное преобразование:
для всех интов пиши так:  int abc = (unsigned)v;
для строк так: CString str = (LPCTSTR)(_bstr_t)v;
Ничего дополнительно включать не нужно.


--------------------
...
PM   Вверх
nicvc
Дата 2.3.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Благодарю.

Начал с первого инта и сразу понял, что не знаю как использовать подсказку.

Пробовал так:

int v = -1;
int iElementID = (unsigned)v;

Ошибка та же.

А со строкой тем более даже не знаю с чего начать.

Подскажите пожалуйста поподробнее применительно к моему коду.
PM MAIL   Вверх
Greeen
Дата 2.3.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Попробуй так
Код

strName = (LPCTSTR)(_bstr_t)m_pRS->Fields->Item["ElementName"]->Value;


Это сообщение отредактировал(а) Greeen - 2.3.2007, 23:43


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
nicvc
Дата 3.3.2007, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Благодарю.

Строка работает.
А с интами ничего не получается.
Пробовал даже аналогично строке.

Ситуацию портит то, что необходимо присваивать значение -1 и то, что далее
присваивается m_pRS, т.е. не зная логики все не так просто.

Помогите еще с интами.
PM MAIL   Вверх
Greeen
Дата 3.3.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Код

iElementID = (int)m_pRS->Fields->Item["ElementID"]->Value



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
nicvc
Дата 3.3.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Не работает.

Ошибка такая:
error C2440: 'type cast' : cannot convert from 'class _variant_t' to 'unsigned int'

Не понятно, что делать со значением -1?


PS:
Я тут копнул откуда у меня этот код и выяснил, что из работающего кода, но 
он сделан в VisualStudio6.
У меня VS6 нет, только VC++6.

Может все-таки дело в отсутствии каких-то библиотек?

PM MAIL   Вверх
Earnest
Дата 4.3.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(nicvc @  3.3.2007,  22:45 Найти цитируемый пост)
Я тут копнул откуда у меня этот код и выяснил, что из работающего кода, но 
он сделан в VisualStudio6.
У меня VS6 нет, только VC++6.

Что-то я разницы не улавливаю...

У меня такой код в VС++ 6 компилируется:

int iElementID = (long)v; где v = _variant_t.
Преобразование не к int, а именно к long или unsigned.
У тебя ведь, если  iElementID объявлен как long, компилируется?

Цитата(nicvc @  3.3.2007,  22:45 Найти цитируемый пост)
Не понятно, что делать со значением -1?

Подумаешь, какие нежности! smile  Куда оно денется? Ну преобразуешь ты 0xFFFFFFFF к int, и что получишиь? Правильно, -1.



--------------------
...
PM   Вверх
nicvc
Дата 4.3.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Благодарю.

Так работает:

int iElementID = -1;
iElementID =  (long)m_pRS->Fields->Item["ElementID"]->Value;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.