|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Народ, помогите разобраться( В рекордсете n кол-во записей, упорядоченных по возрастанию номера Id. Id некоторых из них может совпадать, такие записи всегда расположены рядом. Необхоидмо перебрать записи рекордсета и вывести так, чтобы при совпадении id выводилась только запись, стоящая последней. Например. Id1 Id2 Id3 Id3 Id3 Id4 должно получиться: Id1 Id2 Id3 (последняя из трех) Id4 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 11:24 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:06 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Наверно так наглядней: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:15 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Ну либо можно это сделать, перестроив сам SQL-запрос - источник рекордсета. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:38 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
TpaBka, rs.AbsolutePosition <> -3 а эту строку можно пояснить? а то что-то не врубаюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:41 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Const adPosEOF = -3 (&HFFFFFFFD) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:51 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
AbsolutePosition -позиция курсора в рекордсете начинается с 1 -3 - означает, что курсор находится за последней записью ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:54 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Что за странная логика? С ее точки зрения при "AbsolutePosition -позиция курсора в рекордсете начинается с 1" что тогда означают -1, -2 и -4? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 12:59 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
TpaBka, If rs("id") <> LVal Then Получается если новая запись не равна предыдущей, то она выводится. А если следующая за ней будет ей равна? Получается следующая будет пропущена. А мне нужно наоборот, чтобы выводилась ПОСЛЕДНЯЯ из дублирующихся записей, а не первая. Вот в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:03 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Antonariy, ну млин я имел ввиду, что если рекордсет не пустой и он стоит на первой записи то его позиция=1 а не 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:04 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
DrunkWolf, Вы проверяли код? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:05 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
TpaBkaAntonariy, ну млин я имел ввиду, что если рекордсет не пустой и он стоит на первой записи то его позиция=1 а не 0 он в смысле курсор ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:06 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:09 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
TpaBkaDrunkWolf, Вы проверяли код?Этот код работает только если нам нужно выводить лишь поле id, а не всю запись. А если всю? Первая запись начисто игнорируется: Код: vbnet 1. 2. 3. 4. 5.
А если она одна с таким id? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:14 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
AntonariyTpaBkaDrunkWolf, Вы проверяли код?Этот код работает только если нам нужно выводить лишь поле id, а не всю запись. А если всю? Первая запись начисто игнорируется: Код: vbnet 1. 2. 3. 4. 5.
А если она одна с таким id? Ничего там не игнорируется А насчет записи, я только показал автору идею, что бы он немного подумал, а вообще дальше можно искать запись в клоне по AbsolutePosition кстати Antonariy ваш вариант не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:40 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Antonariy, вери Спс, работает, а если мне помимо этого, из невыведеных дублирующих записей еще нужно собрать значения определенного поля, скажем "Field" т.е. было: Id1 Field1 id2 Field2 Id3 Field3 Id3 Field4 Id3 Field5 Id4 Field6 Id5 Field7 А станет: Id1 Field1 id2 Field2 Id3 (Field5+Field4+Field3) Id4 Field6 Id5 Field7 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:45 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Antonariy, Пардон на print случайно вывел rsClone ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 13:53 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
DrunkWolf, "выводим" замени на метод, который принимает id в качестве фильтра рекордсета и фперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 16:13 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Если рекордсет основан на SQL запросе, то почему бы не решить эту задачу в SQL? SUM + GROUP BY? Это я к 12326947 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2012, 23:44 |
|
Задача перебор рекордсета определенным образом
|
|||
---|---|---|---|
#18+
Antonariy Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Кстати так теряется последняя строка из дублирующихся ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2012, 12:02 |
|
|
start [/forum/moderation_log.php?user_name=noscere]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 751ms |
total: | 908ms |
0 / 0 |