powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синхронный Adodb.command
29 сообщений из 29, показаны все 2 страниц
Синхронный Adodb.command
    #32522215
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю команду(Adodb.command), которая создает временную таблицу, а потом открываю из нее рекордсет. Рекордсет не открывается, говорит, нет такой таблицы. Кликаю продолжить, открывается. Очевидно, из за асинхронности предыдущей команды. Пробовал Connection.Execute, та же фигня.
Про ExecuteComplete прочитал, наверно, с ним можно сделать. У меня на Dim withevents аллергия. Как напишу, так куча отчетов в микрософт:-) Может, еще как нибудь можно. Напишите, пожалуста, пример синхронного(не отдающего управление пока не закончится) запроса на изменение данных.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522241
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
глупый совет:
поставь DoEvents :)

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522275
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
100000 доевентсов ставил:-) Не помогает
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522281
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а сделай хранимку, которая возвращает рекордсет из временной таблицы.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522309
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> а сделай..
нафига? Какая, блин, разница? Если таблицы НЕТУ, то хранимка из нее чего то вернет, что ли?
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522323
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)) Так ты в одной хранимке создавай временную таблицу и возвращай из нее ркордсет, че такого-то?
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522339
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И че, он обновляемый получится?
Мне этот рекордсет на форму вешать.
ваще правильный ответ- это забить на временные таблицы SQL и пользоваться mdb шкой, лежащей рядом с проектом. Я, собсно, так и делаю. Просто это форма годичной давности. А переписывать ее - дешевле удавится.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522363
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще не понимаю, зачем нужны временные таблицы в качестве источника записей для формы - раз, и валяющаяся рядом мдбшка - два. Для кеширования данных, что ли?
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522385
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>раз, два
для одного и того же
>Я вообще не понимаю
Когда нужно редактировать нередактируемое
>для кеширования
и это тоже
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522395
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как временная таблица создается (код покажи).

==
а zz дело говорит по 1 процедуру.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522418
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там много кода:-)
Вот функция
Public Function RunScript(cN As ADODB.Connection, InFile As String) As Boolean
On Error GoTo RunScript_Err
Dim cm As New ADODB.Command
Dim infileopen As Boolean
Dim incmd$, batch$, Q$

