Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
... с тем, чтобы их синхронизировать. то есть записи отсутствующие в одноименной таблице первого датасета взять из второго и затем наоборот появившиеся новые записи в первом записать во второй. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 11:36 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Есть такой метод Merge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 11:46 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Как говорится - будем посмотреть :). Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 12:11 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
не получается сохранить результат в БД... Код: plaintext 1. 2. 3. после этого открываю ацессом БД а там всё старое, хотя в гриде на моей форме отображается правильный т.е. обновлённый датасет dataSet1. Туплю? Очччень вероятно :), но где? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2004, 16:55 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Вообще сделай DataWizard да и посмотри какой он все разруливает. Я лично отрабатываю DataSet в такой последовательности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 07:59 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Тьфу ты на me не смотри в C# это this писал по памяти и наполовину написал на VB.NET половину на C# :-) но думаю идея понятна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 08:01 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Я что-то с трудом понимаю на счёт этих .GetChanges(). На мой взгляд мне это ничего не даёт. У меня несколько БД с одинаковой структурой, одна на сервере и несколько на клиентах, которые надо синхронизировать, т.е. новые записи появившиеся на сервере должны быть переданы клиенту и наоборот. То есть имеем два датасета, которые и надо сравнивать. Вообще сделай DataWizard да и посмотри какой он все разруливает Делал, он делает также как и я т.е. oleDbDataAdapter1.Update(dataSet1); Но у меня данные в БД не меняются а у него да. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 11:55 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. А если так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 12:34 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Так я тоже пробовал - не работает. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 12:39 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Проверь а что возвращает метод DataSet HasChanges() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 12:58 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Что мне это даст? У меня 2 датасета от двух РАЗНЫХ БД с одинаковой структурой. Да и дело не в том - результирующий-то датасет правильный, всё работает, только вот в БД не записывается. oleDbDataAdapter1.Update(dataSet1); Вот это вот ДОЛЖНО работать, но почему-то в БД никаких изменений. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 13:17 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Ну HasChanges вернет вообще если какие либо изменения в DataSet или нет. М ожно также getChanges прогнать чтобы узнать что то вообще меняется или нет. Ну причин может и до и больше. Начать можно и с адаптера. Сам его писал или визардом сделал? что вызывается storedProcedure или sql- запрос. Какой sql- запрос. или динамически update генеришь, какой? Выдается ли какая ошибка? Побольше от тебя информация и поболе будет понятно в чем проблема. P.S. И еще AcceptChanges всегда помещается уже после Update этот метод принимает изменения совершенные базой данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 13:52 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
посмотрите это\r \r /topic/61041 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 14:26 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Вот набросал тестовое приложение. На форме лежат два датагрида, 4-е кнопки + oleDbDataAdapter1 oleDbConnection1 dataSet11 + oleDbDataAdapter2 oleDbConnection2 dataSet21 первый грид связан с датасет11, второй с датасет21 кнопки 1 и 3 : заполняют датасеты данными из БД (успешно) кнопка 2: добавлена в тестовых целях, если я вручную в гриде что-либо изменю и нажму на эту кнопку, то изменения заносятся в БД (снова успешно) заметьте без всяких dataSet11.AcceptChanges(); кнопка 4: здесь находятся все проблемы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 14:41 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Мне интересно посмотреть HasChanges не после того как ты данные уже закоммитил AcceptChanges() ом а до него до Update вообще. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Это снимет лишнии дерганья. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 15:07 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
тоже false Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 15:17 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
hDrummer прав, тебе надо туда по его ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 15:41 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
А вот так выдаёт true, но попрежнему не работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А вот так выдаёт true и ошибку,говорит что команда упдате подействовала на 0 записей Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. По ссылке ходил, читал - не утешительно. Возникает вопрос: А на кой тогда нужен ds1.Merge(ds2) ?! Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 16:13 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Да на какой ляд ды данные в DataSet commitишь до Update? Делай так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 18:42 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Вы невнимательно читали мой пост. Во втором примере я как раз так и делаю и получаю ошибку, если dataSet1.AcceptChanges(); не стоит перед упдате а здесь dataSet11.Merge(dataSet21,true); выставлено труе . Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 18:56 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Да я прочитал, но также и очевидно что AcceptChanges() не ставиться перед Update поэтому можно перестать рассматривать другие варианты. Какая ошибка ? Дострочно можете ее привести здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 19:06 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Да, могу дострочно: System.Data.DBConcurrencyException: Parallelitätsverletzung : Der UpdateCommand hat sich auf 0 Datensätze ausgewirkt. Что можно перевести на русский так: System.Data.DBConcurrencyException: Повреждение параллелности : UpdateCommand подействовал на 0 записей Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 19:22 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Да кажется по поводу построчно я погорячился :-) ни шпрехен я. Попробуй еще до update поставить следующее this.BindingContext[dataSet1].EndCurrentEdit(); А вообще надо еще попробовать через GetChanges как делаю я . Это и правильно потому что для Update свой dataset, для Insert получается свой. А самое главное что updatу отдается на съедение не весь DataSet а только изменившиеся его часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 19:53 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
По вашему, это должно выглядеть так: Код: plaintext 1. 2. 3. Но это же в моём случае бред. Получается, что я беру серерный датасет, смотрю есть ли там изменённые данные, их там естественно нет, и делаю мерге с 0 значением. Или я чего-то не понял? А куда же мне клиентский датасет пристроить и как мне ЕГО с серверным сравнить? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 10:17 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Давай уточним постановку: Есть две БД: БД1 и БД2. Соответственно к ним два DataSet: ds1, ds2. БД1 и БД2 - одинаковы по структуре. Цель: Слить данные из БД2 в БД1. Вопросы: 1) правильно я понял твою задачу? 2) какое количество таблиц в ds1 и ds2? 3) могут ли записи в ds1 и ds2 совпадать? 4) что надо делать если записи из ds1 и ds2 совпадают по идентификатору но не по содержанию. Оставить в ds1 как есть, переписать их из ds2. Либо спросить юзера что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 10:41 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Цель: Слить данные из БД2 в БД1. да, так и потом наоборот из БД1 в БД2, но это уже будет дело техники если получится хотя бы первое сделать. Вопросы: 1) правильно я понял твою задачу? да 2) какое количество таблиц в ds1 и ds2? Их три 3) могут ли записи в ds1 и ds2 совпадать? Изначально базы на сервере и клиентах идентичны, затем они начинают меняться, т.е. на клиентах появляются новые записи, если клиент К1 создал что-то новое, то это должно быть занесено в серверную БД и быть доступно для других клиентов, например клиент К2 ничего нового не создал и решил сравнить БД, на предмет, а не появилось ли чего но вого на сервере, после сравнения он должен увидеть запись от К1. 4) что надо делать если записи из ds1 и ds2 совпадают по идентификатору но не по содержанию. Оставить в ds1 как есть, переписать их из ds2. Либо спросить юзера что делать? Сложный вопрос, я думаю, что если запись стала другой у её создателя, то изменения перенять и на сервер, если у другого клиента, то нет. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 10:58 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Простите, что встреваю, но не проще ли использовать в качестве СУБД на клиенте MSDE и настроить рпеликацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 11:43 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Простите, что встреваю, но не проще ли использовать в качестве СУБД на клиенте MSDE и настроить рпеликацию? А я не знаю !!! Может и проще, подсажите, объясните как. И кто такой MSDE ? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 11:56 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Самое простое что сейчас можно сделать без головняков, это написать свой Update и Merge. Вручную в цикле прокрутить записи ds2 и вставить отсутствующие в ds1. Так как у них DataRowState будет Added. Вернуть их методом changedDataSet = GetChanges(DataRowState.Added) и кинуть в свой Update. В котором в цикле пробегать по записям changedDataSet и данные передавать хранимой процедуре в БД1. А в этой ХП заложить всю логику: например в начале пытаться вставить, а если запись уже есть то обновить (как обновлять тоже можно решить здесь) или любую другую логику все уже дело техники. ИМХО только на клиенте нельзя решать вопросы синхронизации(читай репликации) представь что в обоих БД порядка милионна записей и что их все тащить на клиента в начале из одной БД, а потом из другой. Сравнивать и расскидывать изменения по базам - очевидно подход неверный, даже если клиент толстый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 11:59 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Вручную в цикле прокрутить записи ds2 и вставить отсутствующие в ds1. Ну, так просто тоже не получится. А как быть если клиент изменил какю-нить запись? т.е. ИД у неё остался а содержимое полей изменилось? Я как раз и пытался избежать варианта, когда я должен каждое поле каждой записи (которая уже есть в БД) одной таблицы сравнивать с каждым полем записи (с тем же ИД) в другой.Ну или хотя бы автоматизироать этот процесс как-то, т.е. не самому код это писать, т.к. работать это будет наверняка медленнее какой-нить встроенной возможности специально для этой задачи сделаной. Нахрена тогда все эти базы и языки пр-ия и SQL?! Что бы потом всё вручную? Проблема в том, что я не знаю КАК! Но я уверен, что такое решение задачи "в лоб" - самое худшее из возможных и далеко не единственное, задача-то в общем-то тривиальна и любой кто с БД работает сталкивается сней рано или поздно. Я в инете нарыл десятки вопросов в разных форумах на разных языках и НИ ОДНОГО ответа. т.е. люди сталкиаются часто с этой задачей, неужели никто не решил?! Не верю! Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:24 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
По поводу Merge он просто заменяет такие проверки. Может он и делает это супероптиизационным способом но и на милионнах записей Merge умрет, а представь какой DataSet будет в этом случае ведь по сути создание DataSet влечет за собой создание массы объектов DataTable, DataColumn, DataRow и т.д. А на небольших массивах разницы между в лоб и merge не будет - а будет уверенность что все делается правильно и в соответствие с выбранной логикой синхронизации. >А как быть если клиент изменил какю-нить запись? т.е. ИД у неё остался а содержимое полей изменилось? В логике хранимой процедуры. А вообще в подобных (но не в этом случае) лучше делать все изменения и проверки на стороне сервера, очищать датасет и загружать его уже изменнеными (актуальными) данными. Чем кромсать в клиенте передавать серверу, а потом принимать от сервера. А в вашем случае надо делать репликацию между БД1 и БД2. Вопрос надо задавать в форуме MS SQL если вы используете MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:45 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
1. Обращения в другие форумы не принесло мне пока облегчения, ждёмс... :) 2. Дело всё-таки сдвинулось с мёртвой точки, причем добавлением всего двух строчек кода. (так всегда пыхтиш всю неделю, думаешь, ищешь, а когда находишь, то это обычно не что-то такое, а всего пара строчек :) ) oleDbDataAdapter1.AcceptChangesDuringFill=false; oleDbDataAdapter1.Fill(dataSet11); oleDbDataAdapter2.AcceptChangesDuringFill=false; oleDbDataAdapter2.Fill(dataSet21); Теперь всё в БД записывается и записывается то, что надо, НО не так как надо, т.е. есть запись у которой есть ид поле, которое является автоинкрементным и первичным ключём, так вот если в обеих таблицах есть записи с одинаковым ид полем, но в клиентской таблице эта запись изменилась, то после команды упдате в таблце на сервере пишется ещё одна строка с другим ид и темже содержанием, что и на клиенте, а мне нужно в этом случае только проапдейтить эту запись. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 15:24 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Предыдущий вопрос про ид-поле отпал. Теперь другая проблема с мерге: Если я делаю dataSet11.Merge(dataSet21,true); ,то в случае наличия в dataSet21 новых или модифицированных записей они отображаются в результирующем dataSet11 и это меня устраивает, но вот если в dataSet21 была удалена какая-то запись, то в результирующем dataSet11 она остаётся и это мне совершенно не нужно. Как быть? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 16:59 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Ещё вопрос: Как в DataSet'е удалить строки с состоянием Deleted ? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 17:14 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
То что у тебя Access сняло бы многие предложения от нас по поводу ХП, репликации и т.д. Это как раз тот случай когда чем больше скажешь тем раньше решишь проблему. Вообще задачу синхронизации в твоем случае можно решить использую DataReader (как наиболее производительный класс), не загружая все данные в отсоединенный кэш (в данном случае DataSet). Ну да ладно с DataReaderом придется все делать ручками. Тут еще полно различных камней но все они связаны с тем что все таки для подобной задачи надо поднимать СУБД. Если же все таки исползовать DataSet тем более у тебя продвижения в этом плане. Предлагаю все таки задуматься что когда нибудь ты не сможешь загрузить в него всё, и как вариант в таком случае это работать с данными порционно. (можно просто за последний период какой либо - я не знаю это зависит от задачи) Теперь к вопросу как избавиться от Deleted Для этого можешь для merge из второго Dataset брать все записи кроме удаленных например так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 19:12 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Я так чувствую, вам поразвлекаться хочется... Вам Access как воздух нужен? Даже если и так, MS SQL поддерживает репликацию с гетерогенных источников. Настройте репликацию и не мучайтесь. Поиск по форуму MS SQL поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 10:44 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
> MS SQL поддерживает репликацию с гетерогенных источников. Настройте репликацию и не мучайтесь. Поиск по форуму MS SQL поможет. Зачем же так с MS SQL извращаться. Если уж начать поднимать MS SQL то сражу делать все по уму. Все пользователи будут работать с одной БД размещенной на MS SQL. Если accessовский интерфейс нужен, то существующий переделать в adp проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 11:08 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Я не исключаю возможности пересесьть на MS SQL, хотелось бы только сперва знать, какие плюсы это мне принесёт и что значит "сразу делать все по уму"? Так же был бы признателен за объяснение организации репликации, т.е. как это примерно делается и какими средствами. Нужно только заметить, что оставить клиентов совсем без собственной БД я не могу, задача не позволяет, поэтому ещё раз - в принципе на всех клиентах и на сервере должна быть в конечном итоге одна и таже информация в БД, клиенты дополняют серверную БД своими новыми записями и получают с сервера инф-ю которую уже внесли другие клиенты. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2004, 11:02 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Хотелось бы вот ещё что отметить, у меня есть Windows-программа с которой работают клиенты, эта программа опирается на БД и нужно, что бы человек все необходимые ему вещи мог сделать из этой программы, поэтому все рекомендации сделать (настроить) репликацию средствами самой БД не очень подходят. Я это себе в самом начале предстовлял так: Клиент давит кнопку "обновить БД", появляется запрос на установление соединения (модемного) с интернет, после его установления программа связывается с ВебСервисом на сервере и передаёт ему слепок (Датасет, как я это хотел делать) клиентской БД, на сервере происходит сравнение и запись новых записей на серверную БД, затем снова сравнение и пересылка клиенту отсутствующих у него новых данных (которые слили на сервер другие клиенты) Вот примерно так я хотел это делать, но теперь после почти недельного общения на эту тему на этом форуме - Я В ПОЛНОМ ТУПИКЕ:( Можно это вообще на С# + Access(на клиентах) + WebService + MSSQL(на сервере) реализовать? Я думаю да, вопрос в том с какой стороны зайти :). В общем буду благодарен за любую помощь. Sa отдельное большое спасибо за потраченное на меня время. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2004, 15:49 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Очень трудно со своей колокольни сказать что же тебе надо сделать и надо ли что то делать вообще. Тут задача глубоко системного анализа - реинжиниринга бизнес-процессов, работа над полученной функциональной модели - как результат создания проекта будущей информационной системы с большой буквы. Что касается "все по уму" то ИМХО Идеальный вариант : одна предметная область - одна база данных. База данных должна обеспечивать ЦЕЛОСТНОСТЬ и ДОСТОВЕРНОСТЬ информации. Поэтому возлагать на клиента (даже если это и в его интересах) задачи синхронизации данных считаю не правильным. Такие локальные средства как MS Access, FoxPro не считаю системами управления базами данных (хотя последним занимался очень долго и плотно, начиная с VFP 2.6 под DOS). Но в тоже время существует множество успешных проектов выполненных этими или подобными средствами. И такие средства все еще актуальны и ИМХО будут востребованы всегда. Поэтому рубить шашкой (предлагать Oracle Application, SAP R/3 :-) ) особо не хочется да и не имею права. Что касается вашей задачи. Ведь главное это достижение цели (хотя и в будущее тоже неплохо заглянуть). Если у вас все получилось и результат устраивает заказчика(или надо внушить заказчику что это то что ему надо :-) ) - значит все отлично. Единственное применительно использования двух DataSet я бы подумал о порционной обработке данных. То есть загрузки данных для синхронизации по частям или например только за последний период (считая или добиваясь чтобы предыдущие периоды были закрыты и синхронизированны) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2004, 20:02 |
|
||
|
Как сравнить два DataSet'a ?
|
|||
|---|---|---|---|
|
#18+
Единственное применительно использования двух DataSet я бы подумал о порционной обработке данных. .............например только за последний период (считая или добиваясь чтобы предыдущие периоды были закрыты и синхронизированны) Очччень толковый совет. Так и буду делать, в конечном итоге поможет сократить траффик и ускорить обработку. Спасибо. На этой оптимистической ноте думаю закрыть эту объёмную тему, в случае появления конкретных вопросов буду постить в новых или соответствующих топиках. М234 Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 15:32 |
|
||
|
|

start [/forum/topic.php?all=1&fid=20&tid=1439386]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 524ms |

| 0 / 0 |
