как из clientdataset изменить данные на сервере?

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
orlov_2001
Сообщения: 5
Зарегистрирован: 27 май 2006, 16:57

как из clientdataset изменить данные на сервере?

Сообщение orlov_2001 » 28 май 2006, 12:04

пишу обычную трехзвенку, использую ibdatabase, ibtransaction, provider, socket, clientdataset. сохраняю на клиенте с помощью applyupdate. после дисконнекта все измененные данные пропадают. заранее прошу извинить, поскольку это первый опыт

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 май 2006, 17:39

www.ibase.ru/devinfo/ibx.htm
см. про транзакции.

orlov_2001
Сообщения: 5
Зарегистрирован: 27 май 2006, 16:57

Читал про транзакции

Сообщение orlov_2001 » 28 май 2006, 23:31

Читал про транзакции, делаю как написано, в свойствах транзакции указываю read_commited, write. Но почему то данные все равно не сохраняются.
И нигде не могу найти реального примера как можно сделать Commit транзакции. Насколько я понимаю, нужно делать коммит после applyupdates на клиенте. А как это сделать я не знаю.
Пожалуйста подскажите, было бы здорово, если бы показали пример.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 май 2006, 02:24

Пожалуйста подскажите, было бы здорово, если бы показали пример.
IBTransaction.Commit. Так пойдет?
Вообще ApplyUpdates должен сам стартовать и завершать транзакцию при посылке данных на сервер. Если изменения не сохраняются, значит ты что-то не то делаешь.
См. пример CachedUp.

orlov_2001
Сообщения: 5
Зарегистрирован: 27 май 2006, 16:57

Сообщение orlov_2001 » 29 май 2006, 15:17

В примере не показано как это должно работать на трехзвенной модели.
Насколько я понимаю, то при вызове ApplyUpdates на клиенте должно автоматически делать и ApplyUpdates на TDatasetProvider, что и должно сохранить данные в сервере.
Но у меня такое не работает. Как заставить сервер сохранить данные?
В IBDataset прописаны все запросы, все ссылки расставлены.
Если нетрудно, объясните, что нужно сделать на сервере и какие события использовать.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 29 май 2006, 15:50

А TIBDataSet давно научился с MIDAS работать? Когда я в дело это вникал, он не умел.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 май 2006, 18:47

последний - должон. Если в комплекте нет IBClientDataSet, значит уже умеет.

orlov_2001
Сообщения: 5
Зарегистрирован: 27 май 2006, 16:57

TIBClientDataset не подходит для трехзвенки

Сообщение orlov_2001 » 30 май 2006, 06:42

IBClientDataSet is a client dataset that uses an internal TIBDataSet and TDataSetProvider for fetching data and applying updates. It allows you to cache updates fetched using InterBase Expres without using an external provider and client dataset....

так что вот так... грустно.

А клиент датасет как раз создан специально для трехзвенной структуры. Только вот как дать серверу понять что нужно сделать коммит???

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 30 май 2006, 09:53

я ж тебе объяснил - если НЕТ этого компонента в комплекте, значит все должно работать нормально. И намекнул на более свежую версию IBX.
Если ты читаешь readme к ibx, то тебе надо было это прочитать:
"IBClientDataset is depreciated like the corresponding
SQLClientDataset and the BDEClientDataset. It is no
longer installed by default."

Так что я не понимаю, где грустно. Кроме того, IBClientDataSet есть в исходниках, там же. В крайнем случае для управления транзакциями с клиента создаешь методы у сервера, и вызываешь их с клиента...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 30 май 2006, 09:57

Ну и наконец - на www.ibase.ru, в разделе документация, есть туча ссылок по специфике clientdataset. и есть ссылка на статью по работе с IBX и ClientDataSet. И к ней есть большой пример. Попробуй.

orlov_2001
Сообщения: 5
Зарегистрирован: 27 май 2006, 16:57

Спасибо :))

Сообщение orlov_2001 » 30 май 2006, 12:49

Спасибо :) обязательно посмотрю еще раз все материалы по теме.
Только вот мне непонятно, как IBClientDataset можно подцепить к SocketConnection, ну в общем с удаленным сервером.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 30 май 2006, 13:33

IBClientDataset
гм, ты мои ответы читаешь, или нет? Этот компонент УЖЕ НЕ НУЖЕН! Deprecated! Удален из IBX.

Ответить