Q$ = """" 'quoted id char

cm.ActiveConnection = cN
cm.CommandType = adCmdText

Open InFile For Input As #1
infileopen = True

Do While Not EOF(1)
Line Input #1, incmd$
If (LCase(Left(incmd$, 2)) <> "go") Then
batch$ = batch$ + incmd$ + vbCrLf
Else
If batch$ <> "" Then
cm.CommandText = batch$
cm.Execute
batch$ = ""
End If
End If
Loop

Close #1
RunScript = True
Exit Function
RunScript_Err:
MsgBox Err.Description, vbCritical + vbOKOnly, "Îøèáêà"
If infileopen Then
Close #1
End If
RunScript = False

End Function




Вот SQL
if (object_id('tempdb..#t2TariffGroupTransport') IS NULL)
CREATE TABLE #t2TariffGroupTransport(
fDate smalldatetime,
fName varchar(50),
f_100 money,
f_200 money,
f_300 money,
f_500 money,
f_700 money,
f_1000 money,
f_1500 money,
f_3000 money,
f_5000 money,
fInshurence money,
f_100_ money,
f_200_ money,
f_300_ money,
f_500_ money,
f_700_ money,
f_1000_ money,
f_1500_ money,
f_3000_ money,
f_5000_ money,
fInshurence_ money,
PRIMARY KEY CLUSTERED (fDate, fName)
)
go

if (object_id('tempdb..#t2TariffGroupInHome_Delivery') IS NULL)
CREATE TABLE #t2TariffGroupInHome_Delivery(
fTG_Name varchar(50),
fDate smalldatetime,
fLorryType varchar(50),
fDeliveryPriceTime money,
fDeliveryMinTime money,
fDeliveryPriceDistance money,
fDeliveryPriceTime_ money,
fDeliveryMinTime_ money,
fDeliveryPriceDistance_ money,
PRIMARY KEY CLUSTERED (fTG_Name, fDate, fLorryType)
)
go

if (object_id('tempdb..#t2TariffGroupInHome') IS NULL)
CREATE TABLE #t2TariffGroupInHome(
fDate smalldatetime,
fName varchar(50),
fExpediteSingle money,
fExpediteSeveral money,
fPackageWeight money,
fPackagePiece money,
fLoadWeight money,
fLoadPiece money,
fExpediteSingle_ money,
fExpediteSeveral_ money,
fPackageWeight_ money,
fPackagePiece_ money,
fLoadWeight_ money,
fLoadPiece_ money,
PRIMARY KEY CLUSTERED (fDate, fName)
)
go

if (object_id('tempdb..#t2PriceInHome') IS NULL)
CREATE TABLE #t2PriceInHome(
fBranch varchar(50),
fDate smalldatetime,
fTariffName varchar(50),
fTariffName_ varchar(50),
PRIMARY KEY CLUSTERED (fBranch, fDate)
)
go

if (object_id('tempdb..#t2PriceTransport') IS NULL)
CREATE TABLE #t2PriceTransport(
fDate smalldatetime,
fBranchA varchar(50),
fBranchB varchar(50),
fTariffName varchar(50),
f_100 money,
f_200 money,
f_300 money,
f_500 money,
f_700 money,
f_1000 money,
f_1500 money,
f_3000 money,
f_5000 money,
fInshurence money,
fTariffName_ varchar(50),
f_100_ money,
f_200_ money,
f_300_ money,
f_500_ money,
f_700_ money,
f_1000_ money,
f_1500_ money,
f_3000_ money,
f_5000_ money,
fInshurence_ money,
PRIMARY KEY CLUSTERED (fDate, fBranchA, fBranchB)
)
go
Ну, вызываю ту функцию, а потом открываю форму. При открытии цепляю на нее рекордсет из временной таблицы.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522423
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>дело говорит
Повторяю вопрос:
И че, обновляемый получится?
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522438
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>дело говорит 2
Не выйдет. У меня там SQL к временной таблице используется, а если создать таблицу в процедуре, то она в конце процедуры сдохнет, кажися
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522463
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shark

А сделать псевдо-временную таблицу?
Т.е. постоянную, но использовать как временную
Что-б накладок не было - данные в нем можно парсить (например) по @@spid

Чем не вариант?
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522470
OldPferd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, можно попробовать после создания таблицы покрутиться в цикле, пока например,
CurrentProject.Connection.Execute "SELECT * FROM #tmpTable" перестанет возвращать ошибку
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522471
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не выйдет. У меня там SQL к временной таблице используется, а если создать таблицу в процедуре, то она в конце процедуры сдохнет, кажися

конечно сдохнет, но можно глобальную временную заделать - но только у меня такое ощущение, что ты какую-то фигню делаешь - от сюда и проблемы.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522482
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Чем не вариант
Нормальный вариант. Как и с DAO. Просто в этой формочке километр кода и переписывать очень лениво. Если деваться некуда- перепишу, куда я денусь:-)
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522493
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Чем не вариант 2
C DAO вариант лучше, потому что я поклялся страшной клятвой не менять БД. Чтоб обновлялось проще. Она у меня уже эксплуатируется:-(
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522519
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shark
это что - все эти Go одним коммандом выполняются?
????????
,??????
(НУ Вы даете ЖАРУ)
---------
у Вас два пути - один хороший, другой плогой
хороший - подели исполнения батча соммандами по Go.

плохой - нужное количество раз сделать Set rs=rs.GetNextRecordset
(не помню точно, может быть просто NextRecordset)
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522526
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>даете жару
Ты исходник невнимательно читал. там столько екзекьютов, скока гоу. И ваще, помните, про че я спрашивал то:-) См название темы.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522547
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читал невнимательно - длинности внимательно читать лениво. Извини, по возможности.

Попробуй коннекту сказать Close и Open к конце, или пустую транзакцию на нем забабахать.

ЗЫ0 Тема НЕ ПОХОЖА на асинхронность, она похожа на то, что сервер воспринимает принятую команду как непоследнюю в полученном батче

ЗЫ1
Асинхронности в приведенном коде не вижу. Что - где "ранее" коннекту сказано, что он асинхронный? (По умолчанию - синхронный)
ЗЫ2 - где-то у коннекта свойства были про то, что мол заключать каждую исполняемую команду в транзакцию... - может быть это вылечит.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522559
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой коннект CurrentProject.Connection. Так что закрывать его поди не стоит:-)
А про асинхронность- сам удивляюсь, блин.
>непоследнюю в батче
пустую транзакцию попробую
>извини, по возможности
я это переживу:-)
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522574
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пустая транзакция не лечит.
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522575
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если конекшен закроешь временная таблица удалится

похоже в этом все и дело видимо в функцию передается клон конекшена который прибивается после завершения функции и соответственно убивается таблица

или не передавай конекшен в функцию а используй глобальный или передавай byreference
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522584
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смешная мысль пришла - а нет ли там после последнего go
vbCrLf-а? (перевод строки возврат каретки)
уж не пытается ли он пустую команду последней исполнить...
(это может быть проблемой)
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522595
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если конекшен закроешь временная таблица удалится

ваша правда, но вылечить можно глобальной (##)
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32522597
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но лучше делать в контексте одного конекшена - не будет мешать другим юзерам и мусору меньше будет
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32523145
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин.
Я же написал.
Выдается ошибка: нет таблицы.
Я пишу дебаг.
Пишу продолжить.
И она ее(таблицу) НАХОДИТ.
Проблема в АСИНХРОННОСТИ.
Как CurrentProject.Connection может прибиваться?
...
Рейтинг: 0 / 0
Синхронный Adodb.command
    #32523415
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shark

может я и ошибаюсь но по моему ты зря зациклился на асинхронности.

неужели трудно убрать CurrentProject.Connection из аргументов функции ?
оно ведь и так глобальное...
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Синхронный Adodb.command
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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