Модератор: Модераторы
Unvictis писал(а):При добавлении новой записи в таблицу с помощью оператора SQLQuery.Insert...
//Перед Post
procedure TForm1.SQLQueryBeforePost(DataSet: TDataSet);
begin
If DataSet.FieldByName('Имя_поля').AsString='' Then
DataSet.FieldByName('Имя_поля').AsНужныйТип=ЗначениеПоУмолчанию;
end;
Vadim писал(а):Unvictis писал(а):При добавлении новой записи в таблицу с помощью оператора SQLQuery.Insert...
Полагаю (может быть напрасно), что речь идёт о работе через DBGrid.
Предлагаю, вдобавок к сказанному предыдущим оратором, перед Post проверять значения в полях, чтобы они не были пустыми строками:
- Код: Выделить всё
//Перед Post
procedure TForm1.SQLQueryBeforePost(DataSet: TDataSet);
begin
If DataSet.FieldByName('Имя_поля').AsString='' Then
DataSet.FieldByName('Имя_поля').AsНужныйТип=ЗначениеПоУмолчанию;
end;
Или отказаться от редактированияВставки записей через DBGrid в пользу собственной формы.
sts писал(а):Допускаю что проблема в коде sql - написано типа insert from table (AAAA, BBBB) values (:AAAA, :BBBB) или как там в либе (?,?), так вот, DEFAULT присваиваются полям только в случае их ОТСУТСТВИЯ, в данном случае ни для AAAA ни для BBBB они не подставятся а возьмутся NULLы.
а вот если так - insert from table (AAAA) values (:AAAA) то для BBBB DEFAULT подставится.
Добавлено спустя 6 минут 21 секунду:
далее, есть высокоуровневые либы доступа к базам, которые самостоятельно считывают, из описателя таблиц, значения по умолчанию и, в случае передачи в параметрах NULLов, подставляют их, чем вы там пользуетесь? посмотрите на предмет настроек.
Unvictis писал(а):в почти в любой современной СУБД значения для полей по умолчанию можно (и я думаю что это правильный метод) установить на этапе проектирования БД (опция DEFAULT в описании поля) и в дальнейшем совсем не трудно изменить.
Vadim писал(а):формируйте команду INSERT по условию непустого поля редактирования
Unvictis писал(а):Поясните, как это?
Vadim писал(а):вставки в поля БД пустых значений, если при добавлении новой записи в DB-компонент не вставлено какое-то значение.
alexs писал(а):На мой взгляд - пустых значений в БД вообще быть не должно. NULL - зло. И разработчик должен стараться исключать ситуации с хранением пустых значений.
alexs писал(а):Штатные DB компоненты не умеют работать с DefaultExpression
Zeos - вроде может.
А вообще - если оператору даёшь вводить данные - так пусть он их вводит. А если позволяешь вносить пустые данные - то может это поле вообще не нужно?
В своё время мне надоело писать обработчики в форме на заполненность полей - в RxFPC написал компоненту, которая именно и занимается этим.
Сейчас этот форум просматривают: Yandex [Bot] и гости: 261