Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Табличное поле: обрывается текст запроса (число прочтений - 4942 )
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Табличное поле: обрывается текст запроса
21. Июля 2008 :: 14:01
Печать  
Поставщик - ODBCDataProvider.MSSQL
Периодически табличное поле заполняется с ошибкой

Код
Выбрать все
Server: Msg 170, Level 15, State 1, Line N
Line N: Incorrect syntax near 'by'.  



Смотрю профайлер - запрос выполняется столько раз - сколько столбцов в табличном поле
причем запрос обрывается на "order by" до тех пор, пока в запросе не появятся все объявленные столбцы

Что я делаю не так?  

Код
Выбрать все
ТекстЗапроса = "
|select
|	case when j.closed & 0x1 = 1 then 1 when j.ismark = 1 then 6 else 0 end as Пиктограмма
|	, j.date_time_iddoc as [date_time_iddoc]
|	, j.iddoc as [Док$Документ.Договор]
|	, j.docno as [НомерДок$Строка]
|	, left(j.date_time_iddoc, 8) as [Дата$Дата]
|	, case $д.Статус when 1 then 'На визировании' when 2 then 'Подписан' end as [Статус$Строка]
|	, $д.ВизаПросрочена as [ВизаПросрочена$Число]
|	, $д.НомерДоговора as [НомерДоговора$Строка]
|	, $д.Контрагент as [Контрагент$Справочник.Контрагенты]
|	, dbo.фн_ПолучитьПодписанта(j.iddoc) as [Подписант$Справочник.Пользователи]
|	, j.$ОбщийРеквизит.Фирма as [Фирма$Справочник.Фирмы]
|	, j.$ОбщийРеквизит.Автор as [Автор$Справочник.Пользователи]
|from
|	_1sjourn j (nolock, index = ACDATETIME)
|	inner join $Документ.Договор д (nolock) on д.iddoc = j.iddoc
|where
|	(j.date_time_iddoc between '20080101' and '20090101')
|";

ТабПоле.ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);

Поля = ТабПоле.ПоставщикДанных.Поля;
Поля.Добавить("Пиктограмма");
Поля.Добавить(date_time_iddoc);
Поля.Добавить(Док);
Поля.Добавить(НомерДок);
Поля.Добавить(Дата);
Поля.Добавить(Статус);
Поля.Добавить(ВизаПросрочена);
Поля.Добавить(НомерДоговора);
Поля.Добавить(Контрагент);
Поля.Добавить(Подписант);
Поля.Добавить(Фирма);
Поля.Добавить(Автор);

ТабПоле.ПоставщикДанных.УстКлючПорядка("date_time_iddoc");
ТабПоле.ПоставщикДанных.Обновить(); 

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Табличное поле: обрывается текст запроса
Ответ #1 - 21. Июля 2008 :: 14:44
Печать  
Источник.УстТекстЗапроса(ТекстЗапроса);
Источник.УстКлючПорядка(КлючПорядка);
Источник.УстИдПоле(ИдПоле);
ТабличноеПоле.ПоставщикДанных = Источник;

сделай порядок таким
  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: Табличное поле: обрывается текст запроса
Ответ #2 - 21. Июля 2008 :: 15:18
Печать  
Код
Выбрать все
	Источник = ТабПоле.ПоставщикДанных;
	Источник.УстТекстЗапроса(ТекстЗапроса);
	Источник.УстКлючПорядка(ТабПоле_Ключ);
	Источник.УстИдПоле("date_time_iddoc");
	Поля = Источник.Поля;
	Поля.Добавить("Пиктограмма");
...
	ТабПоле.ПоставщикДанных = Источник;  



да, текст запроса не обрезатся
но не получилось избавиться от повторения запроса:
Код
Выбрать все
exec sp_executesql N'
select top 24
j.date_time_iddoc as date_time_iddoc
from _1sjourn j (nolock, index = ACDATETIME)
	inner join dh69 д (nolock) on д.iddoc = j.iddoc
