|
|
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Друзья, подскажите кто знает. В проекте Access XP создал хранимую процедуру. Работает нормально в Query анализире показывает табличку с итогами, а когда запускаю ее из проекта, ввожу входные параметры пишет: Хранимая процедура выполнена успешно ни одной записи не возвращено, типа этого. В ХП использую табличную переменную DECLARE @Itog TABLE ( Kod varchar(60), SrDD1 float, SrVP1 float, SuVR1 float, SuVP1 float, Kol2 int) а в конце процедуры select Kod as Код, SrDD1 as [Средняя длина дня], SrVP1 as [Среднее время переработки], SuVR1 as [Суммарное время работы], SuVP1 as [Суммарнок время переработки], Kol2 as [Количество] from @Itog В чем может быть дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 11:47 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
set nocount on - первая строка процедуры set nocount off - перед результирующим запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 11:54 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
авторset nocount on - первая строка процедуры Это правильно авторset nocount off - перед результирующим запросом А это зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 11:56 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
я предполагаю для того чтобы результирующий набор данных после приема самих данных получил сообщение: NN rows affected и последующий запрос select @@ROWCOUNT возвращал правильное значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:03 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
авторя предполагаю для того чтобы результирующий набор данных после приема самих данных получил сообщение: NN rows affected и последующий запрос select @@ROWCOUNT возвращал правильное значение Понятно. Я меня такая ситуация практически никогда не возникала. Т.к. если и приходится анализировать @@ROWCOUNT, то только внутри одной процедуры после выполнения каких-либо запросов. А в большинстве случаев (когда процедура является источником формы или отчета) от выключения этой опции не тепло и не холодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:11 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
у меня есть смутное подозрение что глюк ADO c ожиданием сообщения row affected - как раз та ситуация, которую описывает автор может иметь нежелательные последствия в плане загрузки ресурсов системы и глюков. вот почему такая мысль: если получая такое сообщение он завершает прием данных то возможно если он не получит такого сообщения то и процесс получения данных так и останется в состоянии ожидания поступления новых записей пока не придет это сообщение. но это гипотеза и как проверить ее пока не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:18 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Ничего не выходит с set nocount on - первая строка процедуры set nocount off - перед результирующим запросом Я в этой процедуре использую курсоры, в результате заполняю эту табличку @Itog Но почему-то в квери анализире все видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:25 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Может это из-за табличной переменной??? Может использовать временные таблицы??? А не охото. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:28 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
2 АлексейК См. Гетца т.2 стр.203 2 Sasha09 А если вместо таблицы-переменной сделать временную таблицу #Itog? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:30 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
с табличными переменными проблем нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:31 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
к сожалению Геца у меня нет - процитируй если не сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:32 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
В чем же моя проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:32 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
текст хранимки полностью опубликуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:34 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
ALTER PROCEDURE dbo.sp_СуммСредВНУТР (@StartTime datetime, @EndTime datetime) AS set nocount on declare @i1 int, @n1 int --Рабочие переменные внешнего курсора declare @i2 int, @n2 int --Рабочие переменные внутреннего курсора declare @KodSotrudnik int declare @Date datetime, @Prihod datetime, @Uhod datetime, @KodSot int, @Date2 datetime, @VremaPrih datetime, @VremaUh datetime, @NewDate datetime, @Fam varchar(60), @Raznica float, @RaznicaGraf float --Временная таблица для соединения всех данных DECLARE @Itog TABLE (--Fam1 varchar(60), Kod varchar(60), SrDD1 float, SrVP1 float, SuVR1 float, SuVP1 float, Kol2 int) --Переменные дя хранения статистики declare @Fam2 varchar(60), @Kol2 int, @SrDD2 float, @SrVP2 float, @SuVR2 float, @SuVP2 float, @SuVRtoch float /*--------------------------------------------------------------------------------------------------*/ declare @CursorSotrudnik cursor --Внешний курсор п осотрудникам set @CursorSotrudnik=cursor local static for select Код_сотрудника from Сотрудники where Личный_код is not null open @CursorSotrudnik set @i1=1 set @n1=@@cursor_rows while @i1<=@n1 begin fetch absolute @i1 from @CursorSotrudnik into @KodSotrudnik declare @CursorStat cursor --Внешний курсор п осотрудникам set @CursorStat=cursor local static for select Дата, Приход, Уход, Код_сотрудника, Дата2, Время_прихода, Время_ухода, NewDate, Фамилия, Разница, Разница_график from wv_ДляКурсораВНУТР where (Код_сотрудника=@KodSotrudnik) and (Время_прихода is not null ) and (Время_ухода is not null ) and (Дата2 between @StartTime and @EndTime) set @Fam2='' set @Kol2=0 set @SrDD2=0 --Средняя длина дня set @SrVP2=0 --Среднее время переработки set @SuVR2=0 --Суммарное время работы set @SuVP2=0 --Суммарное время переработки set @SuVRtoch=0 --Суммарное время работы точное без округления 7 и 8 до 8 set @Raznica=0 open @CursorStat set @i2=1 set @n2=@@cursor_rows if exists(select * from wv_ДляКурсораВНУТР where (Код_сотрудника=@KodSotrudnik) and (Дата2 between @StartTime and @EndTime) ) begin while @i2<=@n2 begin fetch absolute @i2 from @CursorStat into @Date, @Prihod, @Uhod, @KodSot, @Date2, @VremaPrih, @VremaUh, @NewDate, @Fam, @Raznica, @RaznicaGraf /*Проверка сколько отработано в пятницу, если между 7 и 8 то ставим 8*/ if @Raznica is not null begin if @NewDate is not null begin if @Raznica between 7 and 8 begin set @SuVRtoch= @SuVRtoch+@Raznica set @Kol2=@Kol2+1 set @Raznica=8 set @SuVR2= @SuVR2+@Raznica set @SuVP2= @SuVP2+@RaznicaGraf end else begin set @SuVRtoch= @SuVRtoch+@Raznica set @Kol2=@Kol2+1 set @SuVR2= @SuVR2+@Raznica set @SuVP2= @SuVP2+@RaznicaGraf end end else begin set @SuVRtoch= @SuVRtoch+@Raznica set @Kol2=@Kol2+1 set @SuVR2= @SuVR2+@Raznica set @SuVP2= @SuVP2+@RaznicaGraf end end set @i2=@i2+1 end close @CursorStat deallocate @CursorStat set @SuVP2=@SuVR2-@SuVP2 set @SrDD2=@SuVRtoch/(@Kol2) set @SrVP2=@SuVP2/(@Kol2) insert into @Itog select @Fam, @SrDD2, @SrVP2, @SuVRtoch, @SuVP2, @Kol2 end --End if exists set @i1=@i1+1 end close @CursorSotrudnik deallocate @CursorSotrudnik set nocount on select Kod as Код, SrDD1 as [Средняя длина дня], SrVP1 as [Среднее время переработки], SuVR1 as [Суммарное время работы], SuVP1 as [Суммарнок время переработки], Kol2 as [Количество] from @Itog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:35 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
2 АлексейК Код: plaintext 1. 2. 3. 4. 5. 6. 7. 2 Sasha09 Никогда не работал с табличными переменными - т.к. делаю все совместимым с 7-й версией, а ней нет такого типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:54 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Попробовал с временными таблицами. Та же проблема :-(((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:03 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Жданов 8.5 -0.5 17.0 -1.0 2 Коровкин 10.083333333333334 1.0833333333333339 10.083333333333334 1.0833333333333339 1 Коваленко 8.0 -2.5 16.0 -5.0 2 Нелюбин 6.0 -3.0 12.0 -6.0 2 В QA получается так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:07 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
2 Sasha09 Посоветовали в соседнем форуме посмотреть, идентичен ли вызов процедуры из Аксеса и СКЛ сервера, посмотреть профайлером и сравнить строки вызова. Как передаются вот эти переменные (@StartTime datetime, @EndTime datetime) из Аксеса? В каком формате? На всякий случай: FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:10 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
В датах я уверен на 100%, 1000 раз делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:17 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Возможно по-детски, но пару раз сам накалывался: если не закрывать окно проекта, а изменения процедуры делать из QA то при вызове процедуры из окна проекта идет вызов старой версии. Если обновить окно базы данных в проекте (на вкладке запросов). Тогда вызов идет новой версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:22 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
1 задай дату фиксированную а не во входных параметрах и посмотри результат в QA и аксессе 2 сделай в качестве результирующей выборки dvtcnj cdjtq select 1 as one будет возвращен результат? ибо варианта 2 либо аксесс получает раньше срока сообщение о количестве строк либо результирующий набор при запросе из аксеса - пустой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:25 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Я уже без входных параметров и без условий по датам сделал. Не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:40 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
кстати то что результат не выводится в виде таблицы не означает что то же самое будет если ты назначишь хранимку источником формы отчета или рекордсета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 14:31 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
Прочитал обсуждение на соседнем форуме. Насчет не знают - это ты погарячился Нужно было сразу показывать как ты запускаешь процедуру и чего хочешь от нее получить. Начнем сначала: Есть у тебя процедура. Она возвращает набор записей. Чего ты хочешь с этими записями сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 14:35 |
|
||
|
Почему запрос не выдает ни одной записи?
|
|||
|---|---|---|---|
|
#18+
2 incold \r Он не показыват трассировку профайлера, не показывает, как именно вызывается процедура из аксеса...\r А нет, показывает:\r Me.RecordSource = "execute sp_СуммСредВНУТР \'01.01.2002\', \'" & VBA.Now & "\'"\r (тут).\r Когда ему говорят, что дыты можно попробовать по другому передать - не хочет слушать.\r Про присвоение рекордсету формы тоже мимо ушей всё...\r \r Зато, никто ничего не знает:)\r \r P.S. Так делать, как он делает с рекордсетом формы нельзя, да и Now я бы не так передавал в процедуру, а YYYYMMDD..... Да всё это ему уже говорили:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1680&tid=1676604]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 366ms |

| 0 / 0 |
