![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Я охреневаю над этой проблемой, что Дата не может быть пуста в Delphi... это ужас какой-то, что делать хз...
Вот есть таблица в БД, есть там данные, вот с данными происходит некоторое событие - устанавливаем в соответствующее поле результат событий, а в соседнее поле - дату событий. Потом вдруг понадобилось очистить предыдущее действие - поле результата событий очищается без проблем, но как очистить дату?! ведь передать Date=null через Delphi никак не получается! PS Чтобы не было воплей "дата не может быть null" - откройте БД, посмотрите сами - там чётко поле пустое или в спецрадкторах типа IBExpert написано NULL! Так как же очистить дату в БД (передать из Delphi в Firebird пустое значение даты, которое сможет затереть предыдущее значение даты) ?! |
#2
|
||||
|
||||
![]() я же уже писал как это сделать:
Код:
Table1.FieldByName('date1').Clear; // очищаем значение поля http://www.delphisources.ru/forum/sh...58&postcount=7 а вот что в справке написано: Цитата:
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Да, Clear для полей. Или иногда (привет стандарты) ValueClear. В том примере Вы писали про обработку существующей даты. А тут задача в другом - нужно передать из программы в БД ПУСТОЕ значение даты, чтобы в БД затереть предыдущее значение даты и сделать поле БД пустым!
Но это не поля, а атрибут(переменная) процедуры. Вызываю процедуру из другого юнита и передаю значение всех требуемых атрибутов - если значение атрибута DataSobitiya не указана или указана как null - Delphi выдаёт ошибку. Пробовал указывать для процедуры в месте объявления значение по-умочланию =null также, работает только с =0, но это увы уже даёт дату 1899года, мля. ![]() |
#4
|
||||
|
||||
![]() и на этот вопрос в той теме был ответ:
Цитата:
Код:
procedure CounterStrike(date1: Variant); begin if not VarIsNull(date1) then ShowMessage(DateToStr(date1)) else ShowMessage('Null'); end; procedure TForm1.Button1Click(Sender: TObject); begin CounterStrike(Now); end; procedure TForm1.Button2Click(Sender: TObject); begin CounterStrike(Null); end; Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() Пропустил мб. Нифига се, то есть variant может быть и датой и нулл работает и дату передаёт правильно?! а для даты нулл уже не работает?! Опять - Привет стандарты!
|
#6
|
|||
|
|||
![]() Говорят Variant работает в разы медленнее чем точно определённые классы типа Date/Integer... неужели настолько медленно?!
![]() Последний тупой вопрос на сегодня - при передачи из Delphi через Dataset в БД значения Variant:=null передаются как "null" или не передаются вообще? БД воспринимает их как "нужно записать null" или как "ничего не передали, значит это поле перезаписывать не будем". PS Если все эти действия приводят к записи в БД значения null, тогда вопрос - как при вызове процедуры указать один из атрибутов пустым, чтобы в БД данное поле НЕ было перезаписано?! Конструкция типа procedure Dannie(1,2,,,5) вызывает в Delphi ошибку... Delphi очень хочет, чтобы каждый параметр был указан и написан! ![]() Последний раз редактировалось delphicoding, 29.07.2011 в 21:04. |