powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему запрос не выдает ни одной записи?
25 сообщений из 36, страница 1 из 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
25 сообщений из 36, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему запрос не выдает ни одной записи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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