|
|
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Можно ли в запрос к SQL серверу передавать параметры? К примеру, мне нужно вытащить определенные данные из базы oracle, в зависимости от значения введенного в форме. Или может быть есть возможность определять такие запросы программным путем и перенаправлять их в форму? Я так и не смог найти вразумительных примеров на эту тему...:(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 12:32 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
программным путем у объекта Querydef есть свойство SQL которому можно назначить свой запрос. См. хелп к DAO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 16:07 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
- Надо будет создать подключение (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;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 16:32 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
По моему рекордсет на основе комманд дает CursorType = ForwardOnly который ты шиш повесишь на форму, или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 16:45 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Вроде ReadOnly, а оно не мешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 17:12 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Не, LockType = ReadOnly он конечно не мешвет, a CursorType = ForwardOnly - на форму не повесишь, попробуй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 17:18 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Ну так сделай рекордсет, установи у него все параметры какие тебе надо, прицепи к нему Command - и вперед rs.Open. Так вроде и LockType нормальный выходит, и CursorType. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 17:21 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Если рекордсет создан через Command.Execute, то получаешь только ForwardOnly, даже если установить другой тип, он все равно его изменит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 17:44 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Так не создавай через Execute Еще раз (только я не помню я как св-ва называются и методы, а до хелпа не добраться щас :) Код: plaintext 1. 2. 3. 4. На выходе должны получить нормальный рекордсет (в отличие от forwardonly+readonly через cmd.Execute) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 17:54 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
У меня нет свойства Command у рекордсета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 17:57 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Может ActiveCommand? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2003, 18:04 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Всем спасибо...:)) попробую реализовать Ваши идеи..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2003, 10:56 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2003, 12:11 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Хрен там. cmd.Execute создает новый рекордсет (со своими значениями по умолчанию), и ему абсолютно пофиг какие параметры были у того что ты создал (он просто убивается, если других ссылок на него нет) Поэтому надо использовать не cmd.Execute, а привязывать cmd к рекордсету через rs.ActiveConnection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2003, 13:56 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
>Хрен там. Хрен здесь :-) Ты бы проверил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2003, 14:11 |
|
||
|
Запрос к SQL серверу (oracle)
|
|||
|---|---|---|---|
|
#18+
Проверил. Хрен и там, и здесь :) ForwardOnly твоим способом убирается, а вот ReadOnly остается Вот это кусок кода у тебя лишний: Код: plaintext 1. 2. 3. потому как рекордсет действительно создается новый. А ForwardOnly убирается из-за Код: plaintext Ну ты так и написал, что вся фишка здесь Если присоединять cmd к рекордсету - то остаются все св-ва рекордсета, которые ты устанавливаешь. Только прицеплять не через ActiveCommand (как я написал раньше), а через Source. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2003, 15:25 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32136944&tid=1681850]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 342ms |

| 0 / 0 |
