Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз... (число прочтений - 6600 )
gs22
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 11. Сентября 2007
ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
11. Сентября 2007 :: 05:17
Печать  
ОС - windows Server 2003 Enterprise Edition
MDAC - 2.8
1С - v7.7 SQL (7.70.025)
Версия 1С++ - 1.8.0.2
SQL - Microsoft SQL Server  2000 - 8.00.2040 (Intel X86)   May 13 2005 18:33:17         
     Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)


Таблица TEST1 -

CREATE TABLE [dbo].[TEST1] (
     [Код] [decimal](6, 0) NULL ,
     [Дат] [datetime] NULL
)


Код -

// ТЗ - таблица значений на форме.

ТЗ.НоваяКолонка("Код","Число",6,0,"Код"); 
ТЗ.НоваяКолонка("Дат","Дата",,,"Д"); 

//Добавляем строку в таблицу, дату оставляем незаполненной.
ТЗ.НоваяСтрока();

ТЗ.Код = 100;
//ТЗ.Дат = ТекущаяДата();
     

query="Insert into TEST1 (Код,Дат) values (  ?,  ? );"

ODBC = Создатьобъект("ODBCRecordset"); 

ODBC.Подготовить(query);

ODBC.ВыполнитьSQL_ИзТЗ(ТЗ); 
//При попытке выполнить - получаем сообщение о ошибке -

-  State 22007, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимый формат времени

Если в колонку ТЗ "Дат" занести любую дату - все нормально, записывает.

Как заставить его не обращать внимания на "пустые" даты в ТЗ?

Началось после переустановки сервера SQL - до этого стоял такой же, но SP2, теперь поставили SP4,
откатывать назад на SP2 не хочется...

----

Попытка выполнить этот же код но с 1С++ версии 2.0.3.3 приводит уже к другой ошибке  -
State 22018, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимое символьное значение для указания отклонения
и при этом уже не важно, заполнена колонка с датой или нет.

Куда копать, подскажите?  Нерешительный


     


  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #1 - 11. Сентября 2007 :: 07:48
Печать  
Попробуй ночную сборку 2.5.0.2
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #2 - 11. Сентября 2007 :: 07:52
Печать  
И еще касательно SP4 несоветовал бы.
потому как на нем по крайней мере у меня валилась 601 ошибка.
а на SP3 все ок.
  
Наверх
 
IP записан
 
gs22
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 11. Сентября 2007
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #3 - 11. Сентября 2007 :: 10:15
Печать  
поставил "ночную сборку"
с  ошибкой  которая была на версиях 2.5 и 2.0

- State 22018, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимое символьное значение для указания отклонения

справился путем указания параметров -
     ODBC.ДобПараметр(1,11,6,0);
     ODBC.ДобПараметр(1,10,10,0);

но вот "пустую" дату он так и не хочет записывать.
Поставил наново SQL Server - SP3 - на 2003 Server.
Выдает ошибку при попытке выполнить ODBC.ВыполнитьSQL_ИзТЗ(ТЗ);  
-  State 22007, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимый формат даты

У кого нибудь это вообще работает? В смысле - с "пустой" датой...
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #4 - 12. Сентября 2007 :: 09:53
Печать  
В данных ТЗ пустые даты надо заменить на даты 01.01.1753. ODBCRecordset не заточен на работу с пустым значением типа Дата.
  
Наверх
ICQ  
IP записан
 
gs22
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 11. Сентября 2007
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #5 - 12. Сентября 2007 :: 23:07
Печать  
Понятно... Жаль.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #6 - 13. Сентября 2007 :: 21:53
Печать  
Да какие траблы?
ТЗ.Заполнить('01.01.1753',,,Дат);
И понеслась ... по кочкам...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
gs22
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 5
Зарегистрирован: 11. Сентября 2007
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #7 - 13. Сентября 2007 :: 23:18
Печать  
Да никаких. Просто "лишнее телодвижение".  Улыбка
Вопрос возник при разборе "универсальной сохранялки" для ТЗ в SQL таблицы - коллега мой делал - разбираем структуру ТЗ, делаем аналогичную таблицу в базе - сохраняем ее туда... Потом "достаем", когда понадобится...
Похоже что вот это "раньше работало на СП2, а с установкой СП4 - перестало" - просто совпадение - раньше не попадались ТЗ с пустой датой...

Спасибо всем.  Уже переделал с учетом этой особенности ODBCRecordset'а.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #8 - 19. Сентября 2007 :: 07:56
Печать  
DmitrO писал(а) 12. Сентября 2007 :: 09:53:
В данных ТЗ пустые даты надо заменить на даты 01.01.1753. ODBCRecordset не заточен на работу с пустым значением типа Дата.

А как сделать, чтобы в ТП со скульным поставщиком данных вместо "01.01.53" выводилось пустая строка?
Что-то не соображу.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #9 - 19. Сентября 2007 :: 08:16
Печать  
vip писал(а) 19. Сентября 2007 :: 07:56:
DmitrO писал(а) 12. Сентября 2007 :: 09:53:
В данных ТЗ пустые даты надо заменить на даты 01.01.1753. ODBCRecordset не заточен на работу с пустым значением типа Дата.

А как сделать, чтобы в ТП со скульным поставщиком данных вместо "01.01.53" выводилось пустая строка?
Что-то не соображу.

Сам допер уже.
Код
Выбрать все
CASE WHEN $Док.МояДата = '01.01.1753' THEN NULL ELSE $Док.МояДата END as МояДата 

  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #10 - 19. Сентября 2007 :: 09:42
Печать  
vip писал(а) 19. Сентября 2007 :: 08:16:
Код
Выбрать все
CASE WHEN $Док.МояДата = '01.01.1753' THEN NULL ELSE $Док.МояДата END as МояДата 


или nullif($Док.МояДата, '17530101')
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: ВыполнитьSQL_ИзТЗ() - и "пустая" дата в тз...
Ответ #11 - 19. Сентября 2007 :: 09:49
Печать  
trad писал(а) 19. Сентября 2007 :: 09:42:
vip писал(а) 19. Сентября 2007 :: 08:16:
Код
Выбрать все
CASE WHEN $Док.МояДата = '01.01.1753' THEN NULL ELSE $Док.МояДата END as МояДата 


или nullif($Док.МояДата, '17530101')

О как. Не знал про nullif. Спасибо.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать