powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
18 сообщений из 18, страница 1 из 1
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32201888
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени!

Необходимо по максимуму быстро создать временную табличку (три числовых поля и одно логическое), при этом тестирование на скорость выполнения показало:
DoCmd.CopyObject '=(90 мс)
DAO.CreateTableDef (со всем необходимым кодом) '=(60 мс)
ADO.Execute "CREATE TABLE..." '=(25 мс)
ADO.Execute "CREATE TABLE...", , adAsyncExecute '=(15 мс)
ADO.Execute "CREATE TABLE...", , adAsyncExecute + adExecuteNoRecords '=(5 мс)!!!
Но, млин, эта падл%ка в варианте последнего кода создает таблицу (правельную таблицу, корректную) и... валит акс (программа выполнила недопустимую оп и будет закр)... Вроде же данные параметры (adAsyncExecute и adExecuteNoRecords) - битовые велечины, являющиеся флагами, которые могут совмещаться...

Собстна вопрос: так и должно быть?
И просьба... Если кому не лениво, можете протестировать на своих машинах ниже приведенную строку кода... Акс падает у всех или тока у меня (Win98, А2000+SP, mdb)?

CurrentProject.Connection.Execute "CREATE TABLE Temp12345 (id long CONSTRAINT primkey PRIMARY KEY, s bit, ss long, os long)", , adAsyncExecute + adExecuteNoRecords
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32201898
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин... Перечитал и у самого сложилось впечатление, будто я не понимаю, что таблица быстрее в асинхронном режиме не создается, а просто управление быстрее возвращается... Но мне это и нужно. Собственно просьба протестировать строку и высказать мнение... А?
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32201900
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W2k Prof+SP, Office XP+SP - таже ошибка и Акс отваливается
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32201908
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Акес сдох.
Несколько хороших слов о внезапно почившем:
- 2000 +SP3
- mdb
- MDAK 2.6

Правда, если сделать через отдельный конектион - то все будет ОК
гдe cnn объявлена на уровне модуля

Set cnn = CurrentProject.Connection
cnn.Execute "CREATE TABLE Temp12345 (id long CONSTRAINT primkey PRIMARY KEY, s bit, ss long, os long)", , adAsyncExecute + adExecuteNoRecords

Если же cnn объявить на уровне процедуры - то опять падает с той же ошибкой.
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32201949
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Win2000prof + sp2
Access XP (без сервиспака??? позор мне)
adp
mdac 2.7

Ашипк есть. Таблица создается (если синтаксис поменять канешна).
Вынесение в отдельный конекшн не помогает.

те же яйца но mdb
Ашипк есть. Таблица создается.
Вынесение в отдельный конекшн не помогает.

Вопрос к Сенину Виктору. Что я делаю не так? В плане вынесения в отдельный объект на уровне модуля?
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32201987
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вопрос к Сенину Виктору. Что я делаю не так? В плане вынесения в отдельный объект на уровне модуля?

вот уж не знаю :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim cnn as Adodb.connection

Private sub pizdecAccessu ()
Set cnn = CurrentProject.Connection 

cnn.Execute  "CREATE TABLE Temp12345 (id long CONSTRAINT primkey PRIMARY KEY, s bit, ss long, os long)" , , adAsyncExecute + adExecuteNoRecords 

end sub


И так все нормально (если идти в по-шаговом режиме- если по F5 - каюк)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub pizdecAccessu()
Dim cnn As ADODB.Connection
Set cnn = CurrentProject.Connection
cnn.Execute  "CREATE TABLE Temp1 (id long CONSTRAINT primkey PRIMARY KEY, s bit, ss long, os long)" , , adAsyncExecute + adExecuteNoRecords

cnn.Close
Set cnn = Nothing
End Sub


Пробовал делать
Do while cnn.state<>1
doevents
loop

Не помогло - вываливается в ошибку
Так что работает (у меня) только первый вариант :(


З.Ы.
на Adp попробовать сейчас не могу - ставлю VS.Net/MSDN/Visio - сижу уже 2-ой час :(
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202093
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктор, вот спасибо! Действительно лично у меня при объявленном на уровне модуля коннекте всё работает тип-топ с означенной же скоростью в 4-6 мс (на моем тормозе :)
Лох!!! Эта, слушай, у тебя все еще валится? И чё там на счет исправления синтаксиса было? (запрос - тестовый, потом конечно будет цивильно переписан)...
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202098
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
млин... Забыл о самом главном :(
Всем спасибо за отклик!!! //Лоха это не касается, пока не отпостит мол валится или не валится
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202122
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вы издеваетесь надо мной
Теперь оба варианта работают
На фиг на фиг
Я испугался и убежал

2 Нуф
Синтаксис - long на int заменил
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202132
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отмазался... :)
Лох, тебе тоже тогда спасибо :)
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202148
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2All
Проблема-в adAsyncExecute
запрос исполняется асинхронно -поэтому когда после
cnn.execute идет cnn.close вываливается ошибка(запрос не успевает отработать )
тоже самое происходит когда cnn обьявлен локально
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202154
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мля... Значит это и не глюк совсем...
VIG, биг респект за пояснение... Буду в дальнейшем обязательно иметь в виду данное замечание на счет асинхронного выполнения...
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202164
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, VIG, это все же глюк, ибо при одном параметре (либо adAsyncExecute либо adExecuteNoRecords ) - все ОК! Так что...
Или чего-то не догоняю?
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202183
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG
>запрос исполняется асинхронно ...(запрос не успевает отработать )

Да уж - чему только не начишся в форуме "Просто треп по акесу"
Хотя если вспомнить справку - то там явно говориться (вернее, показывается на примерах) что надо описывать переменные на именно уровне модуля.


Рабочий вариант (только конкретно здесь в нем смысла нет)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub pizdecAccessu()
    Dim cnn                        As ADODB.Connection
    Set cnn = CurrentProject.Connection

    Do While cnn.state <> adStateOpen
        DoEvents
    Loop
    cnn.Execute  "CREATE TABLE Temp15 (id long CONSTRAINT primkey PRIMARY KEY, s bit, ss int, os long)" , , adAsyncExecute + adExecuteNoRecords

    Do While cnn.state <>  1 
        DoEvents
    Loop

End Sub
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202210
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Victor
Imho правильнее будет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub pizdecAccessu() 'Poor Access
    Dim cnn                        As ADODB.Connection
    Set cnn = CurrentProject.Connection

    Do While cnn.state <> adStateOpen
        DoEvents
    Loop
    cnn.Execute  "CREATE TABLE Temp15 (id long CONSTRAINT primkey PRIMARY KEY, s bit, ss int, os long)" , , adAsyncExecute + adExecuteNoRecords

    Do While cnn.state =adStateExecuting
        DoEvents
    Loop

End Sub
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202227
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG

Теперь ты лопухнулся

Код: plaintext
1.
  Do While cnn.state =adStateExecuting


Ибо в данном случае cnn.state = 5 (=adStateExecuting+adStateOpen=4+1)
Сразу после выполнения cnn.state станет равным 1 (adStateOpen)
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202240
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле, adStateExecuting=4 и поэтому пример работаь не будет.
<>1 (adStateOpen) - более универсален, чем писать
Do While cnn.state =adStateExecuting+adStateOpen
...
Рейтинг: 0 / 0
adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
    #32202275
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь ты лопухнулся -И на старуху бывает проруха
Никогда раньше не задумывался ,что состояние обьекта коннекшен может описываться суммой констант состояния.
Воистину век живи-век учись(о продолжении скромно умалчиваю)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / adAsyncExecute + adExecuteNoRecords валят Акс... Где грабли?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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