CRecordset : выполнение запроса
От: Агафеев О.А. Россия  
Дата: 25.04.02 12:05
Оценка:
Есть код (см ниже)
нужно сделать выборку из таблицы где
поля street — VARCHAR,os -VARCHAR,
CString Street,Os;
происходит следущее :
при задании параметра street происходит выборка
затем при задании параметра os происходит выборка
если оставляем только параметр os — нет выборки
----------------------------------------------------
первый запрос
select street,home,os from stu where street like ? and os =? order by street

второй запрос
select street,home,os from stu where os =? order by street
----------------------------------------------------
if(Street!="")
{
m_pSet->m_strFilter = "street like ?";
m_pSet->m_streetparam=Street;
m_pSet->m_streetparam+="%";
}
else m_pSet->m_strFilter.Empty();

if(Os!="")
{
if(m_pSet->m_strFilter.IsEmpty())
m_pSet->m_strFilter = "os=?";
else
m_pSet->m_strFilter +="and os=?";
m_pSet->m_osparam=Os;
}

m_pSet->Requery();
--------------------------------------------------
В чем может быть проблема?
Re: CRecordset : выполнение запроса
От: Zar Россия  
Дата: 25.04.02 14:27
Оценка:
Здравствуйте Агафеев О.А., Вы писали:

А зачем вообще фильтрами пользоваться? Почему при открытии запроса сразу не сделать SQL-строку типа "SELECT * FROM tab WHERE street .... bla-bla-bla".
[ Zarathustra ]
Re: CRecordset : выполнение запроса
От: The Lex Украина  
Дата: 25.04.02 18:24
Оценка:
Здравствуйте Агафеев О.А., Вы писали:

АО>первый запрос

АО>select street,home,os from stu where street like ? and os =? order by street

АО>второй запрос

АО>select street,home,os from stu where os =? order by street
АО> *** тут еще что-то было ***

Для отлова подобных ошибок пройдитесь под отладкой немного в глубь CRecordSet и посмотрите, что за запрос собирается в результате Ваших действий.

Еще: удобно включать режим трассировки в ODBC.
Голь на выдумку хитра, однако...
Re: CRecordset : выполнение запроса
От: The Lex Украина  
Дата: 25.04.02 18:29
Оценка:
Здравствуйте Агафеев О.А., Вы писали:

АО>if(Street!="")


Лучше писать
if (!Street.IsEmpty())

Конечно же если Street — это CString.

Это так, вдогонку.
Голь на выдумку хитра, однако...
Re: CRecordset : выполнение запроса
От: vav Россия  
Дата: 26.04.02 02:35
Оценка:
АО>нужно сделать выборку из таблицы где
АО>поля street — VARCHAR,os -VARCHAR,

Если не изменяет память, рекомендуется использовать VARCHAR2 вместо VARCHAR.

Это тоже в догонку..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.