Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2011, 14:38   #1
mental
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 36
По умолчанию Дата

В базе данных (Sql Server) поле данных может принимать пустое значение, но когда программно добавляю запись в БД, то вместо пустого значения даты заносит значение: 1900-01-01, с чем это может быть связано? Хотя если этот же запрос вбить в самом скл сервере, то заносится действительно пустое значение.
mental вне форума Ответить с цитированием
Старый 02.08.2011, 14:51   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

В базе данных (Sql Server) поле данных может принимать пустое значение, но когда программно добавляю запись в БД, то вместо пустого значения даты заносит значение: 1900-01-01

вставляете не ПУСТОЕ значение, а "нулевую" дату.
date & SQLdate
0 <> NULL
0 = 1900-01-01
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.08.2011 в 14:58.
evg_m вне форума Ответить с цитированием
Старый 02.08.2011, 15:07   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

evg_m, +1

mental, если комментария evg_m Вам недостаточно, чтобы написать правильный код,
тогда приводите исходный текст программы, как вставляете запись в БД, подскажем, как правильно передать NULL в таблицу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2011, 15:13   #4
mental
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 36
По умолчанию

примерно так:

data:='';
AdoQuery1.SQL.Text:='Insert into Base Values ('+#39+data+#39+')';

получается, что должно вносится именно пустое значение..

Последний раз редактировалось mental; 02.08.2011 в 15:16.
mental вне форума Ответить с цитированием
Старый 02.08.2011, 15:31   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

ну тогда попробуйте такой код:
Код:
AdoQuery1.SQL.Text:='Insert into Base Values ( Null )';
AdoQuery1.ExecSQL;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2011, 15:51   #6
mental
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
жуть какая..
это что, в таблице Base нет других полей?! (да и переменная не зачем, если Вы всё равно ей пустую строку присваиваете...)

ну тогда попробуйте такой код:
Код:
AdoQuery1.SQL.Text:='Insert into Base Values ( Null )';
AdoQuery1.ExecSQL;
Полей много, переменную ввёл именно для того, чтобы разобраться с датами.. А так даты вбиваются из cxDate и соответственно дата может быть не выбрана и нужно вписать пустое значение.
Попробывал, выдаёт: Ошибка преобразовании даты или времени из символьной строки..
mental вне форума Ответить с цитированием
Старый 02.08.2011, 16:54   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

похоже, что я вынужден спасовать - я не понимаю, КАК может быть ошибка преобразования из символьной строки, если в запросе НЕТ символьной строки!
Вы же, надеюсь, NULL не догадались строкой сделать?!?! типа data := 'NULL'; .... ?!?!!

и ещё.
вы вначале писали
Цитата:
Хотя если этот же запрос вбить в самом скл сервере, то заносится действительно пустое значение.
какой - "ЭТОТ ЖЕ" запрос? Текст запроса,который на сервере выполняли, процитируйте, пожалуйста...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2011, 17:43   #8
KAMENYKA
Пользователь
 
Аватар для KAMENYKA
 
Регистрация: 06.12.2007
Сообщений: 87
По умолчанию

Что вы мучаетесь?

Код:
AdoQuery1.SQL.Text:='Insert into Base, Поле(n) Values ('+:@Parametr1, :@Parametr(n)+')';
AdoQuery1.Parameters.ParamByName('@Parametr1').Value := значение тобиш Data
...
...
AdoQuery1.Parameters.ParamByName('@Parametr(n)').Value :=Значение
Имена параметров лучше давать интуитивные по смыслу, обратите внимание начинаются со знака ":" но тока в запросе, собака не обязательна привычка просто И конвертировать нечего ненадо Ado все сделает за вас!!
KAMENYKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дата введённая "ручками" и дата полученная по ссылке kzld Microsoft Office Excel 0 06.05.2011 14:45
Вычитание дат(дата-дата=кол.дней) zallza Общие вопросы Delphi 1 31.05.2010 22:50
Дата Конечная (ДД.ММ.ГГГГ) - Дата Начальная (ДД.ММ.ГГГГ) = Количество Месяцев stanislav24 Microsoft Office Excel 5 20.12.2008 10:36
Дата Iskin Microsoft Office Excel 6 10.10.2008 12:41
Дата werser Общие вопросы Delphi 1 05.06.2008 22:45