Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Установить параметр запроса NULL (число прочтений - 11335 )
alexmyt
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 26. Мая 2006
Установить параметр запроса NULL
26. Мая 2006 :: 07:59
Печать  
Есть  задача заполнить таблицу SQL на основании справочника 1С (DBF).  Упрощенно конструкция выглядит примерно так:
Код
Выбрать все
Команда.Подготовить("INSERT INTO my_table (field1) VALUES (?)");
Команда.ПостроитьПараметры();

.....

   Команда.УстПараметр(1,Справочник1С.ПолеТипаДата);

..... 


В таблице SQL поле field1 имеет тип datetime. Проблема в том что некоторые поля в справочнике 1С не заполнены, т.е. имеют пустое значение. Соответственно при выполнении запроса выдается ошибка: [Microsoft][ODBC SQL Server Driver] Недопустимый формат времени

Подскажите, как можно установить параметр запроса NULL?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Установить параметр запроса NULL
Ответ #1 - 26. Мая 2006 :: 08:06
Печать  
Справка:
пустые значения типа Дата в реквизитах справочников и документов не NULL, а дата 01.01.1753
  

1&&2&&3
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Установить параметр запроса NULL
Ответ #2 - 26. Мая 2006 :: 08:10
Печать  
alexmyt писал(а) 26. Мая 2006 :: 07:59:
Есть  задача заполнить таблицу SQL на основании справочника 1С (DBF).  Упрощенно конструкция выглядит примерно так:
Код
Выбрать все
Команда.Подготовить("INSERT INTO my_table (field1) VALUES (?)");
Команда.ПостроитьПараметры();

.....

   Команда.УстПараметр(1,Справочник1С.ПолеТипаДата);

..... 


В таблице SQL поле field1 имеет тип datetime. Проблема в том что некоторые поля в справочнике 1С не заполнены, т.е. имеют пустое значение. Соответственно при выполнении запроса выдается ошибка: [Microsoft][ODBC SQL Server Driver] Недопустимый формат времени



Ну, может типа так:

set nocount on
DECLARE @param datetime
SET @param = cast(? as datetime)

....................................

Команда.УстПараметр(1,Формат(Справочник1С.ПолеТипаДата,"ДГГГГММДД"));



  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Установить параметр запроса NULL
Ответ #3 - 26. Мая 2006 :: 08:18
Печать  
Справка 2:
чтобы установить параметр запроса именно в NULL нужно вызвать так
УстПараметр(1,ПолучитьПустоеЗначение())
  

1&&2&&3
Наверх
 
IP записан
 
alexmyt
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 26. Мая 2006
Re: Установить параметр запроса NULL
Ответ #4 - 26. Мая 2006 :: 09:32
Печать  
trad писал(а) 26. Мая 2006 :: 08:18:
Справка 2:
чтобы установить параметр запроса именно в NULL нужно вызвать так
УстПараметр(1,ПолучитьПустоеЗначение())

Запрос выполняется без ошибок, но параметр не устанавливается - остается значение до вызова метода УстЗначение();
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Установить параметр запроса NULL
Ответ #5 - 26. Мая 2006 :: 10:15
Печать  
версия 1cpp ?
  

1&&2&&3
Наверх
 
IP записан
 
alexmyt
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 26. Мая 2006
Re: Установить параметр запроса NULL
Ответ #6 - 26. Мая 2006 :: 10:37
Печать  
1.8.1.6.fb02
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Установить параметр запроса NULL
Ответ #7 - 26. Мая 2006 :: 10:42
Печать  
такое поведение с пустым значением появилось, если не ошибаюсь, с 2020
это касается УстПараметр.

преобразование пустого значения в NULL в методе УстТекстовыйПараметр - было всегда
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать