-
denis24 (15.05.09 16:58) [0]Здравствуйте,подскажите пожалуйста как решить этот момент.
Приложение написано на VB но суть вопроса остаётся таже.
В приложениее конекчусь через ADO и ODBC к Oracle серверу.
Создаю рекордсет с помощью которого постоянно добавляю записи в таблицу на сервере.
Dim conn As ADODB.Connection
Dim rst As New ADODB.Recordset
Set conn = New ADODB.Connection
With conn
.CursorLocation = adUseClient
.Provider = "MSDAORA"
'.Open = "dsn=aice10g"
.Properties("Data Source").Value = "aice10g"
.Properties("User ID").Value = "disegn"
.Properties("Password").Value = "disegn"
.Open
End With
rst.LockType = adLockOptimistic
rst.Source = "select * from ats where ats.date_call is not null"
Set rst.ActiveConnection = conn
rst.Open
rst.AddNew
.
.
.
rst.update
записи добавляются очень часто.
Связь с сервером иногда может прерываться.Как реализовать сохранение данных при обрыве связи или выключениии сервера?
Ткните носом где читать? -
Сергей М. © (15.05.09 17:02) [1]Сохранение где - на стороне сервера или на стороне клиента ?
-
Медвежонок Пятачок © (15.05.09 17:46) [2]зачем?
транзакция бегин
инсерт
коммит
не получилось - реконнект и снова повторяем транзакцию -
denis24 (15.05.09 17:51) [3]
> Сохранение где - на стороне сервера или на стороне клиента
> ?
на стороне сервера -
Медвежонок Пятачок © (15.05.09 17:56) [4]а что сохранять на стороне сервера, если связь проервалась и на сервере еще нет того, чего нам надо сохранять на сервере?
-
denis24 (15.05.09 17:57) [5]
> Медвежонок Пятачок © (15.05.09 17:46) [2]
>
> зачем?
>
> транзакция бегин
> инсерт
> коммит
>
> не получилось - реконнект и снова повторяем транзакцию
а если нет связи с сервером несколько часов?
при ошибке комита всё это время в цикле реконект?
записи прибывают.Это логирование атс. -
Медвежонок Пятачок © (15.05.09 17:57) [6]а если нет связи с сервером несколько часов?
"А если бы он вез патроны?" -
Медвежонок Пятачок © (15.05.09 17:59) [7]да хоть год не будет связи.
складируй инсерты в очередь локально пока связист не наладит связь -
denis24 (15.05.09 18:01) [8]
> а что сохранять на стороне сервера, если связь проервалась
> и на сервере еще нет того, чего нам надо сохранять на сервере?
>
данные получает клиент и сохраняет их в таблице сервера.это логирование. -
denis24 (15.05.09 18:03) [9]
> да хоть год не будет связи.
> складируй инсерты в очередь локально пока связист не наладит
> связь
> <Цитата>
>
>
а как "складировать"?Не соображу.Дай чтото поконкретней? -
Медвежонок Пятачок © (15.05.09 18:04) [10]данные получает клиент и сохраняет их в таблице сервера.это логирование.
Ну получил клиент данные.
Связь пропала, данные до сервера не дошли.
Их там еще нет.
Что ты при этом собрался сохранять на сервере? -
Медвежонок Пятачок © (15.05.09 18:06) [11]... который еще как ты сказал может быть вообще выключен
-
Медвежонок Пятачок © (15.05.09 18:08) [12]а как "складировать"?Не соображу.Дай чтото поконкретней?
Примерно так же как ты делаешь это на оракле.
Только складывать не на оракле (который сейчас выключен), а в локальном файле access "ats.mdb" -
denis24 (15.05.09 18:28) [13]ага
> Медвежонок Пятачок © (15.05.09 18:08) [12]
>
> а как "складировать"?Не соображу.Дай чтото поконкретней?
>
>
> Примерно так же как ты делаешь это на оракле.
> Только складывать не на оракле (который сейчас выключен),
> а в локальном файле access "ats.mdb"
>
тоесть при ошибке коммита,сохранять данные в локальную бд а при появлении вікладывать на сервер? -
Игорь Шевченко © (15.05.09 19:10) [14]вроде как для этого ClientDataSet придумали