|
|
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Выполняю команду(Adodb.command), которая создает временную таблицу, а потом открываю из нее рекордсет. Рекордсет не открывается, говорит, нет такой таблицы. Кликаю продолжить, открывается. Очевидно, из за асинхронности предыдущей команды. Пробовал Connection.Execute, та же фигня. Про ExecuteComplete прочитал, наверно, с ним можно сделать. У меня на Dim withevents аллергия. Как напишу, так куча отчетов в микрософт:-) Может, еще как нибудь можно. Напишите, пожалуста, пример синхронного(не отдающего управление пока не закончится) запроса на изменение данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:06 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
глупый совет: поставь DoEvents :) Сделать можно всё!!! Только бы знать как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:12 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
100000 доевентсов ставил:-) Не помогает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:20 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
а сделай хранимку, которая возвращает рекордсет из временной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:22 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
> а сделай.. нафига? Какая, блин, разница? Если таблицы НЕТУ, то хранимка из нее чего то вернет, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:32 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
:)) Так ты в одной хранимке создавай временную таблицу и возвращай из нее ркордсет, че такого-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:38 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
И че, он обновляемый получится? Мне этот рекордсет на форму вешать. ваще правильный ответ- это забить на временные таблицы SQL и пользоваться mdb шкой, лежащей рядом с проектом. Я, собсно, так и делаю. Просто это форма годичной давности. А переписывать ее - дешевле удавится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:47 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Я вообще не понимаю, зачем нужны временные таблицы в качестве источника записей для формы - раз, и валяющаяся рядом мдбшка - два. Для кеширования данных, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:54 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
>раз, два для одного и того же >Я вообще не понимаю Когда нужно редактировать нередактируемое >для кеширования и это тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:59 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
а как временная таблица создается (код покажи). == а zz дело говорит по 1 процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:02 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Там много кода:-) Вот функция 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 Ну, вызываю ту функцию, а потом открываю форму. При открытии цепляю на нее рекордсет из временной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:12 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
>дело говорит Повторяю вопрос: И че, обновляемый получится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:15 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
>дело говорит 2 Не выйдет. У меня там SQL к временной таблице используется, а если создать таблицу в процедуре, то она в конце процедуры сдохнет, кажися ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:18 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
2 Shark А сделать псевдо-временную таблицу? Т.е. постоянную, но использовать как временную Что-б накладок не было - данные в нем можно парсить (например) по @@spid Чем не вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:28 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Как вариант, можно попробовать после создания таблицы покрутиться в цикле, пока например, CurrentProject.Connection.Execute "SELECT * FROM #tmpTable" перестанет возвращать ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:30 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Не выйдет. У меня там SQL к временной таблице используется, а если создать таблицу в процедуре, то она в конце процедуры сдохнет, кажися конечно сдохнет, но можно глобальную временную заделать - но только у меня такое ощущение, что ты какую-то фигню делаешь - от сюда и проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:30 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
>Чем не вариант Нормальный вариант. Как и с DAO. Просто в этой формочке километр кода и переписывать очень лениво. Если деваться некуда- перепишу, куда я денусь:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:33 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
>Чем не вариант 2 C DAO вариант лучше, потому что я поклялся страшной клятвой не менять БД. Чтоб обновлялось проще. Она у меня уже эксплуатируется:-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:37 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
2 Shark это что - все эти Go одним коммандом выполняются? ???????? ,?????? (НУ Вы даете ЖАРУ) --------- у Вас два пути - один хороший, другой плогой хороший - подели исполнения батча соммандами по Go. плохой - нужное количество раз сделать Set rs=rs.GetNextRecordset (не помню точно, может быть просто NextRecordset) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:45 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
>даете жару Ты исходник невнимательно читал. там столько екзекьютов, скока гоу. И ваще, помните, про че я спрашивал то:-) См название темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:48 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
читал невнимательно - длинности внимательно читать лениво. Извини, по возможности. Попробуй коннекту сказать Close и Open к конце, или пустую транзакцию на нем забабахать. ЗЫ0 Тема НЕ ПОХОЖА на асинхронность, она похожа на то, что сервер воспринимает принятую команду как непоследнюю в полученном батче ЗЫ1 Асинхронности в приведенном коде не вижу. Что - где "ранее" коннекту сказано, что он асинхронный? (По умолчанию - синхронный) ЗЫ2 - где-то у коннекта свойства были про то, что мол заключать каждую исполняемую команду в транзакцию... - может быть это вылечит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:56 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Мой коннект CurrentProject.Connection. Так что закрывать его поди не стоит:-) А про асинхронность- сам удивляюсь, блин. >непоследнюю в батче пустую транзакцию попробую >извини, по возможности я это переживу:-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 16:06 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
Пустая транзакция не лечит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 16:14 |
|
||
|
Синхронный Adodb.command
|
|||
|---|---|---|---|
|
#18+
если конекшен закроешь временная таблица удалится похоже в этом все и дело видимо в функцию передается клон конекшена который прибивается после завершения функции и соответственно убивается таблица или не передавай конекшен в функцию а используй глобальный или передавай byreference ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 16:16 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32522275&tid=1674527]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
197ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 541ms |

| 0 / 0 |
