Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft Access |
![]() ![]() |
NickBell Member Откуда: Tbilisi Сообщений: 2852 |
В SQL создана хранимая процедура. Я хочу получить значение @patient_count в Access, только не нашла как это можно сделать.ALTER PROCEDURE [dbo].[proc_count_patients_visit] @date_1 Date, @date_2 Date, @patient_count int output AS SET NOCOUNT ON; select @patient_count = Count(id_patient_history) FROM patients_history WHERE momartvis_tarigi Between @date_1 And @date_2 return @patient_count GO Dim t As Integer Set dbsReport = CurrentDb Set qdf = dbsReport.QueryDefs("sproc_count_patients_visit") qdf.SQL = "EXEC proc_count_patients_visit @date_1='" & Format(Me.date_1, "yyyymmdd") & "', @date_2='" & Format(Me.date_2, "yyyymmdd") & "'" qdf.ReturnsRecords = True t = "@patient_count" ????? |
20 мар 17, 20:11 [20315478] Ответить | Цитировать Сообщить модератору |
guest_rusimport
Guest |
NickBell, посмотрите этот топик http://www.sql.ru/forum/206930/vozvrat-znacheniya-iz-hranimoy-procedury |
20 мар 17, 20:34 [20315535] Ответить | Цитировать Сообщить модератору |
NickBell Member Откуда: Tbilisi Сообщений: 2852 |
Нет, с Ado не пошло. Что с Dao не нашла примеров. |
20 мар 17, 22:20 [20315747] Ответить | Цитировать Сообщить модератору |
guest_rusimport
Guest |
NickBell, http://www.sql.ru/forum/439323/dao-vozvrat-znacheniya-iz-hp-v-msa97-kak |
20 мар 17, 22:32 [20315772] Ответить | Цитировать Сообщить модератору |
guest_rusimport
Guest |
[quot NickBell] попробуйте так Dim rst AS DAO.Recordset Dim t As Integer Set dbsReport = CurrentDb Set qdf = dbsReport.QueryDefs("sproc_count_patients_visit") qdf.SQL = "EXEC proc_count_patients_visit @date_1='" & Format(Me.date_1, "yyyymmdd") & "', @date_2='" & Format(Me.date_2, "yyyymmdd") & "'" qdf.ReturnsRecords = True set rst = qdf.OpenRecordset(dbOpenSnapshot) t=rst.Fields(0) |
20 мар 17, 22:47 [20315791] Ответить | Цитировать Сообщить модератору |
NickBell Member Откуда: Tbilisi Сообщений: 2852 |
guest_rusimport, Да, такой пример для Дао подошел. Большое спасибо за помощь. |
21 мар 17, 00:17 [20315910] Ответить | Цитировать Сообщить модератору |
NickBell Member Откуда: Tbilisi Сообщений: 2852 |
В хранимой процедуре для SQL заменила следующим образом: ALTER PROCEDURE [dbo].[proc_count_patients_visit] @date_1 Date, @date_2 Date AS SET NOCOUNT ON; select Count(id_patient_history) AS RETURN_VALUE FROM patients_history WHERE momartvis_tarigi Between @date_1 And @date_2 --------------- Private Sub cmd_count_visit_Click() Dim rst As DAO.Recordset Set dbsReport = CurrentDb Set qdf = dbsReport.QueryDefs("sproc_count_patients_visit") qdf.SQL = "EXEC proc_count_patients_visit @date_1='" & Format(Me.date_1, "yyyymmdd") & "', @date_2='" & Format(Me.date_2, "yyyymmdd") & "'" qdf.ReturnsRecords = True Set rst = qdf.OpenRecordset(dbOpenSnapshot) Me.count_visit = rst.Fields(0) End Sub |
||
21 мар 17, 08:55 [20316148] Ответить | Цитировать Сообщить модератору |
vladK Member Откуда: Харьков Сообщений: 817 |
Заменять процедуру не всегда есть возможность, поэтому для DAO делается так: 1)процедура остается как есть, она что то возвращает посредством RETURN 2)скрипт вызова процедуры, т.е. то что передается в свойство QueryDef.SQL переписывается так: SET NOCOUNT ON; DECLARE @retVal int; EXEC [dbo].[proc_count_patients_visit] @d1, @d2, @pOut SELECT @retVal; |
10 апр 17, 11:30 [20384296] Ответить | Цитировать Сообщить модератору |
vladK Member Откуда: Харьков Сообщений: 817 |
Поправка (это как раз и ключевой момент), третья строка д.б.:EXEC @retVal = [dbo].[proc_count_patients_visit] @d1, @d2, @pOut |
10 апр 17, 11:34 [20384316] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft Access | ![]() |