|
Поиск locate
|
|||
---|---|---|---|
#18+
Добрый день подскажите такой вопрос: Есть вот такой код SELECT f100001 FOR den=1 TO 7 locate FOR thisform.text1.Value = f100001.data AND vedom.km = f100001.km AND NOT EOF() IF den=1 then replace vedom.day1p WITH f100001.pr replace vedom.day1t WITH f100001.ln else IF den=2 then replace vedom.day2p WITH f100001.pr replace vedom.day2t WITH f100001.ln else IF den=3 then replace vedom.day3p WITH f100001.pr replace vedom.day3t WITH f100001.ln else IF den=4 then replace vedom.day4p WITH f100001.pr replace vedom.day4t WITH f100001.ln else IF den=5 then replace vedom.day5p WITH f100001.pr replace vedom.day5t WITH f100001.ln else IF den=6 then replace vedom.day6p WITH f100001.pr replace vedom.day6t WITH f100001.ln else IF den=7 then replace vedom.day7p WITH f100001.pr replace vedom.day7t WITH f100001.ln ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF endif thisform.text1.Value = thisform.text1.Value + 1 continue ENDFOR он ищет что нужно только по первой записи таблицы как сделать чтобы он перескакивал на следующую запись, и так пока не сравнит все записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:14 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
SpartachekДобрый день подскажите такой вопрос:Подсказать вопрос? А ответ на него сам найдешь? Есть вот такой код SELECT f100001 FOR den=1 TO 7 locate FOR thisform.text1.Value = f100001.data AND vedom.km = f100001.km AND NOT EOF()И зачем тут EOF()? Думаете, за последней записью может оказаться еще одна, которая совершенно случайно еще и содержит нужные значения полей? ... thisform.text1.Value = thisform.text1.Value + 1 continue ENDFOR он ищет что нужно только по первой записи таблицы как сделать чтобы он перескакивал на следующую запись, и так пока не сравнит все записи?Разумеется. Continue никогда не создавал цикла по записям. Короче, схема должна быть такая: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:33 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
И не легче заменить столько Код: sql 1.
на Код: sql 1.
как например: Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 13:47 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
Для перебора записей логично использовать цикл SCAN..ENDSCAN. Если Ваша задача - найти записи, у которых значение поля f100001.data начинается с указанного значения thisform.text1.Value и до 7 следующих значений, то получим такой код Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 15:32 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
для аргументированного выбора в конкретной ситуации какой метод лучше locate ... do while found() или SCAN FOR или SELECT или ещё что-то, необходимо ввести функцию измерения времени, при старте своего метода и окончании... а так что логично, что лучше это только можно принять "на веру"...:-), и форма доказательства логичности будет выглядеть типа..."Уважаемый мой метод Scan эти записи отрабатывает за 0.001 сек., а Ваш глубокоуважаемый за 0.5 сек".. :-))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 05:27 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
ВладимирМ, Ваш метод делает то же, что и мой, мне нужно чтобы программа сравнила все записи одной и второй таблицы, т.е. в f100001 и vedom прошлась по все записям, а она корректно работает только для f100001, а в vedom берет только первую запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 08:15 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
SpartachekВладимирМ, Ваш метод делает то же, что и мой, мне нужно чтобы программа сравнила все записи одной и второй таблицы, т.е. в f100001 и vedom прошлась по все записям, а она корректно работает только для f100001, а в vedom берет только первую запись. Т.е. она нашла одно первое совпадение и все, а таких там множество ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 08:18 |
|
Поиск locate
|
|||
---|---|---|---|
#18+
SpartachekSpartachekВладимирМ, Ваш метод делает то же, что и мой, мне нужно чтобы программа сравнила все записи одной и второй таблицы, т.е. в f100001 и vedom прошлась по все записям, а она корректно работает только для f100001, а в vedom берет только первую запись. Т.е. она нашла одно первое совпадение и все, а таких там множество Если Вам надо перебрать все записи как таблицы f100001, так и таблицы vedom, то нужно 2 цикла. Один цикл перебирает записи одной таблицы, другой цикл - записи другой таблицы. Если я правильно понимаю, то Вам нужно вот это Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:11 |
|
|
start [/forum/search_topic.php?author=Norveg_&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
434ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 7608ms |
total: | 8168ms |
0 / 0 |