На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Запрос по дате , Создание запроса по дате
    Уважаемые господа!
    Подскажите где у меня ошибка?
    База в файле Access через ADO.
    Создаю запрос с использованием DateEdit:
    ...
    SQL.Add('(Date='''+DateEdit.EditText+''')');
    ...
    компилируется нормально, но при обращении выдает ошибку "Несоответствие типов данных в выражении условия отбора".
      Используй параметры:
      ExpandedWrap disabled
        ...
        SQL.Add('(Date=:P_DATE)');
        SQL.ParamByName('P_DATE').Value = DateEdit.Date;
        ...
        Спасибо за такой быстрый ответ, но к сожалению не компилируется.
        Пишет, что не понимает "Parameters".
          Цитата nikvicfc, 8.10.04, 15:48
          SQL.Add('(Date='''+DateEdit.EditText+''')');

          ExpandedWrap disabled
             
            '(Date=#'+DateEdit.EditText+'#)'
            Уважаемый Master!
            При таком коде появляется ошибка: 'Дата содержит синтаксическую ошибку в выражении запроса '(Date=##)''.
              Цитата nikvicfc, 8.10.04, 15:48
              SQL.Add('(Date='''+DateEdit.EditText+''')');
              тут кажется ошибки нет, но дату нужно вводить соответствующим форматом. точно не помню но кажется YYYY-MM-DD.
              или как писал Chow через параметр.
                Если выдается именно (дословно) такая ошибка:
                Цитата
                'Дата содержит синтаксическую ошибку в выражении запроса '(Date=##)''

                то это значит, что DateEdit.EditText имеет пустое значение. Иначе было бы:
                'Дата содержит синтаксическую ошибку в выражении запроса '(Date=#чего-то там#)''
                  Цитата nikvicfc, 11.10.04, 09:04
                  'Дата содержит синтаксическую ошибку в выражении запроса '(Date=##)''.

                  В Accesse дату принято заключать в #.
                  Слово 'Date' - являеться зарезервированным во многих язаках, и если оно являеться именем поля то обычно надо брать в кавычки.
                    Уважаемые господа!
                    Отвечаю по-порядку.
                    И в таблице и в запросе формат dd.mm.yyyy, в таблице Access - краткий формат даты.
                    Первоначально сообщение об ошибке так и было написоно:'Дата содержит синтаксическую ошибку в выражении запроса '(Date=#11.10.2004#)''.
                    Название поля(Date) на самом деле иное.
                    Сообщение отредактировано: nikvicfc -
                      Цитата nikvicfc, 11.10.04, 13:01
                      '(Date=#11.10.2004#)''.

                      А так (Date=#11/10/2004#)

                      ExpandedWrap disabled
                        WHERE (((Заказы.ДатаРазмещения)=#7/26/1996#));
                        слово DATE зарезервировано стандартом ANSI/iso sql92.
                        Оно не допустимо к исползованию как имя поля.
                          Уважаемый Master!
                          Попробывал заменить везде, в том числе в системе разделители даты.
                          Кроме изменения разделителей ничего не изменилось. Ошибка та же:'Дата содержит синтаксическую ошибку в выражении запроса '(S_Date=#11/10/2004#)''.
                          Уважаемый Pigas, как я уже писал название поля на самом деле не Date, так написал на форуме для простоты.
                            Я работаю на Delphi 7 с использованием DBExpress Компонет.
                            И у меня тоже возникла ошибка при работе с датой, точнее передачей ее запросом.
                            Цитата

                            SQLQuery1.Close;
                            SQLQuery1.SQL.Text:='insert into history (now_date) values (:date)';
                            SQLQuery1.ParamByName('date').asDateTime:=date;
                            SQLQuery1.ExecSQL();

                            Он ругается : "dbExpress Error: Invalid Field Type"
                            В таблице поле типа: datetime
                            Также пытался Задавать параметр asDate. Все равно нивкакую.
                            Сообщение отредактировано: Mamont -
                              Какой текст запроса полностью?
                              (И все-же стоит использовать параметры - не надо ломать голову о формате представления того или иного типа. Тем более, что на другом компьютере могут быть другие настройки и ваша программа не будет работать)

                              Добавлено
                              Цитата Mamont, 12.10.04, 09:07
                              'insert into (now_date) values (:date)'

                              Где здесь указано имя таблицы?
                                Забыл сказать, что тоже компилирует он нормально, ошибка возникает воремя обращения.

                                Добавлено
                                Sorry
                                Цитата

                                SQLQuery1.SQL.Text:='insert into history (now_date) values (:date)';


                                Это я когда пост писал, забыл написать. В проге название таблицы присутствует.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0664 ]   [ 16 queries used ]   [ Generated: 6.08.25, 07:43 GMT ]