powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос к SQL серверу (oracle)
17 сообщений из 17, страница 1 из 1
Запрос к SQL серверу (oracle)
    #32136534
vpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vpv
Гость
Можно ли в запрос к SQL серверу передавать параметры? К примеру, мне нужно вытащить определенные данные из базы oracle, в зависимости от значения введенного в форме. Или может быть есть возможность определять такие запросы программным путем и перенаправлять их в форму? Я так и не смог найти вразумительных примеров на эту тему...:((
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136839
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программным путем у объекта Querydef есть свойство SQL которому можно назначить свой запрос. См. хелп к DAO.
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136865
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Надо будет создать подключение (Connection) ; создать объект Command. Заполняешь свойство CommandText и CommandType;заполни коллекцию Parametrs; cоздай на оcнове Command - ADODB.RecordSet
- Me.Recordset=ТвойРекордсет - теперь источник твоей формы твой оракловский запрос(процедура)

P.S. Может и DAO прокатит, но к SyBase подключался через ADO без каких-либо проблем.


P.S.
Строка подклюения к Ораклу:
"Provider=MSDAORA;Data Source=serverName;User ID=userName; Password=userPassword;"
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136879
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему рекордсет на основе комманд дает CursorType = ForwardOnly который ты шиш повесишь на форму, или я не прав?
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136911
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде ReadOnly, а оно не мешает.
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136916
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, LockType = ReadOnly он конечно не мешвет, a CursorType = ForwardOnly - на форму не повесишь, попробуй.
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136922
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так сделай рекордсет, установи у него все параметры какие тебе надо, прицепи к нему Command - и вперед rs.Open.
Так вроде и LockType нормальный выходит, и CursorType. Или я не прав?
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136930
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если рекордсет создан через Command.Execute, то получаешь только ForwardOnly, даже если установить другой тип, он все равно его изменит.
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136944
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не создавай через Execute

Еще раз
(только я не помню я как св-ва называются и методы, а до хелпа не добраться щас :)


Код: plaintext
1.
2.
3.
4.
Dim rs Фs Recordset
Set rs.Command = cmd 
rs.CursorType = keyset
rs.LockType = lockoptimistic
rs.Open


На выходе должны получить нормальный рекордсет (в отличие от forwardonly+readonly через cmd.Execute)
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136950
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня нет свойства Command у рекордсета?
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32136963
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ActiveCommand?
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32137285
vpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vpv
Гость
Всем спасибо...:)) попробую реализовать Ваши идеи.....
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32137383
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MVN:
>Если рекордсет создан через Command.Execute, то получаешь только ForwardOnly, даже если установить другой тип, он все равно его изменит.

Неверно.
Есть простой способ, к-ый позволяет получить рекодсет c rs.Supports(adMovePrevious)=True

Sub ADO_ComandExecute()

Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "Select * From [Журнал автозамены имен];"
cmd.CommandType = adCmdText

cmd.ActiveConnection.CursorLocation = adUseClient '<---вся фишка здесь. По умолчанию UseServer.

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly
Set rs = cmd.Execute
Debug.Print rs.Supports(adMovePrevious) 'Даст True
rs.MoveLast
rs.MovePrevious

'закрытие....
End Sub
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32137522
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрен там.
cmd.Execute создает новый рекордсет (со своими значениями по умолчанию), и ему абсолютно пофиг какие параметры были у того что ты создал (он просто убивается, если других ссылок на него нет)
Поэтому надо использовать не cmd.Execute, а привязывать cmd к рекордсету через rs.ActiveConnection
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32137541
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Хрен там.

Хрен здесь :-)
Ты бы проверил.
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32137658
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил.
Хрен и там, и здесь :)
ForwardOnly твоим способом убирается, а вот ReadOnly остается
Вот это кусок кода у тебя лишний:
Код: plaintext
1.
2.
3.
Set rs = New ADODB.Recordset 
rs.CursorLocation = adUseClient 
rs.CursorType = adOpenStatic 
rs.LockType = adLockReadOnly 

потому как рекордсет действительно создается новый.

А ForwardOnly убирается из-за
Код: plaintext
cmd.ActiveConnection.CursorLocation = adUseClient '<---вся фишка здесь. По умолчанию UseServer. 

Ну ты так и написал, что вся фишка здесь

Если присоединять cmd к рекордсету - то остаются все св-ва рекордсета, которые ты устанавливаешь. Только прицеплять не через ActiveCommand (как я написал раньше), а через Source.
...
Рейтинг: 0 / 0
Запрос к SQL серверу (oracle)
    #32137659
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я проверил, действительно так. Рекордсет получился adOpenStatic.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос к SQL серверу (oracle)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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