На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Количество параметров в запросе в Access-e
    Очередная небольшая проблемка..  ;)

    Есть База на Access-e. Мне нужно выгрести из неё информацию по трём критериям. Что то вроде
    SELECT * FROM INF_TABLE WHERE PARAM1='par1' AND PARAM2='par2' AND PARAM3='par3'

    Всё вроде намана, запускаю даный запрос из проги, и в ответ оно мне:
    "Too few parameters. Expected 2."

    Т.е. как я понял ему не понравилось то, что я ему три параметра через AND передал. Может есть какие то варианты как иначе запрос переписать? А то я не особо силён в SQL-е  ::)
      Вроде должно работать...

      А как таблица и поля назвывались? И типы полей какие?
        Таблица 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'

        матюкается..  ::)
        Сообщение отредактировано: tuzikrvn -
          ....AND INDEX=3
          Кавычки нафиг похерь ;D
            Я и так и так пробовал.. с кавычками - это просто последний вариант..  ;)
            Всё равно не работает..
              У меня работало
                Я тут вроде разобрался где именно проблема, но задачу ещё не решил..
                Для наглядности код:

                ExpandedWrap disabled
                  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) или ещё как то.. как именно не знаю.. ::)
                Кто подскажет?  
                  CODBCRecordset - это тобой порождённый класс от CRecordset??
                  Посмотри на сколько правильно описан класс.

                  В смысле есть ли в нём поля
                  Цитата
                  типа SELECT FIID, KEY_TYPE.. и.д.,
                    Нормальный рабочий класс. Я его с CodeGuru взял. Вполне рабочий. глюков ещё пока не замечал. У меня есть две базы, одна удалённая Oracle-вская, вторая локальная Access-евская. И в той и в другой идёт работа в том числе и с DateTime полями. С Oracle проблем никаких нет, всё нормально. А вот с Access-ом такой вот глюк. У меня из-за него работа стопорится.  :-/
                      Следующее наблюдение:
                      при запросе "SELECT DATA_CREATE FROM KEYS" выдаёт "Too few parameters. Expected 1."
                      т.е. ему даже в простом запросе по выборке даных типа date/time не хватает параметров.
                      ИМХО он форматирование вывода требудет. Но вот как?  ::)
                      Народ.. не дайте погибнуть..  ;)
                        Всё.. погиб..
                        Переписал Аксесовскую базу на .dbf и пошла работа дальше..
                          Короче...
                          Напиши так
                          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);
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0313 ]   [ 15 queries used ]   [ Generated: 27.04.24, 08:22 GMT ]