Имя: Пароль:
1C
 
SQL запрос. Не записывает данные
0 kalisto
 
23.09.21
12:09
Всем привет.

Не пойму, что происходит. Отправляю прямым запросом данные из 1С ЗУП КОРП 2.5 в SQL (2017) с данными по сотрудникам ФИО, дата приема, дата увольнения.

В одном случае запись попадает в таблицу sql, в другом нет. Причина в дате приема.
Например, запись с датой 23.08.2021 00:00:00 не записывается, а запись с датой 09.08.2021 00:00:00 записывается.
В sql поля приема и увольнения имеют тип date.
Подскажите, что делать, кто сталкивался.
Запрос:
Command.CommandText = "USE DATABASE
                    |INSERT INTO Table1 VALUES(
                    |'"+LAST_NAME+"',
                    |'"+FIRST_NAME+"',
                    |'"+Date_accept+"',
                    |'"+Date_fired +"'
                    |)";
Command.Execute();
При этом получаю ошибку:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
1 youalex
 
23.09.21
12:17
внешний источник добавить в конфу не вариант?
"Операция не допускается, если объект закрыт." - не похоже на проблемы с датой.
Command.CommandText покажи, значений переменных отсюда не видно
2 kalisto
 
23.09.21
12:40
USE DATABASE
INSERT INTO Table1 VALUES(
'Агафонов',
'Георгий',
'23.08.2021 00:00:00',
'01.01.0001 00:00:00'
)
3 kalisto
 
23.09.21
12:43
USE DATABASE
INSERT INTO Table1 VALUES(
'Абаков',
'Алексей',
'09.08.2021 00:00:00',
'01.01.0001 00:00:00'
)
4 Fram
 
23.09.21
12:45
Попробуй 2021-08-23
5 Fram
 
23.09.21
12:46
Или слитно
6 1Сергей
 
23.09.21
12:46
вроде, даты должны быть в таком формате '2011-04-15 00:02:00'
7 Fram
 
23.09.21
12:47
Или может там триггер какой навешан на запись, проверяющий даты
8 kalisto
 
23.09.21
12:49
(4) Прописала руками значение, запись загрузилась.
Даты все из 1С беру. Ничего не применяю к ним.
9 ДенисЧ
 
23.09.21
12:50
USE DATABASE
убери из запроса.
10 kalisto
 
23.09.21
12:52
(9) убрала строку, получила ошибку
Conversion failed when converting date and/or time from character string.
Видимо, sql воспринимает дату, как строку. Но почему?
11 ДенисЧ
 
23.09.21
13:01
(10) Потому что не тот формат, что он ждёт.
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15
Посмотри и поиграйся форматами.
12 kalisto
 
23.09.21
13:02
Да. Странная история. Все даты до чисел, у которых первые цифры больше нуля, воспринимаются, как строки, а не даты. Т.е. 07.07.2021 00:00:00 - дата, 24.07.2021 00:00:00 - строка. Пришлось перевернуть даты 2021-07-24, тогда все грузится.
Всем спасибо.
Поизучаю тему со стороны sql.
13 arsik
 
гуру
23.09.21
13:03
14 arsik
 
гуру
23.09.21
13:06
15 kalisto
 
23.09.21
13:07
(13,14) Спасибо)