Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Код VB Access 2000 для получения результатов Strored Procedure
|
|||
|---|---|---|---|
|
#18+
Помогите с кодом по VB Access 2000 ( недостаточно опыта и документации) для получения результатов работы SP в форме ввода : Alter PROCEDURE имяПроц @iz int , @sk int , @k Numeric OUTPUT AS SELECT @k=... Return Код VB : Dim k As Double, rs As New ADODB.Recordset Dim Cn As New ADODB.Connection, Cmd As New ADODB.Command Dim prm1, prm2, prm3 As New ADODB.Parameter Cn.Open "DSN=DSN", "PUBS" Set Cmd.ActiveConnection = Cn Cmd.CommandText = "имяПроц" Cmd.CommandType = adCmdStoredProc Cmd.Prepared = True Set prm1 = Cmd.CreateParameter("iz", adInteger, adParamInput, , 1) Cmd.Parameters.Append prm1 Set prm2 = Cmd.CreateParameter("sk", adInteger, adParamInput, , 1) Cmd.Parameters.Append prm2 Set prm3 = Cmd.CreateParameter("kol", adDecimal, adParamOutput, , 0) Cmd.Parameters.Append prm3 Set rs = Cmd.Execute Вызывает сообщение [Microsoft][ODBC SQL Server Driver]Недопустимое значение масштаба Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2001, 14:46 |
|
||
|
Код VB Access 2000 для получения результатов Strored Procedure
|
|||
|---|---|---|---|
|
#18+
Не Double а Currency, и не Set rs = Cmd.Execute а просто Cmd.Execute Кроме того (но это уже к ошибке не относится): а зачем ты юзаеш OLE DB провайдера для ODBC? или у тебя не MSSQL? Если MS, то используй SQLOLEDB (Connection Object в BOL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2001, 15:30 |
|
||
|
Код VB Access 2000 для получения результатов Strored Procedure
|
|||
|---|---|---|---|
|
#18+
Зайди сюда: http://nsa.chat.ru/know.html и пролистай до фразы "... для того, чтобы в проекте Access-2000 программно запустить хранимую процедуру с параметрами..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2001, 15:57 |
|
||
|
Код VB Access 2000 для получения результатов Strored Procedure
|
|||
|---|---|---|---|
|
#18+
Ну вот, дома за бутылочкой пивка собрал твой пример: Dim cn As New ADODB.Connection, cmd As New ADODB.Command cn.Open "Provider=sqloledb;Data Source=YourServerName;Initial Catalog=Pubs;User Id=sa;Password=;" Set cmd.ActiveConnection = cn cmd.CommandText = "имяПроц" cmd.CommandType = adCmdStoredProc cmd.Parameters.Append cmd.CreateParameter("@iz", adInteger, adParamInput, , 1) cmd.Parameters.Append cmd.CreateParameter("@iz", adInteger, adParamInput, , 1) cmd.Parameters.Append cmd.CreateParameter("@sk", adNumeric, adParamOutput) cmd.Prepared = False cmd.Execute MsgBox cmd.Parameters("@sk") Set cmd = Nothing cn.Close Set cn = Nothing Установка Prepared в False заставляет сервер не делать SqlPrepare, что экономит время. Можно вообще не добавлять параметры, а сказать cmd.Parameters.Refresh, и коллекция заполнится сама, нужно будет лишь указать значения входных параметров. Но это требует от сервера поиска и возврата атрибутов параметров, следовательно и замедляет выполнение и нагружает сервер, а потому неправильно (в профайлере хорошо видно чего это стоит!). Можно делать как предлагает Garya, но это тоже неправильно, так как при adCmdText выполнение процедуры будет идти через ExecuteSQL, что в данном случае совершенно не нужно и также по напрасну расходует ресурсы сервера и замедляет выполнение. При первом вызове ExecuteSQL строит план выполнения запроса (при последующих вызовах если в кэше сохранится план выполнения, он будет использован ExecuteSQL повторно). Но так как план выполнения процедуры хранится вместе с ней, ExecuteSQL вообще не нужен. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2001, 19:07 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3577&tid=1826803]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 354ms |

| 0 / 0 |
