|
|
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
господа, похоже наш автор имеет ввиду немного не то вот что он хочет, как я понял: Код: plaintext и тд и тп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:02:22 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
ТЗ тоже, просто я не очень силён в программирование, точнее только учусь, отсюда глупые вопросы. Я так понял у меня должно получится что то такое автор Dim rsSymma as ADODB.Recordset Dim rs1 as ADODB.Recordset Dim rs2 as ADODB.Recordset Dim rsN as ADODB.Recordset Do Until rs1.EOF rsSymma.AddNew 'Array rsSymma.Fields(0) = rs1.Fields(0) rsSymma.Fields(1) = rs1.Fields(1) rsSymma.Fields(Т) = rs1.Fields(Т) rs1.MoveNext Loop Do Until rs2.EOF rsSymma.AddNew 'Array rsSymma.Fields(0) = rs2.Fields(0) rsSymma.Fields(1) = rs2.Fields(1) rsSymma.Fields(Т) = rs2.Fields(Т) rs2.MoveNext Loop Do Until rsN.EOF rsSymma.AddNew 'Array rsSymma.Fields(0) = rsN.Fields(0) rsSymma.Fields(1) = rsN.Fields(1) rsSymma.Fields(Т) = rsN.Fields(Т) rsN.MoveNext Loop И в начале цикла делать "Т = rs1.Fields.Count - 1", чтоб узнать количество полей, для всех оно будет одинаково, так что можно будет делать только 1 раз. Поправьте меня, если я гдето опять ошибся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:08:08 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
что за бредовый код - не вижу в нем никакого смысла. объясни нормально как у тебя должны данные отображаться и в каком виде (нарисуй свой бумажный отчет сначала), а потом уже можно решение предлагать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:13:06 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
Konst_One: Т.е. возможно следущее??? Код: plaintext Терзают сомнения, что инфа из одинаковых полей разных рекордсетов будет добавляться в виде новых полей, а не в виде новых записей в эти же поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:14:13 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
нет так нельзя. ответь на мой первый вопрос: какова цель твоей программы, что она должна сделать/отобразить/распечатать/и тп? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:23:34 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
Azart автор Dim rsSymma as ADODB.Recordset Dim rs1 as ADODB.Recordset Dim rs2 as ADODB.Recordset Dim rsN as ADODB.Recordset . . . И в начале цикла делать "Т = rs1.Fields.Count - 1", чтоб узнать количество полей, для всех оно будет одинаково, так что можно будет делать только 1 раз.1. Вы правильно меня поняли. 2. А что количество полей заранее не известно? Или оно может со временем меняться? Наверно сначала надо сделать задачу на фиксированном наборе полей, а потом думать как придать программе универсальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:24:58 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
Цель: объеденить в один рекордсет данные из N рекордсетов. А точнее есть ДЛЛ в ней Код: plaintext автор2. А что количество полей заранее не известно? Или оно может со временем меняться? В БД много таблиц и у всех количество полей разное, поэтому заранее количество полей не известно, и неизвестно какая выборка и из каких таблиц понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:33:16 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
линкуй свои запросы из разных баз в свою акцессную базу , а потом натравливай union запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:38:59 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
Локальной базы нет и создавать её не желательно(Остальные БД сиквеловские). Может есть способ записать последовательно данные из каждого рекордсета к примеру в Датагрид, а потом из Датагрида запихнуть всё в один рекордсет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 18:43:38 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
AzartВ БД много таблиц и у всех количество полей разное, поэтому заранее количество полей не известно, и неизвестно какая выборка и из каких таблиц понадобится.Предлагаю: 1. Решить задачу для одного, фиксированного запроса. 2. Написать универсальную процедуру для создания этого синтетического рекордсета. Главое здесь правильно задать типы полей (полезно ограничить их разнообразие чтобы избежать подводных камней). Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 19:03:12 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
Worobjoff Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 19:10:28 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
авторГлавое здесь правильно задать типы полей Это сложно, т.к. я не могу знать какие поля будут требоваться в запросе. Чтоб это обойти создаю запрос к любой из базы данных с запросов тогоже вида что мне пришёл, но с условиями чтоб получить нуль записей, тем самым получаю рекордсет с полями но без записей, а далее начинаю заполнять как ты говорил. Промучился целый день и вот на что накнулся (вылетает на AddNew): Cannot insert the value NULL into column "XXX", table "YYY.dbo.ZZZ"; column does not allow nulls. Insert fails. а процедурку вот какую придумал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2005, 17:55:36 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
Вот работающая процедура, которая создаст синтетический рекордсет, и зальет в него данные из открытого другого рекордсета. (rs_in - источник данныых и образец полей, rs_out - рекордсет уровня модуля (формы), используемый как синтетический) Для копирования данных из остальных рекордсетов, надо еще одну процедуру написать используя то, что после строчки "'Начало копирования данных:" Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 11:06:01 |
|
||
|
Объеденение(сложение) рекордсетов.
|
|||
|---|---|---|---|
|
#18+
AzartЧтоб это обойти создаю запрос к любой из базы данных с запросов тогоже вида что мне пришёл, но с условиями чтоб получить нуль записей, тем самым получаю рекордсет с полями но без записей, а далее начинаю заполнять как ты говорил. Промучился целый день и вот на что накнулся (вылетает на AddNew): Cannot insert the value NULL into column "XXX", table "YYY.dbo.ZZZ"; column does not allow nulls. Insert fails. Если запрос, на основе которого создан рекордсет - не обновляемый, не получится это сделать по сл. причине: Рекордсет берет в себя констрейнты с источника данных. И не только NotNull. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2005, 11:13:04 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32944732&tid=2168138]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 307ms |

| 0 / 0 |
