Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Хорошая идея? ;) (число прочтений - 3181 )
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Хорошая идея? ;)
01. Февраля 2008 :: 13:37
Печать  
     ТекстЗапроса = "
     |if object_id('dw') is not null
     |drop table dw
     |";
     
     RecordSet.ВыполнитьИнструкцию(ТекстЗапроса);
     
     RecordSet.ВыполнитьИнструкцию("create table dw (d tinyint, dsort tinyint, sdescr char(3), descr char(11))");
           
     RecordSet.ВыполнитьИнструкцию("insert into dw values (2, 1, 'Пнд', 'Понедельник')");      
     RecordSet.ВыполнитьИнструкцию("insert into dw values (3, 2, 'Втр', 'Вторник')");      
     RecordSet.ВыполнитьИнструкцию("insert into dw values (4, 3, 'Срд', 'Среда')");      
     RecordSet.ВыполнитьИнструкцию("insert into dw values (5, 4, 'Чтв', 'Четверг')");      
     RecordSet.ВыполнитьИнструкцию("insert into dw values (6, 5, 'Птн', 'Пятница')");      
     RecordSet.ВыполнитьИнструкцию("insert into dw values (7, 6, 'Сбт', 'Суббота')");      
     RecordSet.ВыполнитьИнструкцию("insert into dw values (1, 7, 'Вск', 'Воскресенье')");      
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #1 - 01. Февраля 2008 :: 13:39
Печать  
Ну с таким успехом можно и ф-ию в глобальнике сделать и не будет от формата ИБ зависеть.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #2 - 01. Февраля 2008 :: 13:43
Печать  
Я соединяюсь с ней при апдейте + соединяюсь для вывода инфы в отсортированном виде (т.к. воскресенье у буржуефф первым идет)

Код
Выбрать все
	Если Детализация = 1 Тогда
		ТекстЗапроса = "
		|update " + ВТ + "
		|set period = d
		|";

		RecordSet.ВыполнитьИнструкцию(ТекстЗапроса);
	ИначеЕсли Детализация = 2 Тогда
		ТекстЗапроса = "
		|update " + ВТ + "
		|set period = dw.sdescr
		|from " + ВТ + "
		|left join dw (nolock) on datepart(dw, ds) = dw.d
		|";

		RecordSet.ВыполнитьИнструкцию(ТекстЗапроса);
	Иначе
		ТекстЗапроса = "
		|update " + ВТ + "
		|set period = str(floor(hs/:ПериодВЧасах)*:ПериодВЧасах,2) + '-' + str((floor(hs/:ПериодВЧасах) + 1)*:ПериодВЧасах,2)
		|";

		RecordSet.УстановитьТекстовыйПараметр("ПериодВЧасах",	ПериодВЧасах);

		RecordSet.ВыполнитьИнструкцию(ТекстЗапроса);
	КонецЕсли;
 

  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #3 - 01. Февраля 2008 :: 13:46
Печать  
Цитата:
Я соединяюсь с ней при апдейте + соединяюсь для вывода инфы в отсортированном виде (т.к. воскресенье у буржуефф первым идет)

А чё, set language russian уже не модно?  Смех
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #4 - 01. Февраля 2008 :: 13:49
Печать  
Так поэтому сабж с вапроцам Улыбка
А как элегантно принято выкручиваться если нужно именно 'Пнд'?
По-моему фиг...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #5 - 01. Февраля 2008 :: 14:04
Печать  
Цитата:
А как элегантно принято выкручиваться если нужно именно 'Пнд'?
По-моему фиг...

А это само по себе элегантно?  Улыбка Таких сокращений даже в .spl нет. Хотя месяцы SQL Server сокращать умеет.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #6 - 01. Февраля 2008 :: 14:21
Печать  
Я не знаю, я тупой  Язык
Просто на диаграмме неготично выглядит
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #7 - 01. Февраля 2008 :: 18:01
Печать  
set datefirst 1
далее
datepart(dw, ds)
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #8 - 01. Февраля 2008 :: 19:30
Печать  
Сеньк, в понедельник попробую
Я то начал проверять в локалке - показывает пятницу а надо субботу
Исправил - на терминале стало неправильно Улыбка
В общем сделаю как надо и уберу один столбец...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Хорошая идея? ;)
Ответ #9 - 06. Февраля 2008 :: 04:49
Печать  
Я правильно понял, что требуется получить день недели строкой по дате?

Код
Выбрать все
Функция ДеньНеделиСтрокой()
	ТекстЗапроса = "
	|CREATE FUNCTION [ДеньНеделиСтрокой] (@Дата DateTime, @фКратко bit) Returns VarChar(15)
	|Begin
	| Declare @НомерДняНедели Int, @стрДеньНедели VarChar(15)
	|
	| Set @Дата = DateAdd(d, @@DATEFIRST - 1, @Дата)
	|
	| Set @НомерДняНедели = DATEPART(dw, @Дата)
	|
	| If @НомерДняНедели = 1
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'пн'
	| 	Else
	| 		Set @стрДеньНедели = 'понедельник'
	| Else If @НомерДняНедели = 2
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'вт'
	| 	Else
	| 		Set @стрДеньНедели = 'вторник'
	| Else If @НомерДняНедели = 3
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'ср'
	| 	Else
	| 		Set @стрДеньНедели = 'среда'
	| Else If @НомерДняНедели = 4
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'чт'
	| 	Else
	| 		Set @стрДеньНедели = 'четверг'
	| Else If @НомерДняНедели = 5
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'пт'
	| 	Else
	| 		Set @стрДеньНедели = 'пятница'
	| Else If @НомерДняНедели = 6
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'сб'
	| 	Else
	| 		Set @стрДеньНедели = 'суббота'
	| Else If @НомерДняНедели = 7
	| 	If @фКратко = 1
	| 		Set @стрДеньНедели = 'вс'
	| 	Else
	| 		Set @стрДеньНедели = 'воскресенье'
	|
	|	return @стрДеньНедели
	|End
	|";

	Возврат СоздатьФункцию("ДеньНеделиСтрокой", ТекстЗапроса);
КонецФункции

 

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


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Хорошая идея? ;)
Ответ #10 - 06. Февраля 2008 :: 04:51
Печать  
Z1 писал(а) 01. Февраля 2008 :: 18:01:
set datefirst 1
далее
datepart(dw, ds)


А если эта БД рассчитана, что у нее первый день - восресенье или вообще среда? А мы ей set datefirst 1. А ей в ответ как поплохеет...
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Хорошая идея? ;)
Ответ #11 - 07. Февраля 2008 :: 13:46
Печать  
Спасибо, Олег!
Вроде нормально у меня с датеферст прошло
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать