Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
но она же не универсальная(((((((((((
25 сен 12, 14:22    [13219028]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
неужели это так тяжело?
25 сен 12, 14:23    [13219031]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
ilik_121188,

это как понимать? поясните.
25 сен 12, 14:26    [13219062]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
ну надо чтоб с переменными работала..данных то будет много..а у вас там вводить надо цыфры....может куча будет данных
25 сен 12, 14:37    [13219139]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
(0,'20120629 12:30',0)
,(1,'20120629 12:30',1)
,(2,'20120629 13:30',0)
,(3,'20120629 14:30',0)
,(4,'20120629 15:30',1)
,(5,'20120629 16:30',1)
,(6,'20120629 17:30',1)
,(7,'20120629 18:30',0);

рассматривается вариант для этих чисел?
25 сен 12, 14:39    [13219160]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
londinium
Member

Откуда: Киев
Сообщений: 1176
ну надо чтоб с переменными работала..данных то будет много..а у вас там вводить надо цыфры....может куча будет данных
Вас уже третью страницу просят показать скрипт создания таблицы, заполнения ее тестовыми данными и для этих данных правильный ответ
25 сен 12, 14:42    [13219184]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
Glory
Member

Откуда:
Сообщений: 104760
ilik_121188
ну надо чтоб с переменными работала..данных то будет много..а у вас там вводить надо цыфры....может куча будет данных

И в чем проблема с этим у предложенного вам варианта решения ?
25 сен 12, 15:13    [13219444]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
(0,'20120629 12:30',0)
,(1,'20120629 12:30',1)
,(2,'20120629 13:30',0)
,(3,'20120629 14:30',0)
,(4,'20120629 15:30',1)
,(5,'20120629 16:30',1)
,(6,'20120629 17:30',1)
,(7,'20120629 18:30',0);

рассматривается вариант только для этих чисел? а у меня двигатель работает автоматически 1 работает 0 не работает и т.п...датчик посылает сигнал все обрабатывается автоматически
25 сен 12, 15:35    [13219620]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
помогите добавить условие

use [iliar_test]
go
DECLARE @Result smalldatetime
DECLARE @Start smalldatetime
DECLARE @Stop smalldatetime
DECLARE @time smalldatetime
DECLARE @time2 smalldatetime
DECLARE @value int
SET @time = ''
SET @time2 = ''
DECLARE cursor_checkArea CURSOR FOR
SELECT *
FROM tab1
OPEN cursor_checkArea
FETCH NEXT FROM cursor_checkArea
INTO @Result,
@Start,
@Stop,
@time,
@time2,
@value
WHILE( @@FETCH_STATUS = 0 )
BEGIN
IF
@value = 1
set @Start=@time
else
set @Stop=@time2
SET @Result=DATEDIFF(MI,@Stop,@Start)

else if


FETCH NEXT FROM cursor_checkArea
INTO @Result,
@Start,
@Stop,
@time,
@time2,
@value
END
CLOSE cursor_checkArea
DEALLOCATE cursor_checkArea
25 сен 12, 15:39    [13219651]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
Glory
Member

Откуда:
Сообщений: 104760
ilik_121188
рассматривается вариант только для этих чисел?

А для каких он должен рассматриваться в этом примере ?

ilik_121188
а у меня двигатель работает автоматически 1 работает 0 не работает и т.п...датчик посылает сигнал все обрабатывается автоматически

И какое это отношение имеет к скрипту.
Запрос работает с таблицей на сервере, а не с двигателем и датчиком.
25 сен 12, 15:40    [13219655]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
примерно накидал блок схему помогите

К сообщению приложен файл. Размер - 29Kb
25 сен 12, 15:56    [13219753]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
1й1
Guest
ilik_121188 тебе iap уже итак все сделал, нужно было только подставить имя твоей таблицы и сделать его рекомендацию по корректному набору данных, ниже скрипт с твоей БД и таблицей:

use [iliar_test]
go

SELECT
[From]=T.D
,[To]=(SELECT TT.D FROM @T TT WHERE TT.D>T.D AND TT.[State]=0 AND NOT EXISTS(SELECT * FROM tab1 TTT WHERE TTT.D>T.D AND TTT.D<TT.D AND TTT.[State]=0))
,[Period]=CONVERT(VARCHAR,(SELECT TT.D FROM tab1 TT WHERE TT.D>T.D AND TT.[State]=0 AND NOT EXISTS(SELECT * FROM tab1 TTT WHERE TTT.D>T.D AND TTT.D<TT.D AND TTT.[State]=0))-T.D,8)
FROM tab1 T
WHERE [State]=0 AND (SELECT TOP(1) TT.[State] FROM tab1 TT WHERE TT.ID<>T.ID AND TT.D>=T.D ORDER BY TT.D)=1;
25 сен 12, 15:56    [13219757]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
use [iliar_test]
go
DECLARE @Result smalldatetime
DECLARE @Start smalldatetime
DECLARE @Stop smalldatetime
DECLARE @time smalldatetime

DECLARE @time2 smalldatetime
DECLARE @value int
SET @time = ''
SET @time2 = ''
DECLARE cursor_checkArea CURSOR FOR
SELECT *
FROM tab1
OPEN cursor_checkArea
FETCH NEXT FROM cursor_checkArea
INTO @Result,
@Start,
@Stop,
@time,
@time2,
@value
WHILE( @@FETCH_STATUS = 0 )
BEGIN
IF
@value = 1
set @Start=@time
else
set @Stop=@time2
SET @Result=DATEDIFF(MI,@Stop,@Start)

else if


FETCH NEXT FROM cursor_checkArea
INTO @Result,
@Start,
@Stop,
@time,
@time2,
@value
END
CLOSE cursor_checkArea
DEALLOCATE cursor_checkArea

что тут поправить по блок схеме народ?помоги
25 сен 12, 15:58    [13219767]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
Glory
Member

Откуда:
Сообщений: 104760
ilik_121188
что тут поправить по блок схеме народ?помоги

Взять уже предложенный вариант и подставить туда имена своей таблицы и своих полей.
25 сен 12, 15:59    [13219779]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
спс большое люди а почему мой курсор не пашет?просто интересно не просто же я ломал голову несколько дней...
25 сен 12, 16:00    [13219788]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
чем вам мой курсор не мил?..надо добавить условия всего лишь((((что надо исправить в нем?
25 сен 12, 16:01    [13219797]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
Glory
Member

Откуда:
Сообщений: 104760
ilik_121188
а почему мой курсор не пашет?

Потому что пашет трактор или специальные животные.
А скрипт работает так, как вы его написали.
25 сен 12, 16:02    [13219811]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
1й1
Guest
ilik_121188
спс большое люди а почему мой курсор не пашет?просто интересно не просто же я ломал голову несколько дней...


ты бы еще текст ошибки привел, а то народу влом ванговать.
25 сен 12, 16:02    [13219820]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
таблица
id time value
1 10:30 1
2 11:30 1
3 12:30 1
4 13:30 0

ИСПРАВИЛ КУРСОР

use [iliar_test]
go
DECLARE @Result smalldatetime
DECLARE @Start smalldatetime
DECLARE @Stop smalldatetime
DECLARE @time smalldatetime
DECLARE @time2 smalldatetime
DECLARE @value int
DECLARE @dvig int
SET @time = ''
SET @time2 = ''
DECLARE cursor_checkArea CURSOR FOR
SELECT *
FROM tab1
OPEN cursor_checkArea
FETCH NEXT FROM cursor_checkArea
INTO @Result,
@Start,
@Stop,
@time,
@time2,
@value
WHILE( @@FETCH_STATUS = 0 )
BEGIN
IF
@value = 1 && @dvig=0
set @Start=@time
else
set @Stop=@time2
SET @Result=DATEDIFF(MI,@Stop,@Start)

else if


FETCH NEXT FROM cursor_checkArea
INTO @Result,
@Start,
@Stop,
@time,
@time2,
@value,
@dvig
END
CLOSE cursor_checkArea
DEALLOCATE cursor_checkArea

НЕ РАБОТАЕТ ПОМОГИТЕ ЛЮДИ КТО ВИДИТ ОШИБКУ....УСТАЛ УЖЕ СПАЧИБО БОЛЬШОЕ КТО НЕ ОСТАЛСЯ В СТОРОНЕ...ВСЕ САСИБО ЕСЛИ БЫ НЕ ВЫ Я...
25 сен 12, 19:01    [13221132]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
ilik_121188,

Сразу скажу, я не вдавался в смысл топика абсолютно. И не вижу смысла этого делать, т.к. вы игнорируете здравые предложения.
Поработаю синтаксическим корректором, просто потому что немного утомило наблюдать эту тему постоянно вверху обсуждаемых.
+ Это хотя бы парсится
DECLARE @Result smalldatetime;
DECLARE @Start smalldatetime;
DECLARE @Stop smalldatetime;
DECLARE @time smalldatetime;
DECLARE @time2 smalldatetime;
DECLARE @value int;
DECLARE @dvig int;
SET @time = '';
SET @time2 = '';

DECLARE cursor_checkArea CURSOR FOR
SELECT * FROM tab1;

OPEN cursor_checkArea;

FETCH NEXT FROM cursor_checkArea INTO @Result,@Start,@Stop,@time,@time2,@value;

WHILE @@FETCH_STATUS = 0 BEGIN

	IF @value = 1 and @dvig=0
		SET @Start = @time;
	ELSE
		SET @Stop = @time2;
		
	SET @Result = DATEDIFF(MI,@Stop,@Start);

	
	FETCH NEXT FROM cursor_checkArea INTO @Result,@Start,@Stop,@time,@time2,@value; --,@dvig; - wtf?
	
END;

CLOSE cursor_checkArea;
DEALLOCATE cursor_checkArea;


Пожалуйста, уважайте других участников форума:
- заключайте код запросов в тег src;
- не пишите капсом
- не пишите в каждом сообщении "помогите", вам и так уже три страницы помогают, причем действительно помогают, вникая в суть, а не как я;
- не надо столько разочарованных смайлов, почти в каждом сообщении, это не контактик, а проф.форум.

Ну и раз вы взялись писать код, разбираться что к чему, хотя бы базовые основы, придется, кол-во сообщений на форуме не приведет к желаемому результату. Кнопки "сделать зашибись" нет.

п.с.
удивляюсь, что тема до сих пор жива...
25 сен 12, 19:19    [13221201]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
londinium
Member

Откуда: Киев
Сообщений: 1176
@value = 1 && @dvig=0

зачем двойная &
else if

это к чему?

FETCH в начале не соответсвует FETCH'у в конце курсора
25 сен 12, 19:19    [13221204]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
всем спасибо работает но проблема в вычете дат SET @Result = DATEDIFF(MI,@Stop,@Start)...не получается получить разницу...закомментирую работает
ошибки
Msg 8115, Level 16, State 2, Line 27
Arithmetic overflow error converting expression to data type smalldatetime.
Msg 8115, Level 16, State 2, Line 27
Arithmetic overflow error converting expression to data type smalldatetime.
Msg 8115, Level 16, State 2, Line 27
Arithmetic overflow error converting expression to data type smalldatetime.
26 сен 12, 08:02    [13222652]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
помогите исправить цикл по блок схеме?работает не правильно....надо исправить цикл по блок схеме...плз...результат..никуда ни в какие рамки не лезит...время в Юникс по секундам....тип инт....судя по блок схеме цикл работает не правильно
26 сен 12, 09:14    [13222819]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89


К сообщению приложен файл. Размер - 9Kb
26 сен 12, 09:14    [13222823]     Ответить | Цитировать Сообщить модератору
 Re: курсор помогите  [new]
ilik_121188
Member

Откуда:
Сообщений: 89
хотя в таблице есть первая 1 потом 0 потом три 1...должна выдать по всем единицам а тут

К сообщению приложен файл. Размер - 16Kb
26 сен 12, 09:17    [13222830]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить