Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.253.221] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Очередная небольшая проблемка.. ;)
Есть База на Access-e. Мне нужно выгрести из неё информацию по трём критериям. Что то вроде SELECT * FROM INF_TABLE WHERE PARAM1='par1' AND PARAM2='par2' AND PARAM3='par3' Всё вроде намана, запускаю даный запрос из проги, и в ответ оно мне: "Too few parameters. Expected 2." Т.е. как я понял ему не понравилось то, что я ему три параметра через AND передал. Может есть какие то варианты как иначе запрос переписать? А то я не особо силён в SQL-е : |
Сообщ.
#2
,
|
|
|
Вроде должно работать...
А как таблица и поля назвывались? И типы полей какие? |
Сообщ.
#3
,
|
|
|
Таблица 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' матюкается.. : |
Сообщ.
#4
,
|
|
|
....AND INDEX=3
Кавычки нафиг похерь ;D |
Сообщ.
#5
,
|
|
|
Я и так и так пробовал.. с кавычками - это просто последний вариант.. ;)
Всё равно не работает.. |
Сообщ.
#6
,
|
|
|
У меня работало
|
Сообщ.
#7
,
|
|
|
Я тут вроде разобрался где именно проблема, но задачу ещё не решил..
Для наглядности код: 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) или ещё как то.. как именно не знаю.. : Кто подскажет? |
Сообщ.
#8
,
|
|
|
CODBCRecordset - это тобой порождённый класс от CRecordset??
Посмотри на сколько правильно описан класс. В смысле есть ли в нём поля Цитата типа SELECT FIID, KEY_TYPE.. и.д., |
Сообщ.
#9
,
|
|
|
Нормальный рабочий класс. Я его с CodeGuru взял. Вполне рабочий. глюков ещё пока не замечал. У меня есть две базы, одна удалённая Oracle-вская, вторая локальная Access-евская. И в той и в другой идёт работа в том числе и с DateTime полями. С Oracle проблем никаких нет, всё нормально. А вот с Access-ом такой вот глюк. У меня из-за него работа стопорится. :-/
|
Сообщ.
#10
,
|
|
|
Следующее наблюдение:
при запросе "SELECT DATA_CREATE FROM KEYS" выдаёт "Too few parameters. Expected 1." т.е. ему даже в простом запросе по выборке даных типа date/time не хватает параметров. ИМХО он форматирование вывода требудет. Но вот как? : Народ.. не дайте погибнуть.. ;) |
Сообщ.
#11
,
|
|
|
Всё.. погиб..
Переписал Аксесовскую базу на .dbf и пошла работа дальше.. |
Сообщ.
#12
,
|
|
|
Короче...
Напиши так 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); |