|
|
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Есть 10 полей в таблице, во всех - нецелые числа или ничего. Нужно в 11-том поле найти минимум по каждой записи, а в 12-ом - указать, какому из десяти полей этот минимум соответствует. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 11:17 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Через селект никак. Надо писать программу с рекордсетом. Через селект разве что нечто вроде: select *, iif(f1<f2 and f1<f3 ... and f1<f10, f1, iif(f2<f3 ... and f2<f10, f2, ... iif(f9<f10, f9, f10)...)) as f11, iif(f1<f2 and f1<f3 ... and f1<f10, 1, iif(f2<f3 ... and f2<f10, 2, ... iif(f9<f10, 9, 10)...)) as f12 from MyTable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 11:21 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Наверное все-таки нужен шаблон для вопроса в форум Указывайте версию базы и клиента: mdb + Access97 SQL + Access2002 и т.п. будет легче подобрать более оптимальное решение проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 11:29 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Access 97 mdb Select, наверное, не годится, так как 10 полей могут завтра превратиться в 20 или больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 11:32 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
2kravets >так как 10 полей могут завтра превратиться в 20 или больше. Поздравляю с не нормализованной структурой базы! Ваши 20 полей надо было бы хранить в отдельной таблицы как строки (это же какие-то данные описывающие один объект?), тогда бы IIF с 20 условиями не писали и минимум искали ну очень просто. А так - флаг вам в руки и осваиваете печать слепым методом, а то проект по-времени затянется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 11:39 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Ну хорошо, пусть будет всегда 10 полей. Все равно не хочется через селект. А такая структура базы не от хорошей жизни, так получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 11:54 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
> Все равно не хочется через селект. В чем тогда вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 12:02 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Да в том-то загвоздка, что мощи не хватает сделать по-другому. Увы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 12:06 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Правда, это до отладки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 12:21 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Почему-то ругается на строчку Set f = .Fields("F" & CStr(n)).Value Пишет Ошибка 13 Несоответствие типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 12:54 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Убери Set: f = .Fields("F" & CStr(n)).Value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 12:57 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Так, теперь 13-ая исчезла, появилась 3021 No current record А на какое событие вешать? У меня сейчас стоит на открытие формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 13:07 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
2Владимр Саныч Зачем первую запись пропускаешь? .MoveNext сразу после входа в цикл. 2kravets Тебе дали для отладки - вот и отлаживай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 13:15 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
to Senin Viktor Чего злой такой? Ну не умею я, иначе меня здесь бы и не было. А без .MoveNext вообще виснет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 13:24 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Саныч, ты где? Меня за твой пример злым назвали - присоединяйся "добрым". Будет "добрый" и "злой" программер, как в полицейских боевиках 2kravets Только, kravets, отладка - это не значит операторы стирать. ВЕРНИ .MoveNext и поставь его перед .Loop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 13:34 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
To Senin Viktor Ну ладно, пусть не злой. Если переставить .MoveNext, то уже не виснет. Но ни черта не считает. В полях F11 и F12 пишет #Имя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 13:41 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Я вернулся. Насчет MoveNext (и Set тоже) - это я рассеянный. Вообще-то когда себе программирую, то таких ошибок не делаю. Но в окне форума трудно заниматься отладкой. :^) А насчет злых и добрых - чего уж там, давайте все будем шире душой. Уж быть добрыми, так всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 14:03 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
Да, одним селектом проблемно (если еще и сами поля и номер поля с максимальным выводить) А вот без - SELECT Val_U.key AS key, Max(Val_U.val) AS Max_val FROM [SELECT key, val1 AS val, 1 AS n FROM Vals Union SELECT key, val2 AS val, 2 AS n FROM Vals Union SELECT key, val3 AS val, 3 AS n FROM Vals]. AS Val_U GROUP BY Val_U.key; (если задачи уместиться в 1 запрос нет - можно, при наперед заданном числе столбцов соорудить конструкцию. но VBA проще - яснее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 19:18 |
|
||
|
Минимум по полям
|
|||
|---|---|---|---|
|
#18+
2 Assa: Но тогда значение n не выводится наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2003, 19:22 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32166613&tid=1681431]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 335ms |

| 0 / 0 |
