powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
6 сообщений из 156, страница 7 из 7
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
    #32889545
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
Сейчас не скажу - 2000-го под рукой нету. Дома посмотрю, если трезвый буду. Но про .Refresh Гетц говорит, что в этом случае в 2000-м он работать не будет. Да и в 2002 не всегда работает, даже с установленным MDAC 2.8 и сервиспаками.
...
Рейтинг: 0 / 0
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
    #32889637
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ыСейчас не скажу - 2000-го под рукой нету. Дома посмотрю, если трезвый буду. Но про .Refresh Гетц говорит, что в этом случае в 2000-м он работать не будет. Да и в 2002 не всегда работает, даже с установленным MDAC 2.8 и сервиспаками.

ладно, если смогу и не забуду - тоже посмотрю дома...

до опыта - думаю, что у обоих фрагментов одинаковые шансы на успех.
(в первом то рефрешь скрытый есть - и он либо работает либо нет...)

<...тут что-то было размазано...>

надо бы сравнить поведение на соединениях, образованных не через Set
присвоение, а на новых:

Set cnn= New ADODB.Connection
'cnn.CursorLocation=adUseClient
cnn.ConnectionString=CurrentProject.Connection.ConnectionString
cnn.Open

With cmd
.CommandText = "ИмяПроцедуры"
.CommandType = adCmdStoredProc
Set .ActiveConnection = cnn
.Parameters.Refresh
For Each p In .Parameters
Debug.Print p.Name
Next
...
Рейтинг: 0 / 0
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
    #32889719
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вот еще о чем подумал
А2000 писался в расчете на MDAC2.5 + SQL7
в такой паре рефрешу жить тяжело, если вообще возможно -
имена параметров все равно деть некуда - ели и "освежит", имена придется переприсвоить...

очень может быть, что указанная особенность собственно к акцессу отношение имеет как луна к яичнице.
...
Рейтинг: 0 / 0
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
    #32890533
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Саныч - замечание снято (с выражением...)

----------------------------------------------

посмотрел на refresh
смотрел через
A2000 9.0.4402 SR1
VBA 6.3.8863 version 9108
MDAC 2.8
ADP
SQL2K SP3
стандартная ссылка на ADO 2.1

скелет кода

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Sub testCommand()
  Dim cNN As ADODB.Connection
  Dim tCommand As ADODB.Command
  Dim tRec As ADODB.Recordset
  
  Set cNN = CurrentProject.Connection
  
  Set tCommand = CreateObject("ADODB.Command") '
  With tCommand
    
    '.NamedParameters = True ' недоступно при установленных по умолчанию ссылках
   
    Debug.Print cNN.Version
    
    If StrComp(cNN.Version, "2.5") =  1  Then
      Debug.Print CallByName(tCommand, "NamedParameters", VbGet)
      Debug.Print CallByName(tCommand, "Dialect", VbGet) ' это должно откликаться начиная с 2.7
      'устанавливаем значение
      CallByName tCommand, "NamedParameters", VbLet, True '  должно работать с 2.6
     
    End If
    
    .CommandType = adCmdStoredProc
    .CommandText = "findPathForTLX"
    .ActiveConnection = cNN
    .Parameters.Refresh
    .Parameters("@dogID").Value =  102 
    
    Set tRec = .Execute()
  End With
  
  Debug.Print tRec.Fields( 1 ).Name, tRec.Collect("lastmessagenumber")
  tRec.Close
  Set tCommand.ActiveConnection = Nothing
  
  '{C8B521FB-5CF3-11CE-ADE5-00AA0044773D} DBGUID_DEFAULT  Provider-specific default behavior
  '{C8B522D7-5CF3-11CE-ADE5-00AA0044773D} DBGUID_SQL  Transact-SQL query
  '{5D531CB2-E6Ed-11D2-B252-00C04F681B71} DBGUID_MSSQLXML  XML template query
  '{EC2A4293-E898-11D2-B1B7-00C04F680C56} DBGUID_XPATH  XPath query

End Sub

результаты наблюдений
1) именованный параметр извлекается независимо от того, открыта
или закрыта строка кода
CallByName tCommand, "NamedParameters", VbLet, True
(документация по адо по существу требует установки этого параметра
для установки обращений по именам, - наверно лучше его установить - у меня
результат не зависел него )

2) не получилось увидеть зависимость от
.ActiveConnection = cNN
.ActiveConnection = CurrentProject.Connection
Set .ActiveConnection = что-нибудь. (тут ничего не утверждаю)

3) Если явный рефреш не заказан, то восстановление параметров происходит при первом обращении к параметру по имени или по номеру - это не важно.

4) на моей проце рефреш оказался практически вдвое дороже, чем ее исполнение
(1,1955 и 0,6201 по QueryPerformanceCounter ), а на первом исполнении - много дороже.

так что явное формирование параметров - хороший совет
(там была выборка единственной строки из джойна 5000х100 по индексированным полям, так что нагрузки нет)


5) рефреш исполняет sp_procedure_params_rowset


Пока склонен думать, что если с версией MDAC все в порядке И
в системных таблицах базы нет мусора И с master database тоже все в порядке, то как будто нет причин не работать рефрешу.






(с выражением лица)
...
Рейтинг: 0 / 0
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
    #32890852
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Victosha2 Саныч - как всегда, ОЧ.КАРАШО!!
Я не автор.
...
Рейтинг: 0 / 0
FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
    #32890978
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч Victosha2 Саныч - как всегда, ОЧ.КАРАШО!!
Я не автор.

скажем так - это общая оценка результата вообще, и того, что получилось из последних обсуждений в частности. В этой последней части от авторства формулировок, по крайней мере, не отнекаешся.
то есть - Ы (типа большой палец)
:))

про замечания

автор Set rs = .Execute(, , adExecuteNoRecords)
'adExecuteNoRecords - можно и не указывать, если в процедуре стоит Set NoCount ON

"по книжкам" - adExecuteNoRecords для того, чтобы Command возвращал
Nothing вместо Recordset - при этом это указание именно клиентской части
(АДО)
а
Set NoCount ON - указание SQL Server-у не гонять по сети
print-сообщений о количестве обработанных записей.
как указание/неуказание одного может влиять на другое?
...
Рейтинг: 0 / 0
6 сообщений из 156, страница 7 из 7
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ: Как избавиться от подтверждений на удаление и т.п., или что лучше DoCmd.Run
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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