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


1C++ rocks!

Сообщений: 42
Зарегистрирован: 19. Апреля 2010
Создаю таблицу...
18. Августа 2010 :: 14:22
Печать  
Вот таким кодом    
ЗапросОтчета = СоздатьОбъект("ODBCRecordset");   
   
   
    ЗапросОтчета.Выполнить("drop table #Dat_");

    ТекстЗапроса = "
    |begin
    |create table #Dat_
    |     (
    |     dateB datetime not null,
    |     dateE datetime not null
    |     )
    |create unique index indx_dateb on #Dat_(dateB)
    |create unique index indx_datee on #Dat_(dateE)
    |end
    |";

    резз = ЗапросОтчета.Выполнить(ТекстЗапроса);
    Если резз = 0 Тогда
       Сообщить(ЗапросОтчета.ПолучитьОписаниеОшибки());
    КонецЕсли;


    ТекстЗапроса = "
    |declare @@dateB datetime
    |declare @@dateE datetime
    |
    |set @@dateB = cast('"+Формат(ДатаНач,"ДГГГГММДД")+"' as datetime)
    |set @@dateE = cast('"+Формат(ДатаКон,"ДГГГГММДД")+"' as datetime)
    |";


    ТекстЗапроса = ТекстЗапроса + "
    |while @@dateB<=@@dateE
    |begin
    |  insert into #Dat_
    |  select
    |     @@dateB   dateB,
    |     @@dateB   dateE
    |
    |  set @@dateB = dateadd(d,1,@@dateB)
    |end
    |";

    резз = ЗапросОтчета.Выполнить(ТекстЗапроса);
    Если резз = 0 Тогда
       Сообщить(ЗапросОтчета.ПолучитьОписаниеОшибки());
    КонецЕсли;   
ДатаНач = "01.01.08", ДатаКон = "31.12.08" а в таблице в итоге почемуто даты по 23.04.08. Что это может быть?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Создаю таблицу...
Ответ #1 - 18. Августа 2010 :: 14:55
Печать  
зачем два @@ по моему имена переменных должны быть с одним @
declare @dateB datetime

также надо включить
set nocount on

Скрипт
Код
Выбрать все
set nocount on
declare @dateB datetime
declare @dateE datetime

set @dateB = cast('20080101' as datetime)
set @dateE = cast('20081231' as datetime)
while @dateB<=@dateE
begin
   print @dateB
   set @dateB = dateadd(d,1,@dateB)
end 


у меня правильно отрабатывает в qa


Непонятно если вторая переменная не меняется то как ты ее можешь вставить в таблицу без нарушения ограничения уникального индекса.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Создаю таблицу...
Ответ #2 - 18. Августа 2010 :: 16:40
Печать  
V_K писал(а) 18. Августа 2010 :: 14:22:
Что это может быть?

ДатаНач = '01.01.08';
ДатаКон = '31.12.08';
  

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


1C++ rocks!

Сообщений: 42
Зарегистрирован: 19. Апреля 2010
Re: Создаю таблицу...
Ответ #3 - 19. Августа 2010 :: 05:33
Печать  
СПАСИБО. Заработал когда добавил
     |set nocount on
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать