powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в строке ХП
17 сообщений из 17, страница 1 из 1
Ошибка в строке ХП
    #32642933
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите исправить, ругается на =
Код: plaintext
1.
case when ((otchet= 0 ) And (DateDiff hour,getdate,Pay_history.date_pay)> 120 )) then avrd=true else avrd=false
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32642939
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, ещё раз
Код: plaintext
1.
case when ((otchet= 0 ) And (DateDiff(hour,getdate,Pay_history.date_pay)> 120 )) then avrd=true else avrd=false
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643022
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
case when ((otchet=0) And (DateDiff(hour,getdate () ,Pay_history.date_pay)>120)) then avrd= 1 else avrd= 0 end
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643025
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparomecase when ((otchet=0) And (DateDiff(hour,getdate () ,Pay_history.date_pay)>120)) then avrd= 1 else avrd= 0 end

тьфу - сам запутался
avrd = case when ((otchet=0) And (DateDiff(hour,getdate () ,Pay_history.date_pay)>120)) then 1 else 0 end
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643037
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо уже исправил
Код: plaintext
1.
case when ((otchet= 0 ) And (DateDiff(hour,getdate(),Pay_history.date_pay)> 120 )) then  'true' else 'false' end as avrd, 
есть другой вопрос, почему такая ХП работает 10 сек
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
ALTER PROCEDURE dbo.ADV_report_otch
                      @id_pay int
AS
SET NOCOUNT ON
SELECT Base_plat.end_plat, Base_plat.Kurator, Base_plat.Nplat, Base_plat.Date_time, Base_plat.Who_pay, Base_plat.To_whom_pay, 
Base_plat.Document, Base_plat.Payment_form, Base_plat.Cost_center, Base_plat.Project, Base_plat.Phase, 
Base_plat.Account, Base_plat.Nomen, Base_plat.Sum, Base_plat.Currency, 
Base_plat.Prim, Base_plat.Declarant, Base_plat.Boss, Base_plat.Need_yes, Base_plat.Klass_corr_yes, Base_plat.Budget_yes, 
Base_plat.Doc_yes, Base_plat.Strategy_yes, Base_plat.Security_yes, Base_plat.OK, Plat.Plat, Etap.Etap, CFU.ЦФУ, CFO.CFO_name, 
Stati_sokr.Statya, Nomen.Nomenkl, Base_plat.Plat_vid, Base_plat.Otkl, Base_plat.Overdue, Base_plat.Kurr_OK, Base_plat.Opl_flag,
Base_plat.Opl_date, Base_plat.Ost_pay, Contract_main.N_contr, Nomenclator_job_and_st.Nom_code, Pay_history.Payed, 
Pay_history.Otchet, Pay_history.Vozvrat, Pay_history.RSCH_pay, OTVETSTVENNIE.Who_make_rep, Pay_history.Who_get, 
Pay_history.Nplat_CR, Pay_history.Date_pay,Pay_history.Npp, Pay_history.Sum_pay, Pay_history.Currency_pay, Base_plat.Contract_for_pay, Base_plat.Pay_type, 
Base_plat.Id_doc_contr, Base_plat.Type_doc_of_contr,case when ((otchet= 0 ) And (DateDiff(hour,getdate(),Pay_history.date_pay)> 120 )) then  'true' else 'false' end as avrd, 
ADV_Report.Id_pay, ADV_Report.Date_adv, ADV_Report.Type_N_doc_adv, 
ADV_Report.Describe_adv, ADV_Report.Sum_adv, ADV_Report.Curr_adv, ADV_Report.Date_time_add_adv, Stati_sokr.StatyaCod, 
ADV_Report.Curr_rate_adv, Base_plat.Budget_row
FROM (OTVETSTVENNIE RIGHT JOIN ((Nomenclator_job_and_st RIGHT JOIN (Contract_main RIGHT JOIN ((((Etap RIGHT JOIN
((Plat RIGHT JOIN Base_plat ON Plat.Pay_code = Base_plat.Who_pay) 
LEFT JOIN CFU ON Base_plat.Project = CFU.Новый_Код) ON Etap.Kod_et = Base_plat.Phase) 
LEFT JOIN CFO ON Base_plat.Cost_center = CFO.CFO_code) 
LEFT JOIN Nomen ON Base_plat.Nomen = Nomen.Npp) LEFT JOIN Stati_sokr ON Base_plat.Account = Stati_sokr.StatyaCod) 
ON Contract_main.ID_contr = Base_plat.Contract_for_pay) 
ON Nomenclator_job_and_st.Id_nom = Nomen.Nomenkl) RIGHT JOIN Pay_history ON Base_plat.Nplat = Pay_history.Nplat_CR) 
ON OTVETSTVENNIE.FIO = Pay_history.Who_get) RIGHT JOIN ADV_Report ON Pay_history.Npp = ADV_Report.Id_pay
WHERE ADV_Report.Id_pay=@Id_pay
order by base_plat.nplat
	RETURN 
а запрос в Аксе 1 сек.
Почему?
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643055
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Proga
Запрос в Аксе к данным на сервере одну секунду, а на самом сервере 10 секунд?
Никогда не поверю:)

Смотреть надо план запроса, где затык, но такое смешение джойнов и подзапросов....
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643060
план
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сервер когда - нибудь выключается?

скорее всего утсаревший план исполнения. перекомпилируй процедуру.
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643074
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит устаревший, я её(ХП) только что написал.
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643079
запуск
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ProgaЧто значит устаревший, я её(ХП) только что написал.
сделать два запуска.
после второго запуска время какое - тоже 10?
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643092
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал, Всё те же 10сек
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643095
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, ваще, эти 10 сек у тебя в QA получились или это ты около Акса с секундомером сидел?
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643111
вариант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значит, все-таки план РАЗНЫЙ.
скорее всего виноват параметр в Where - из-за него где-нибудь идет отказ от использования индексного поиска.
как вариант -замени "прямой" селект в процедуре на sp_executesql - должен бы приблизиться к QA
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643120
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 paparome: Вообще-то в QA есть секундомер.
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643138
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSSQL случаем не на том же компе, где и аксес?
И память, поди, автоматом?
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643155
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL server, на другой мощной машине, а что понимается под "память автоматом"
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643173
попробуй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй закомментировать строку
SET NOCOUNT ON
и
удери ордер бай

изменится ли время выполнения хранимой процедуры?


что там с индексами по base_plat.nplat и ADV_Report.Id_pay?
...
Рейтинг: 0 / 0
Ошибка в строке ХП
    #32643232
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проиндексировал поле ID_pay, всё летает, спасибо.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка в строке ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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