where (j.date_time_iddoc > @OKParam_0) and ((j.date_time_iddoc between ''20080101'' and ''20090101'')
order by j.date_time_iddoc
', N'@OKParam_0 char(23)', '200802138FEPLC     S   ' 


Код
Выбрать все
exec sp_executesql N'
select top 24
j.date_time_iddoc as date_time_iddoc,
case when j.closed & 0x1 = 1 then 1 when j.ismark = 1 then 6 else 0 end as Пиктограмма
from _1sjourn j (nolock, index = ACDATETIME)
	inner join dh69 д (nolock) on д.iddoc = j.iddoc
where (j.date_time_iddoc > @OKParam_0) and ((j.date_time_iddoc between ''20080101'' and ''20090101'')
order by j.date_time_iddoc
', N'@OKParam_0 char(23)', '200802138FEPLC     S   ' 


...
и так до тех пор, пока не соберутся все колонки запроса
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Табличное поле: обрывается текст запроса
Ответ #3 - 21. Июля 2008 :: 15:25
Печать  
Покажи полный код подключения ТП (текста запроса можно опустить)
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Табличное поле: обрывается текст запроса
Ответ #4 - 21. Июля 2008 :: 15:36
Печать  
gls

Добавляй колонки в ТП до подключения поставщика.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Табличное поле: обрывается текст запроса
Ответ #5 - 21. Июля 2008 :: 15:43
Печать  
kms писал(а) 21. Июля 2008 :: 15:36:
gls

Добавляй колонки в ТП до подключения поставщика.

Миш, может прикрепить сверху топик как правильно запустить ТП?
Вопросов меньше будет
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Табличное поле: обрывается текст запроса
Ответ #6 - 21. Июля 2008 :: 15:50
Печать  
Да надо бы, наверное.
Однако терзают сомненья - не лишим ли мы этим людей радости творческого поиска?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Табличное поле: обрывается текст запроса
Ответ #7 - 21. Июля 2008 :: 16:13
Печать  
kms писал(а) 21. Июля 2008 :: 15:50:
Да надо бы, наверное.
Однако терзают сомненья - не лишим ли мы этим людей радости творческого поиска?

Улыбка
  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: Табличное поле: обрывается текст запроса
Ответ #8 - 21. Июля 2008 :: 16:24
Печать  
Цитата:
Покажи полный код подключения ТП (текста запроса можно опустить)

Цитата:
Добавляй колонки в ТП до подключения поставщика.


Код
Выбрать все
ТабПоле.ПоставщикДанных = СоздатьОбъект("ODBCDataProvider.MSSQL");
ТабПоле.ПоставщикДанных.БазаДанных =  СоздатьОбъект("ODBCDataBase");
Колонка = ТабПоле.Колонки;
... описание колонок...

ТекстЗапроса = ""
Источник = ТабПоле.ПоставщикДанных;
Поля  = Источник.Поля;
Поля.Добавить(...);
Источник.УстТекстЗапроса(ТекстЗапроса);
Источник.УстКлючПорядка();
Источник.УстИдПоля();
ТабПоле.ПоставщикДанных = Источник;
ТабПоле.ПоставщикДанных.Обновить(); 



теперь запрос со всеми колонками выполняется N раз, где N =  кол-ву колонок
хотелось бы избавиться еще и от дублирования  Улыбка
  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: Табличное поле: обрывается текст запроса
Ответ #9 - 21. Июля 2008 :: 16:27
Печать  
Arta писал(а) 21. Июля 2008 :: 16:13:
kms писал(а) 21. Июля 2008 :: 15:50:
Да надо бы, наверное.
Однако терзают сомненья - не лишим ли мы этим людей радости творческого поиска?

Улыбка

топик нужен!
а возможности для творческого поиска мы найдем  Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Табличное поле: обрывается текст запроса
Ответ #10 - 21. Июля 2008 :: 16:36
Печать  
gls писал(а) 21. Июля 2008 :: 16:27:
топик нужен!
а возможности для творческого поиска мы найдем  Улыбка

Ну, считай что уже нашел.
Читай еще раз (внимательно) http://www.1cpp.ru/forum/YaBB.pl?num=1216648889/1#1 (хинт: при добавлении колонок поставщик должен быть отключен).
Когда все получится, формулируй правильную схему, и мы ее вывесим на витрине.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Табличное поле: обрывается текст запроса
Ответ #11 - 21. Июля 2008 :: 16:54
Печать  
Короче, не надо делать
Код
Выбрать все
ТабПоле.ПоставщикДанных = СоздатьОбъект("ODBCDataProvider.MSSQL");
 



Делай
Код
Выбрать все
Источник = СоздатьОбъект("ODBCDataProvider.MSSQL");
 


Потом добавляешь колонки, ставишь текст запроса и ключ порядка поставщику

И только потом делаешь
Код
Выбрать все
ТабПоле.ПоставщикДанных = Источник;
 


  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Табличное поле: обрывается текст запроса
Ответ #12 - 21. Июля 2008 :: 17:15
Печать  
kms писал(а) 21. Июля 2008 :: 16:54:
Короче, не надо делать

Не выдержала душа поэта Улыбка
  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: Табличное поле: обрывается текст запроса
Ответ #13 - 21. Июля 2008 :: 17:36
Печать  
спасибо. теперь все ок.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Табличное поле: обрывается текст запроса
Ответ #14 - 21. Июля 2008 :: 18:16
Печать  
Arta писал(а) 21. Июля 2008 :: 17:15:
kms писал(а) 21. Июля 2008 :: 16:54:
Короче, не надо делать

Не выдержала душа поэта Улыбка

Не вынесла. Улыбка

gls писал(а) 21. Июля 2008 :: 17:36:
спасибо. теперь все ок.

Эээмм. Неужто памятку для новобранцев не напишешь?
Тебе легче, по горячим следам-то Подмигивание
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать