|
|
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
уважаемые конферяне, пытаюсь перейти с адо на адо.нет. позвольте мне один только вопрос. могу ли я принципиально загрузить в датасет данные датаадаптером из источника А (напимер, аксесса) и потом датаадаптером из датасета их перенести в получатель Б (например, на сервер)? то есть по сути реализовать дата флоу таск? читал про такие методы датаадаптера как апдейд, инсерт/делит/комманд, но пока не понял, как вытащить данные из датасета... если у вас вдруг есть пример кода, совсем будет замечательно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 15:57 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
можешь. правда,ты еще не понял что такое датасет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 16:21 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
AlexeiKможешь. правда,ты еще не понял что такое датасет :) пасиб! что могу - главное. буду потихоньку разбираться. а кусочка кода для примера нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2008, 16:25 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
уважаемые, обзавелся книжкой некоего Дэвида Сеппы по адо.нет. для примера пытаюсь из одной аксессовской базы в другую просто перенести данные из таблички в табличку. не важно, что это можно сделать средствами самого аксесса ))). создал две базы и в каждой создал по табличке ABC (Letter varchar(1), Code integer) - в табличку в первой базе внес три записи. Соотвественно, A - 65, B - 66, C- 67. Табличка во второй базе пустая. Приведенным ниже скриптом пытаюсь перенести данные. Машина код выполняет, но ничего не делает и в месседжбоксе affected rows = 0. Подскажите, в чем моя ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 08:36 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
Дэвид Сеппа ниче там не пишет про CommandBuilder случаем? Заюзайте его в вашем примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 08:55 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer , посмотрел. команд билдер ведь генерит запрос? запрос-то я и сам могу написать, только вот непонятно, как его потом передать методу апдейт датасета. понимаю, что прошу многого, но если несложно, можно хоть пару строк кода для примера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 09:31 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
Вот на си шарпе пример(адаптировать к VB не проблема, думаю) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 09:37 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
м-м-м... так ведь эта функция возвращает заполненный дататэйбл! это и у мну получается безо всяких командбилдеров - возможно самонадеянно, но считаю себя в вопросах sql довольно крутым парнем ))) - я вот не понимаю, почему метод апдейт у мну отрабатывает впустую. тэйблмэппинг сделать? а зачем? датаадаптер смотрит только на одну таблицу. в параметры метода передается тоже только одна. и даже пробовал добавить строку с тэйблмэппингом - результат тот же, то есть нулевой. мне б вот пример метода апдейт датасета, если можно... я могу решить задачу путем перебора записей дататэйбла, формирования текстового sql запроса и передачи его на выполнение объекту команд - но это на большом числе записей варварство - работать будет вечность... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 09:45 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
ща напишу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 09:48 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
вот пример работы с дата адаптером и апдейт Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:05 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
по моему я понял, чего вы хотите - одним адаптером загрузить таблу, а другим воткнуть в другую базу? боюсь вас огорчить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:21 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
пожалуй, я готов согласиться, что запрос при декларации второго адаптера - безобразие. подумал, что по аналогии с адо.рекордсетом, где при открытии можно было просто указать имя таблицы, пройдет. поправил. добавил командбилдер - но не понимаю, он же не выполняет никакого метода - достаточно декларации? в примере у меня в месседжбоксах поля и значения хорошо отображаются, но вот аффектид роуз = 0. у меня принципиальное непонимание модели адо.нет? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:22 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
да. именно так, реализовать по сути дата флоу таск! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:23 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
но ведь это должно быть можно сделать! так как по сути дата сет - отсоединенные данные. никак не связанные с источником - и откуда пришел апдейт, из считанного из той же таблицы или откуда-то из другой базы - ведь должно быть неважно. разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:25 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
потому - что при всей одинаковости первого и второго дата тэйблов, это все равно разные дататэйблы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:29 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
если в данном случае я: -- считаю в 2 дататэйбла данные двумя адаптерами из двух баз, -- помещу оба дататэйбла в датасет, могу ли в датасете произвести вставку из одной таблицы в другую и потом уже апдейтить? или проще попытаться "объяснить" второму адаптеру, что таблица все-таки такая же? каким образом? ну хоть общее направлене, не детально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:38 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
по моему никак вы не объясните адаптеру, что это та - же таблица :) вставку вы в цикле тока по моему можете сделать из одного дата тэйбла в другой что - нибудь вроде этого псевдокода: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:50 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
в смысле Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 10:52 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
noisette что вы за сложности изобретаете? зачем вам датаТейблы если вы просто хотите перенести данные? алгоритм ваших действий таков: Код: plaintext 1. 2. 3. 4. 5. ВСЁ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:01 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
WYPMAH noisette что вы за сложности изобретаете? зачем вам датаТейблы если вы просто хотите перенести данные? алгоритм ваших действий таков: Код: plaintext 1. 2. 3. 4. 5. ВСЁ! просто человек думал, можно дата тэйблы подменить и с циклами не париться ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:02 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
несомненно. но есть сильное подозрение, что, положим, хотя бы жалкий миллион записей в цикле будет перебираться ну очень долго. нет? пока пободаюсь еще с колумнмэппингом. не может такого быть, чтобы разработчики идею апдейта вида update from inner join заменили на циклический апдейт записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:05 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
noisetteнесомненно. но есть сильное подозрение, что, положим, хотя бы жалкий миллион записей в цикле будет перебираться ну очень долго. нет? пока пободаюсь еще с колумнмэппингом. не может такого быть, чтобы разработчики идею апдейта вида update from inner join заменили на циклический апдейт записей. Вы как делаете инсерт в T - SQL? вы же пишете, что крутой парень в SQL а ежели так, то знаете, что больше одного инсерта за раз сделать нельзя Возможно есть технологии, которые инкапсулируют цикл, однако цикл в любом случае присутствует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:11 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
ну не стоит придираться так к словам ))) я понимаю, что машина все равно перебирает записи, а имел в виду, что если мы вместо уже упоминавшейся конструкции update from inner join будем использовать declare cursor for select while update ... where ... то время исполнения возрастает до безобразия. курсоры и циклы в явном виде - зло ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:18 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
В общем, подводя итог: в вашем случае я бы делал, как WYPMAH если бы это был Sql Server, а не Access, то вообще делал бы это на сервере(в аксесе не знаю, нету наверное такой возможности) Хочу вам еще книжку посоветовать на прощание - Боб Бошемин - Основы ADO.NET :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:25 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
благодарю, записал. а латиницей его как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:27 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
А фиг его знает - он в русском переводе имеется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 11:28 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
noisetteуважаемые конферяне, пытаюсь перейти с адо на адо.нет. позвольте мне один только вопрос. могу ли я принципиально загрузить в датасет данные датаадаптером из источника А (напимер, аксесса) и потом датаадаптером из датасета их перенести в получатель Б (например, на сервер)? то есть по сути реализовать дата флоу таск? читал про такие методы датаадаптера как апдейд, инсерт/делит/комманд, но пока не понял, как вытащить данные из датасета... если у вас вдруг есть пример кода, совсем будет замечательно ))) Можете, например так(FW 1.0) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. DataRow в ds_dest стало Added и таким образом DataAdapter выполнил бы для этого рау команду вставки. WYPMAHчто вы за сложности изобретаете? зачем вам датаТейблы если вы просто хотите перенести данные? алгоритм ваших действий таков: - создали коннекшн; - открыли транзакцию; - выполнили выборку (комманд вам в помощь); - прочитали выборку в цикле (ридер поможет); - в цикле выполнили параметризированный инсерт (тот же комманд это умеет); - закрыли транзакцию. ВСЁ! Если у нас два источника данных, то ИМХО такая схема не пройдет. Для каждого источника свой коннектшн, а объект транзактшн ассоциирован с конкретным коннекшном. --- По-видимому(сам никогда не занимался), перенос данных совсем не простая штука, не зря же в MS SQL 2005 этим занимается отдельный компонент - Integration Services ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 15:41 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
вот уж транзакции на двух источниках не проблема: у мну есть клиентский тул - аксесс, который хранит данные локально и коннектится на свервер - чтоб и там данные обновить вот у мну и стоят в коде параллельные mdb_cn.BeginTrans sql_cn.BeginTrans и коммиты. а если хоть в одном коннекшне возникает ошибка (адо, не адо.нет), то роллбэчу обе транзакции. работает "на ура" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 15:51 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
изложенного в примере пока не осилил - буду разбираться. пасиб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 15:54 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
noisetteвот уж транзакции на двух источниках не проблема: у мну есть клиентский тул - аксесс, который хранит данные локально и коннектится на свервер - чтоб и там данные обновить вот у мну и стоят в коде параллельные mdb_cn.BeginTrans sql_cn.BeginTrans и коммиты. а если хоть в одном коннекшне возникает ошибка (адо, не адо.нет), то роллбэчу обе транзакции. работает "на ура" А можно поподробнее, не очень понял всё структуру, особенно как выполняется коммит обоих транзакций Если написать, что-то вроде Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Но если первый удастся, а второй нет, то первый уже не откатить. Т.е такая схема не подходит А у вас как?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 16:33 |
|
||
|
Dataset & DataAdapter
|
|||
|---|---|---|---|
|
#18+
вырезав незначащие куски кода, оставил только форму. напоминаю, что это адо для вба в офисе 2003. из таблицы я беру значения полей для каждой записи, пробегаю циклом и формирую запрос. у меня два адо коннекшна - на локальную базу и на сервер Код: 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. в общем так вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 17:01 |
|
||
|
|

start [/forum/topic.php?all=1&fid=17&tid=1352241]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 368ms |

| 0 / 0 |
