powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecourdSource in Access for SQL хранимой процедуры
4 сообщений из 4, страница 1 из 1
RecourdSource in Access for SQL хранимой процедуры
    #39388163
sql_access
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сервере существует хранимая процедура с именем "proc_selectpat"

Код: sql
1.
SELECT p.id_pat, p.birthday, p.address, p.phone, p.note FROM dbo.pat p



В Access хочу форме с источником присвоить вышеуказанный запрос. Какую еще команду добавить, чтобы источник формы получил значения?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Form_Load()
    Set cdb = CurrentDb
    Set qdf = cdb.CreateQueryDef("")
    qdf.Connect = "ODBC;" & _
            "Driver={SQL Server Native Client 11.0};" & _
            "Server=SQL;" & _
            "Database=PPPPPPP; UID=PPP; PWD=PPPPPPPP;" & _
            "Trusted_Connection=yes;"
    qdf.SQL = "EXEC proc_selectpat"
        
        Me.RecordSource = "??????????"
        
    qdf.ReturnsRecords = False
    qdf.Execute dbFailOnError
    Set qdf = Nothing
    Set cdb = Nothing
End Sub
...
Рейтинг: 0 / 0
RecourdSource in Access for SQL хранимой процедуры
    #39388339
sql_access
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хранимая процедура с именем "dbo.proc_selectpat"

Если же присвоить
Me.RecordSource = "EXEC dbo.proc_selectpat"

то тогда выдает ошибку
Run-time error ‘3129’
Invalid SQL statement; expected ‘DELETE’, ‘INSERT’, ‘PROCEDURE’, ‘SELECT’, or ‘UPDATE’.


А ведь по этой команде EXEC dbo.proc_selectpat должен выполниться запрос и там указан SELECT в процедуре?
Тогда в чем проблема, непонятно.
...
Рейтинг: 0 / 0
RecourdSource in Access for SQL хранимой процедуры
    #39388741
sql_access
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение проблемы здесь:

https://access-programmers.co.uk/forums/showthread.php?t=156864


1. Create you stored procedure in SQL e.g "sproc_MySproc"

2. Create a Pass-Through Query with this as the SQL. Save as "sproc_MySproc"

Code:
Код: sql
1.
EXEC sproc_MySproc


3. Use this function to set Recordsource of you Report/Form.

Code:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim qdf As QueryDef
Dim frm As Form
' Set database variable to current database.
Set dbsReport = CurrentDb
Set frm = Form_'YOUR FORM NAME' 
Open QueryDef object.
Set qdf = dbsReport.QueryDefs("sproc_MySproc")
Dim rstReport As DAO.Recordset
qdf.SQL = "EXEC sproc_mySproc " & 'YOUR PARAM HERE'
qdf.ReturnsRecords = True
 '  Open Recordset object.
Set rstReport = qdf.OpenRecordset()
rstReport.MoveFirst
Form_'YOUR FORM NAME' .RecordSource = "sproc_mySproc"
...
Рейтинг: 0 / 0
RecourdSource in Access for SQL хранимой процедуры
    #39388824
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно проще. Просто создаем в конструкторе pass-trough запрос с любыми параметрами, лишь бы работал (чтобы получить список полей), присваеваем так же в конструкторе формы этот запрос в качестве Recordsource, а затем при необходимости меняем текст запроса кодом через свойство SQL одной строчкой:
Код: vbnet
1.
CurrentDb.QueryDefs("sproc_MySproc").SQL="EXEC sproc_mySproc " & 'YOUR PARAM HERE'



Ну и Requery форме сделать
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / RecourdSource in Access for SQL хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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