Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных: SQL > Количество параметров в запросе в Access-e |
Автор: tuzikrvn 28.10.03, 09:52 |
Очередная небольшая проблемка.. ;) Есть База на Access-e. Мне нужно выгрести из неё информацию по трём критериям. Что то вроде SELECT * FROM INF_TABLE WHERE PARAM1='par1' AND PARAM2='par2' AND PARAM3='par3' Всё вроде намана, запускаю даный запрос из проги, и в ответ оно мне: "Too few parameters. Expected 2." Т.е. как я понял ему не понравилось то, что я ему три параметра через AND передал. Может есть какие то варианты как иначе запрос переписать? А то я не особо силён в SQL-е : |
Автор: old_lamer 28.10.03, 10:36 |
Вроде должно работать... А как таблица и поля назвывались? И типы полей какие? |
Автор: tuzikrvn 28.10.03, 10:53 |
Таблица KEYS: .... DATA_CREATE - data/time DATA_EXP - data/time FIID - text KEY_TYPE - text INDEX - number .... Запрос: SELECT DATA_CREATE, DATA_EXP FROM KEYS WHERE FIID='xxxx' AND KEY_TYPE='zzz' AND INDEX='3' матюкается.. : |
Автор: old_lamer 28.10.03, 11:11 |
....AND INDEX=3 Кавычки нафиг похерь ;D |
Автор: tuzikrvn 28.10.03, 11:30 |
Я и так и так пробовал.. с кавычками - это просто последний вариант.. ;) Всё равно не работает.. |
Автор: old_lamer 28.10.03, 12:12 |
У меня работало |
Автор: tuzikrvn 28.10.03, 14:29 |
Я тут вроде разобрался где именно проблема, но задачу ещё не решил.. Для наглядности код: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> CString m_sql = "SELECT DATA_CREATE, DATA_EXP FROM KEYS WHERE FIID='xxxx' AND KEY_TYPE='xxx' AND INDEX=3";<br><br>CODBCRecordset m_rs( &m_db );<br>m_rs.Open(m_sql);<br> Код нормальный, рабочий. В таком виде при выполнении m_rs.Open(m_sql) выскакивает ошибка "Too few parameters. Expected 2." Если выгребать из таблицы любые данные кроме даты, типа SELECT FIID, KEY_TYPE.. и.д., то запрос работает нормально.. однако мне всё же нужна дата. Если же попытаться выгрести всё запросом типа SELECT * FROM KEYS.. то при вызове m_rs.Open(m_sql) выскакивает критическая ошибка. Вывод: судя по всему тут нужно или дату выгребать как то по-особенному, типа TO_CHAR(DATA_CREATE) или ещё как то.. как именно не знаю.. : Кто подскажет? |
Автор: old_lamer 28.10.03, 14:43 |
CODBCRecordset - это тобой порождённый класс от CRecordset?? Посмотри на сколько правильно описан класс. В смысле есть ли в нём поля Цитата типа SELECT FIID, KEY_TYPE.. и.д., |
Автор: tuzikrvn 29.10.03, 06:50 |
Нормальный рабочий класс. Я его с CodeGuru взял. Вполне рабочий. глюков ещё пока не замечал. У меня есть две базы, одна удалённая Oracle-вская, вторая локальная Access-евская. И в той и в другой идёт работа в том числе и с DateTime полями. С Oracle проблем никаких нет, всё нормально. А вот с Access-ом такой вот глюк. У меня из-за него работа стопорится. :-/ |
Автор: tuzikrvn 29.10.03, 07:38 |
Следующее наблюдение: при запросе "SELECT DATA_CREATE FROM KEYS" выдаёт "Too few parameters. Expected 1." т.е. ему даже в простом запросе по выборке даных типа date/time не хватает параметров. ИМХО он форматирование вывода требудет. Но вот как? : Народ.. не дайте погибнуть.. ;) |
Автор: tuzikrvn 29.10.03, 09:38 |
Всё.. погиб.. Переписал Аксесовскую базу на .dbf и пошла работа дальше.. |
Автор: old_lamer 29.10.03, 10:55 |
Короче... Напиши так CString m_sql = "SELECT DATA_CREATE, DATA_EXP FROM KEYS WHERE FIID='xxxx' AND KEY_TYPE='xxx' AND INDEX=3"; CRecordset m_rs( &m_db ); m_rs.Open(m_sql); |