powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему запрос не выдает ни одной записи?
36 сообщений из 36, показаны все 2 страниц
Почему запрос не выдает ни одной записи?
    #32411589
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, подскажите кто знает.
В проекте 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
В чем может быть дело?
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411602
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
set nocount on - первая строка процедуры
set nocount off - перед результирующим запросом
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411608
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторset nocount on - первая строка процедуры
Это правильно

авторset nocount off - перед результирующим запросом
А это зачем?
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411623
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я предполагаю для того чтобы результирующий набор данных после приема самих данных получил сообщение:
NN rows affected и последующий запрос

select @@ROWCOUNT возвращал правильное значение
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411635
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя предполагаю для того чтобы результирующий набор данных после приема самих данных получил сообщение:
NN rows affected и последующий запрос

select @@ROWCOUNT возвращал правильное значение

Понятно.
Я меня такая ситуация практически никогда не возникала.
Т.к. если и приходится анализировать @@ROWCOUNT, то только внутри одной процедуры после выполнения каких-либо запросов.

А в большинстве случаев (когда процедура является источником формы или отчета) от выключения этой опции не тепло и не холодно.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411644
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня есть смутное подозрение что глюк ADO c ожиданием сообщения row affected - как раз та ситуация, которую описывает автор может иметь нежелательные последствия в плане загрузки ресурсов системы и глюков.

вот почему такая мысль:
если получая такое сообщение он завершает прием данных то возможно если он не получит такого сообщения то и процесс получения данных так и останется в состоянии ожидания поступления новых записей пока не придет это сообщение.

но это гипотеза и как проверить ее пока не знаю.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411663
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не выходит с
set nocount on - первая строка процедуры
set nocount off - перед результирующим запросом

Я в этой процедуре использую курсоры, в результате заполняю эту табличку @Itog

Но почему-то в квери анализире все видно.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411668
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может это из-за табличной переменной???
Может использовать временные таблицы??? А не охото.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411674
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК
См. Гетца т.2 стр.203

2 Sasha09
А если вместо таблицы-переменной сделать временную таблицу #Itog?
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411677
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с табличными переменными проблем нет
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411679
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к сожалению Геца у меня нет - процитируй если не сложно
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411680
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем же моя проблема?
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411688
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
текст хранимки полностью опубликуй
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411691
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411739
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейК

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...например если вы выполняете хп из окна базы данных, данные о
количестве строк, возвращенные сервером, в ходе ее выполнения, системы
использует для того, чтобы определить, вернула ли процедура какие-нибудь
данные. Это очень неудобно, поскольку первым выполняемым оператором хп
может быть совсем не тот, который возвращает обрабатываемые
записи...Метод Execute ADO Command возвращает кол-во записей,
обработанных хп. Для некоторых хп это значение может оказаться неверным
из-за того, что метод возвращает промежуточный, а не конечный результат...


2 Sasha09

Никогда не работал с табличными переменными - т.к. делаю все совместимым с 7-й версией, а ней нет такого типа.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411756
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал с временными таблицами. Та же проблема :-((((
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411765
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жданов 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 получается так.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411780
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Sasha09
Посоветовали в соседнем форуме посмотреть, идентичен ли вызов процедуры из Аксеса и СКЛ сервера, посмотреть профайлером и сравнить строки вызова.

Как передаются вот эти переменные (@StartTime datetime, @EndTime datetime) из Аксеса? В каком формате?
На всякий случай: FAQ
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411799
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В датах я уверен на 100%, 1000 раз делал.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411809
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно по-детски, но пару раз сам накалывался:

если не закрывать окно проекта, а изменения процедуры делать из QA
то при вызове процедуры из окна проекта идет вызов старой версии.
Если обновить окно базы данных в проекте (на вкладке запросов).
Тогда вызов идет новой версии.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411818
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 задай дату фиксированную а не во входных параметрах и посмотри результат
в QA и аксессе

2 сделай в качестве результирующей выборки dvtcnj cdjtq

select 1 as one

будет возвращен результат?

ибо варианта 2 либо аксесс получает раньше срока сообщение о количестве строк либо результирующий набор при запросе из аксеса - пустой
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32411873
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже без входных параметров и без условий по датам сделал. Не работает.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412015
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати то что результат не выводится в виде таблицы не означает что то же самое будет если ты назначишь хранимку источником формы отчета или рекордсета.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412029
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал обсуждение на соседнем форуме.
Насчет не знают - это ты погарячился

Нужно было сразу показывать как ты запускаешь процедуру и чего хочешь от нее получить.

Начнем сначала:
Есть у тебя процедура.
Она возвращает набор записей.
Чего ты хочешь с этими записями сделать?
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412049
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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..... Да всё это ему уже говорили:)
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412116
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я решил проблему. Я запускаю ХП, только использую в нейне табличную переменную, а временную таблицы. Почему-то в этой же процедуре нельзя сделать Select. Поэтому select я делаю из другой процедуры. И тогда все работает. Может это извращение, но хотябы что-то.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412143
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты так и не сказал чего хочешь сделать с набором записей.

Временную таблицу прекрасно можно вываливать из той же процедуры.
Думаю что и таблицу-переменную тоже
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412176
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выходет что нельзя. У меня получалась пустота. А нужно было, чтобы выводился набор записей на экран.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412220
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой ты упрямый
Говорю можно - просто ты делаешь что-то не так.

Еще раз:
ЧТО ТЕБЕ НУЖНО СДЕЛАТЬ С ЗАПИСЯМИ, КОТОРЫЕ ВОЗВРАЩАЕТ ХП
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412396
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто посмотреть. Хотя бы даже просто запустив ХП и посмотреть ответ ввиде таблички
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412425
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сбрось на мыло скрипты на создание таблиц, которые участвубт в процедуре и скрипт на саму процедуру.
А также по паре записей в таблицах, на основе которых процедура собирает данные.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412496
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лови
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32412721
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел, через 20 сек проблема обнаружилась.
Вот что значит приводить не полные результаты тестов - если бы сразу привел результат выполнения хп из QA в полном виде, тогда все решилось бы намного быстрее.

1. При выполнении процедуры из QA у тебя выводится предупреждение про обработку в агрегатных функциях пустых значений.
А для акесеса - это что-то вроде полученного значения.

Для подавления сообщения в начало процедуры добавляем
set ansi_warnings off

или во всех агрегатных функциях используем функцию Isnull()
например isnull(sum([поле]),0)

И в том и в другом варианте вызов процедуры через аксес прекрасно работает

2. Для временных таблиц внутри процедуры совсем не обязательно делать их глобальными (##tmp), да еще и заботится об их удалении перед созданием.
Достаточно использовать локальную (#tmp) она сама удаляется после завершения выполнения процедуры.

3. Таблицы-переменные не проверял, но скорее всего при выполнении п.1. должен заработать и этот вариант.
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32413009
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, Дружище, СПАСИБО ТЕБЕ ОГРОМНОЕ!!!
:)
Не знаю как и благодарить. :)
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32413021
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Sasha09

При выполнении процедуры из QA у тебя выводится предупреждение про обработку в агрегатных функциях пустых значений.

Вот к чему приводит замалчивание деталей. А говорили - все работает, все работает
...
Рейтинг: 0 / 0
Почему запрос не выдает ни одной записи?
    #32413036
Sasha09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кабы знать :-)
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему запрос не выдает ни одной записи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]