|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.07.2011, 19:08 | #1 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Date = Null - КАК ???
Я охреневаю над этой проблемой, что Дата не может быть пуста в Delphi... это ужас какой-то, что делать хз...
Вот есть таблица в БД, есть там данные, вот с данными происходит некоторое событие - устанавливаем в соответствующее поле результат событий, а в соседнее поле - дату событий. Потом вдруг понадобилось очистить предыдущее действие - поле результата событий очищается без проблем, но как очистить дату?! ведь передать Date=null через Delphi никак не получается! PS Чтобы не было воплей "дата не может быть null" - откройте БД, посмотрите сами - там чётко поле пустое или в спецрадкторах типа IBExpert написано NULL! Так как же очистить дату в БД (передать из Delphi в Firebird пустое значение даты, которое сможет затереть предыдущее значение даты) ?! |
29.07.2011, 19:19 | #2 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
в делфи не используется NULL, используется nil
|
29.07.2011, 19:25 | #3 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
в Базах данных используют специальный маркер, null значение для того, чтобы если б мы не ввели информацию то поле этой записи имело пустое значение.
Представте себе такую ситуацию, когда мы заполняем данные о чем нить и у нас нет определенной ситуации, то как нам помечать пустоту значения, например для даты? Для делфи, поскольку дата это Integer, то пустое значение нет возможности предоставить. Если нужно, то можно создать свой тип данных, у которого в качестве маркера пустоты будет использовано булевое поле.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
|
29.07.2011, 19:27 | #4 | |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
ZuBy
Врядли получится использовать nil: Код:
Цитата:
Короче ппц какой-то - как очищать поле даты в БД ?! Последний раз редактировалось delphicoding; 29.07.2011 в 19:30. |
|
29.07.2011, 19:38 | #5 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Код:
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
Последний раз редактировалось chertovich; 29.07.2011 в 19:40. |
29.07.2011, 19:44 | #6 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Да нет же, нельзя это сделать!
Есть ФормаА с таблицей с данными. Нажали кнопочку ОК - вызывается специальная процедура обработки из ФормыБ в которую передаётся значение "1,2,3,4,ДАТАСЕГОДНЯ", процедура в программе вызывает хранимую процедуру в БД и передаёт туда значения, значения записываются в БД. Всё ок. Нажали кнопку ОТМЕНА в той же ФормеА - вызывается ТА ЖЕ процедура обработки из ФормыБ в которую надо передать значение "1,2,3,4,null", процедура в программе вызывает процедуру в БД и передаёт туда значения, чтобы в БД поле стало NULL! Ошибка возникает при попытке вызвать из ФормыА в ФормеБ процедуру с атрибутами "1,2,3,4,null"... |
29.07.2011, 19:46 | #7 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
смотрите, например, модуль System: Цитата:
delphicoding, к словам chertovich добавлю. А ещё можно так присвоить: Код:
используйте тип Variant |
||
29.07.2011, 19:49 | #8 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Я уже написал, что передавать значение поля через тип TDate нельзя. Необходимо создать свой тип данных с маркером либо попробывать передавать тип TField.
А вообще, зачем передавать данные через процедуру, если можно добавить форму, содержащую компонент БД в uses формы и использовать данные сразу из записи?
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
Последний раз редактировалось chertovich; 29.07.2011 в 19:54. |
29.07.2011, 20:00 | #9 | ||
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Цитата:
Цитата:
|
||
29.07.2011, 20:03 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перевести integer в Date | demiancz | Общие вопросы Delphi | 11 | 17.02.2011 23:08 |
КАк сделать JOIN в Access с объединением по NULL | Izhic | Помощь студентам | 1 | 09.02.2011 11:18 |
FireBird. Как конвертировать Integer в Date и обратно? | BeJIuKuu_Hexo4yxa | SQL, базы данных | 5 | 25.10.2010 10:10 |
как сравнить c null? | MigelCNB | Общие вопросы Delphi | 4 | 22.09.2010 15:06 |
Как сделать подобие NOT NULL в DataGridView? C# | Sparkman | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 2 | 18.08.2010 11:07 |