Поиск:

Ответ в темуСоздание новой темы Создание опроса
> crecordset немного более усложненные запросы 
:(
    Опции темы
hash_2000
Дата 17.12.2008, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



доброго времени суток!
вот зациклился на вроде бы простом вопросе и не могу двинуться дальше

нужно сделать класс производный от CRecordset который возвращает результат количество записей например
пишу так:
Код


class COneValueRecord : public CRecordset
{
public:
    COneValueRecord( CDatabase * _db, LPCSTR _FieldName, UINT _TypeId = DBVT_LONG ) 
        : CRecordset(_db)
        , m_FieldName(_FieldName)
        , m_TypeID(_TypeId)    {
        m_nFields = 1;
    }

    virtual ~COneValueRecord() {
    }

    virtual void DoFieldExchange(CFieldExchange* pFX)
        {
    pFX->SetFieldType( CFieldExchange::outputColumn );

    switch( m_TypeID )
    {
        case    DBVT_NULL:
                    break;
        case    DBVT_BOOL:
                    RFX_Bool( pFX, m_FieldName, m_Result.m_boolVal );
                    break;
        case    DBVT_UCHAR:
                    RFX_Byte( pFX, m_FieldName, m_Result.m_chVal );
                    break;
        case    DBVT_SHORT:
                    RFX_Long( pFX, m_FieldName, m_Result.m_lVal );
                    break;
        case    DBVT_LONG:
                    RFX_Long( pFX, m_FieldName, m_Result.m_lVal );
                    break;
        case    DBVT_SINGLE:
                    RFX_Single( pFX, m_FieldName, m_Result.m_fltVal );
                    break;
        case    DBVT_DOUBLE:
                    RFX_Double( pFX, m_FieldName, m_Result.m_dblVal );
                    break;
        case    DBVT_DATE:
                    RFX_Date( pFX, m_FieldName, *m_Result.m_pdate );
                    break;
        case    DBVT_STRING:
                {
                    CODBCFieldInfo    fi;
                    GetODBCFieldInfo( m_FieldName, fi );
                    RFX_Text( pFX, m_FieldName, *m_Result.m_pstring, fi.m_nPrecision );
                    break;
                }
        case    DBVT_BINARY:
                    RFX_LongBinary( pFX, m_FieldName, *(m_Result.m_pbinary) );
                    break;
        default:
            ASSERT( FALSE );
    }

}

public:
    CDBVariant    m_Result;
    LPCSTR m_FieldName;
    UINT m_TypeID;
};


далее гдето в коде:
Код

    const char _sql_mask [] = 
        " select count(*) as result "
        " from _otpusk_graph "
        " where worker_id = %i";

    CString _sql;
    _sql.Format( _sql_mask, m_WorkerID );
       // получается запрос вроде :
       // select count(*) as result from _otpusk_graph where worker_id = 1
 
        COneValueRecord rc( &__get_TheApp()->m_db, "result" );
    rc.Open( _sql.GetString() );


какбы ничего сложного ... но после того как CRecordset прогонит запрос через BuildSQL в функции Open
получается какойто кривой запрос на который он и матерится ...
подскажите может кто знает как нужно сделать правильно 





PM MAIL   Вверх
hash_2000
Дата 17.12.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



все разобрался ...

те кому интересно 
http://msdn.microsoft.com/ru-ru/library/eh6hyfxs.aspx

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




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


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

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