Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обрщение к Query Access через СRecordset 
V
    Опции темы
witex
Дата 6.9.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здраствуйте форумчане.

Есть проблема, делаю программу работающю с БД Акцес.
Данные выбирать получается, но когда в запроссах использую INNER JOIN то иногда CRecodset выбирает не все данные! чать пропускает попросту.

Создаю банальный Query в самом акцесе, там всё как нужно.

Вопрос такой, как обратиться к готовому Query через CRecordset, и как используя его задавать парметр выборки в самом Query?

За ранее благодарю!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
dizzy1984
Дата 7.9.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Должно быть это сделать не получится, либо будет проблематично.
Проще продублироват текст запроса и использовать его в CRecordset.
А чтобы понять почему запрос не выводит часть данных нужно знать.
1) Запрос
2) Структуру БД
3) Код запускающий его на выполнение
3) Способ(код) просмотра результата запроса.

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


Бывалый
*


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

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



Запрос через рекордсет и в query в Акцесе.
Код


CString query ="SELECT dolzn.id,dolzn.dolznost, dolzn.did, dolzn.jark FROM dolzn INNER JOIN tarif ON dolzn.ID = tarif.ID WHERE (((tarif.data)<>'"+datas+"'))";
nrd.Open(CRecordset::forwardOnly,_T(query));


полностью идентичные запрос и в акцесе.

Но в акцессе выводит при нём 2 результата, а через рекордсет 1!

nrd.GetRecordCount(); возвращает еденицу вместо двух результатов

Вот объясните в чём может быть проблема?
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
dizzy1984
Дата 10.9.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Слишком мало информации, так ничего не скажешь.
Покажи запрос который посылается бд, т.е какое значение принимае query после присвоения.
Покажи значения которые содержат таблицы dolzn и tarif.
И как ты собственно просматриваешь получившийся результат.
Метод GetRecordCount возвращает число уже просмотренный записей, которой естественно, если их не смотрят, равно 1.
Цитата

Caution   The record count is maintained as a "high water mark," the highest-numbered record yet seen as the user moves through the records. The total number of records is only known after the user has moved beyond the last record. For performance reasons, the count is not updated when you call MoveLast. To count the records yourself, call MoveNext repeatedly until IsEOF returns nonzero. Adding a record via CRecordset:AddNew and Update increases the count; deleting a record via CRecordset::Delete decreases the count. 

Т.е в мсдене сказано что чтобы получить число строк нужно организовать цикл по условию while(nrd.IsEOF()) вызывая nrd.MoveNext(); и увеличивая счетчик числа, с поправкой на CRecordset:AddNew и CRecordset:Delete.

PM MAIL   Вверх
witex
Дата 11.9.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



благодарю, за помощь.

Crecodset.IsEOF() помог.

Просто в мсдн написанно, что GetRecordCount() возвращает количество запсей. А оказалось нет.

Ещё раз спасибо. Тема закрыта.
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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