Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Set - запросы, нужны советы, ссылки 
:(
    Опции темы
SSlavon
Дата 18.10.2004, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не могу понять, как записать запрос по условию Where или Like
Код
m_pSet->Open(CRecordset::dynaset, "SELECT GetFrom  FROM PaymDoc
  WHERE  LIKE 'A%' ");

ИЛИ
Код
m_pSet->Open(CRecordset::dynaset, "SELECT GetFrom  FROM PaymDoc");
m_pSet->m_strFilter = "LIKE 'A%' ";

Как будет правильно?
и можно-ли вместо А подставить ff->m_gContrStr (указатель на строку)?

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


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Правильно будет и так и так, если ты полностья укажеш условие выбора (т.е. "{что} LIKE 'A%') ;)



--------------------
user posted image
PM MAIL   Вверх
Coocky
Дата 18.10.2004, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата
и можно-ли вместо А подставить ff->m_gContrStr (указатель на строку)?

Конечно!Ведь m_strFilter это строка :) Только вот надо будет сделать операции с со строками CString::Insert() :)
Цитата
m_pSet->m_strFilter = "LIKE 'A%' ";

Выполняется до m_pSet->Open();
P.S. А че у тебя нормально запрос работает.Ни чего драйвер не выдает :D :D :D


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
SSlavon
Дата 19.10.2004, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



во, а я в исходниках встречал m_pSet->m_strFilter = "LIKE ..."; после m_pSet->Open();, поэтому и не работало, теперь все нормально, вот только не врубаюсь как провести сортировку для получения уникальных записей
И еще вопрос по той же теме, у меня множественный фильтр по отбору инфы из БД, если m_pSet->m_strFilter = "LIKE ..."; выполняется перед m_pSet->Open();, мне нужно постоянно открывать и закрывать базу, выполняя поиск по условию? Или есть какой другой способ?

PM MAIL   Вверх
SSlavon
Дата 19.10.2004, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



что-то я начинаю тупить :stena
делаю запрос
Код

   m_pSet->m_strFilter = " GetFrom LIKE '[Я]%' ";
   m_pSet->Open(CRecordset::dynaset, "SELECT * FROM PaymDoc ");

работает, выдает все что есть, а если пытаюсь провести
Код

   m_pSet->m_strFilter = " GetFrom LIKE '[Язва]' ";
   m_pSet->Open(CRecordset::dynaset, "SELECT * FROM PaymDoc ");

выдает:
Попытка просмотра данных после конца или перед началом данных.
хотя "[Язва]" в базе есть, и не одна :)

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


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



SSlavon посмотри настройки кодовой таблице в ODBC. Скорей всего у тебя драва не распознают кирилицу (или база :) )


--------------------
user posted image
PM MAIL   Вверх
SSlavon
Дата 19.10.2004, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



все распознает :)
запрос я не правильно делал
Код

m_pSetPD->m_strFilter = "GetFrom LIKE '" +str+ "%' ";

так работает :)
теперь другая проблема вылезла, как отследить отсутсвующие данные, прога апосля выдачи:
Попытка просмотра данных после конца или перед началом данных.
вылетает напроч :hmmm
Добавлено @ 14:08
где можно почерпнуть унфу по работе с ODBC?
PM MAIL   Вверх
Mad
Дата 19.10.2004, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Цитата(SSlavon @ 19.10.2004, 14:07)
теперь другая проблема вылезла, как отследить отсутсвующие данные, прога апосля выдачи:
Попытка просмотра данных после конца или перед началом данных.

В класса CRecordset есть для этого две фенкции: IsBOF() и IsEOF(). Если хоть одна из них вернет TRUE, то чтение приведет к приведенной ошибке.
Цитата(SSlavon @ 19.10.2004, 14:07)
где можно почерпнуть унфу по работе с ODBC?

Посмотри MSDN, там все красиво, с примерами, описанно


--------------------
user posted image
PM MAIL   Вверх
SSlavon
Дата 19.10.2004, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я понимаю, но как мне ими воспользоваться, если база то еще не открыта?
Код

m_pSetPD->m_strFilter = "GetFrom LIKE '" +str+ "%' ";
 m_pSetPD->Open(CRecordset::dynaset, "SELECT *  FROM PaymDoc");

иначе запрос не получается сделать :stena
PM MAIL   Вверх
Mad
Дата 19.10.2004, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



SSlavon
У тебя ошибка вылитает не на Open() вызове а на первом вызове MoveNext() или MoveFirst(), посмотри в дебагере.


--------------------
user posted image
PM MAIL   Вверх
SSlavon
Дата 19.10.2004, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



:thumbs-up
понял, нашел, спасибо :D
PM MAIL   Вверх
Coocky
Дата 19.10.2004, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Ты говоришь,что видел
Цитата
m_pSet->m_strFilter = "LIKE ..."; после m_pSet->Open();,

Да но ты пропустил
Код
после m_pSet->Open();m_pSet->Requery();m_pSet->m_strFilter = "LIKE ...";  
:D

Это сообщение отредактировал(а) Coocky - 19.10.2004, 19:31


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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