Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CRecordset как обраб запрос сложнее SELECT * FROM 
:(
    Опции темы
hash_2000
Дата 26.9.2008, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток!
начал работать с базами данных . и обнаружил один интересный ньюанс .
если в CRecordset::Open в качестве sql запроса передать чтото типа 
SQL
DECLARE @month smallint,
    @year smallint,
        @date datetime,
        @pay_id smallint

SET @date='20080901'
SET @month=month(@date)
set @year=year(@date)
SET @pay_id=10017

SELECT f.nazn_id,
         value=SUM(CASE @month
               WHEN 1 THEN li.value1
               WHEN 2 THEN li.value2
               WHEN 3 THEN li.value3
               WHEN 4 THEN li.value4
               WHEN 5 THEN li.value5
               WHEN 6 THEN li.value6
               WHEN 7 THEN li.value7
               WHEN 8 THEN li.value8
               WHEN 9 THEN li.value9
               WHEN 10 THEN li.value10
               WHEN 11 THEN li.value11
               WHEN 12 THEN li.value12
            END),
            energy=(select energy_measure
                    from type_energy where energy_id=1),
            is_nasel=isnull(t.kind,0),
            energy_id = 1,
            f.name_nazn,
            tarif=(SELECT
                       (select tarif from fixinglive_part fp
                       LEFT OUTER JOIN fixing_part fpp ON fpp.nazn_id=fp.nazn_id
                       where fp.nazn_id=fl.nazn_id and fp.date_beg=fl.date_beg AND fpp.energy_id=1 AND fp.naznpart_id=fpp.naznpart_id)
                 FROM fixinglive fl
                 WHERE fl.nazn_id = f.nazn_id and fl.date_end>@date AND fl.date_beg<=@date)
FROM limit_year li, limit l
LEFT OUTER JOIN fixing f ON f.nazn_id=l.pladv_nazn_id
LEFT OUTER JOIN taxcheck t ON f.nazn_id=t.nazn_id
WHERE li.year=@year AND li.pay_id=@pay_id AND l.limit_id=li.limit_id AND l.live_in<=@date AND l.live_out>@date
GROUP BY t.kind, f.name_nazn, f.nazn_id, l.cons_id




функция CRecordset::BuildSelectSQL останавливается на строке ASSERT(m_nFields != 0); ... m_nFields получается равно 0.
а если сделать производный от CRecordset класс и прописать в конструкторе m_nFields = 7 (например) вызывается исключение ...

так что для CRecordset подобный запрося является слишком сложным чтоли, и он не может с ним работать?
может кто знает как решить эту неувязочку ...

если выполнить запрос в Query Analyzer'е каком нибудь все выполняется просто замечательно ... возвращаются нужные столбцы .. т.е. проблема не в запросе.


PM MAIL   Вверх
Lycifer
Дата 26.9.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

функция CRecordset::BuildSelectSQL останавливается на строке ASSERT(m_nFields != 0); ... m_nFields получается равно 0.
а если сделать производный от CRecordset класс и прописать в конструкторе m_nFields = 7 (например) вызывается исключение 


m_nFields - вообще это для вызова хранимых процедур, это количество параметов для возврата, паратмеры зарежаются в Карте
PM MAIL ICQ   Вверх
hash_2000
Дата 27.9.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



с этими классами работаю относительно недолго ... точнее вообще только начал ... 
нельзя ли поподробнее ... как сделать чтобы можно было получить записи из запроса 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

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

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


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

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


 




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


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

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