![]() |
|
|
![]()
|
|
| Veniamin |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Помогите пожалуйста. База данных в Access, соединена с программой в Delphi через ADO. В таблицу при добавлении записей типа текст проблем нет, но в БД в Access добавил поле с типом дата, как мне добавлять дату? В таком формате:
|
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
А зачем 2 раза "text" ? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Данкинг Опечатался, исправил, теперь не ругается. А нет, всё работает. Разобрался. Теперь как запрос составить на вывод записей по диапазону дат заявок? Есть ли разница у SQL-Server-а и MS Access?
Это сообщение отредактировал(а) Veniamin - 24.5.2008, 13:18 |
|||
|
||||
| Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
В общем случае:
(только в твоём случае всякие конвертации типов нужны, разумеется) Конкретно не сравнивал, но разницы между диалектами SQL никто не отменял... -------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
| Veniamin |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Разница всё-таки есть: в SQL-е дата пишется в одинарных кавычках, а в Access-е нужно вместо них писать решётки - #. Сделал следующим образом:
В ADOQuery запрос написать немудрено. Теперь как бы это Edit забить? Пробовал вот так, компилятор ругается:
Вариант в фигурных скобках тоже не работает. Это сообщение отредактировал(а) Veniamin - 24.5.2008, 14:16 |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Понятно, что ругается: в фигурных скобках ты к текстовой строке (т.е. свойство AdoQuery SQL) пытаешься добавить переменную типа "дата". Ну, строчки без скобок понятны: ты дату с текстом сравниваешь. А чтобы Access'у передать переменную типа "дата" попробуй нечто вроде этого:
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Veniamin |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Попробовал с cdate вот:
Выводится такая ошибка: ![]() Получилось!!! Сделал! Вот как нужно было:
Большое Вам Спасибо за помощь Данкинг! Это сообщение отредактировал(а) Veniamin - 24.5.2008, 14:45 |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Да не за что.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
После того как поменял типы данных у даты ремонта и даты заявки в базе Аксеса с текстового на дата/время с условием укороченный, т.е. дата в формате 1.01.2008, вообще перестали добавлятся записи в таблицу и редактироватся пустые. Если редактировать уже существующие с заполнеными полями типа дата, то проблем нет.
Может что-то здесь неправильно?
При попытки добавить запись или редактировать пустое поле выводится ошибка: ![]() , после чего программа виснет. Может всё из-за того, что я ввожу дату в кратком формате? Пробовал менять StrToDate - тот же результат. Это сообщение отредактировал(а) Veniamin - 24.5.2008, 17:47 |
|||
|
||||
| Данкинг |
|
||||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Вообще-то подобный код и не должен выполняться, так как пустое значение действительно не может быть датой.
Ну, попробуй (хотя маловероятно, что получится):
Но я бы просто поставил исключение на это дело:
-------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Данкинг
У меня как раз поля на форме для редактирования/добавления записей таким образом и заполняются - с помощью конструкции try...except, и иногда выводится сообщение, которое записано в обработке except: "Невозможно выполнить.", но чаще просто выводится ошибка и программа виснет. На предложенный Вами код - аналогичная реакция. Как тогда лучше сделать заполнение пустых полей в БД Access с типом дата/время? Это сообщение отредактировал(а) Veniamin - 24.5.2008, 20:24 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Что-то странное: я обычно так и делаю, т.е. вешаю исключение на могущие быть пустыми поля. Это сообщение отредактировал(а) Данкинг - 24.5.2008, 21:33 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
Вот код, который написан у меня на добавление записи в таблицу:
При попытке добавить или редактировать пустые поля дата ремонта и дата заявки ругается, при редактировании же уже существующих - всё выполняется. Про код я имел ввиду с Fieldvalues. Это сообщение отредактировал(а) Veniamin - 24.5.2008, 22:25 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Не, я имел в виду, что TRY надо поставить перед конкретно оператором заполнения даты!
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Veniamin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.3.2005 Репутация: нет Всего: нет |
А можно использовать вложенную конструкцию try...except, т.е. я просто строчку на добавление даты заключил в эту конструкцию? И всё равно - выводится та же ошибка.
Это сообщение отредактировал(а) Veniamin - 24.5.2008, 22:49 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |