|
|
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Привет! Вобщем я всегда думал что макроподстановка - это нормальная практика. Но специалисты оказывается стараются ее не применять или применять только в исключительных случаях. Мне уже объяснили и показали на одном примере как ее не применять, более того, как выяснилось в Объектно-Ориентированном Программировании не используют обращение к объектам через их имя (что я и делал с помощью макроподстановки), а делают это через ссылки на объекты. Пример как избавиться от макроподстановки и в целом оптимизировать свой код на моем примере можно посмотреть здесь , где получилось 2 варианта решения от пользователей Dima_T и прошелмимо. Будем считать сие началом этой темы, так как тема той ветки изначально была несколько иная. Я бы хотел продолжить эту тему и просить Вашей помощи еще в несколькольких задачах, т.к. если со ссылками на объекты теперь понятно, то возник вопрос - а как быть с необъектами? Итак, у меня похожая задача, только в тот раз я к текстбоксам объекты лепил, а теперь мне нужен фильтр. Я пошел схожим путем и для каждого своего листбокса (лепленного на ходу к едитбоксам так же как лейбл-счетчик в прошлом примере) создавал глобальную переменную с именем родитель+объект. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 09:52 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
вот с фильтрами как раз и так и делают только паблик тебе там сто лет не нужен если выполнить макроподстановкой заранее созд-ю команду Код: plaintext 1. 2. 3. но .... set filt - это для ленивых, или не знающих иных приемов ... я так делаю если точно знаю что размер ист-ков будет оч.маленький и влом думать и писать правильный код я всегда советую не пользоваться этой командой, потому, что имеются ряд подходов и способов для того, чтобы не исп-ть этот прием недостатки set filt - оч.медленно работает http://www.sql.ru/forum/actualthread.aspx?tid=380474&hl=set+filter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 10:20 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Опять нагородил Это тремя строчками пишется: Код: plaintext 1. 2. SET FILTER TO - это одно из тех исключений, где удобно макроподстановку использовать, т.к. ее обход требует много кода, глобальных переменных (можно заменить на свойства объекта _screen) или доп.свойств формы (если PrivateDataSession) SET FILTER зашивать в библиотеку - не лучший вариант. Его не желательно использовать (много минусов), но иногда это бывает наилучший вариант. PS В Destroy() - ошибку создаешь. Переменную удалил, а SET FILTER ее использующий оставил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 10:24 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 10:29 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
да, действит-но лепишь макроподстановки где нужно и не нужно без разбору Код: plaintext 1. 2. 3. 2Dima T у него ош-ка не в-ся, т.к. глоб. перем-я не убивается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 10:30 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Dima T Код: plaintext Код: plaintext Наврал немного, ошибка только при работе с объектами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 10:31 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Dima TPS В Destroy() - ошибку создаешь. Переменную удалил, а SET FILTER ее использующий оставил. у меня там на самом деле так (просто неполностью выложил): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 10:55 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
CTAC-KO Dima TPS В Destroy() - ошибку создаешь. Переменную удалил, а SET FILTER ее использующий оставил. у меня там на самом деле так (просто неполностью выложил): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Думаю ты уже догадался что достаточно первых двух строк твоего кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 11:01 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Dima TОпять нагородил Это тремя строчками пишется: Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 11:09 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
итого, меньше макроподстановок + оптимизация = Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 11:22 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
CTAC-KO Dima TОпять нагородил Это тремя строчками пишется: Код: plaintext 1. 2. Код: plaintext Сделай замену двойной кавычки на одинарную и включи в обе части одновременно: Код: plaintext Только читать этот код из кавычек невозможно. Проще функцию причесывания кавычек сделать Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 11:24 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
хорошо, теперь о неиспользовании фильтра в фелом. Ну а если уже и юзать, то обязательно индекс надо будет приделать. Если не юзать фильтр вообще, то нужно будет каждый раз делать выборку (там где фильтр ща). Если у меня это клиент-сервер, то мне тогда лучше один раз выбрать сразу все, а затем оттудова постоянно выборки делать (для скорости которых сиравно нужен индекс) или каждый раз с сервера спрашивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 11:41 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
.. this.Value ... SET FILTER TO &lcFilterStr IN (this.WordsTable) ох-ох-ох моделим ош-ку запускаем все это добро под разработкой жмем Ctrl+F2 в коммандном окне пишем sele (...) brow ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 11:44 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
прошелмимо.. this.Value ... SET FILTER TO &lcFilterStr IN (this.WordsTable) ох-ох-ох моделим ош-ку запускаем все это добро под разработкой жмем Ctrl+F2 в коммандном окне пишем sele (...) brow с этим понятно - просто добавить в мп и все: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 12:22 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
ох, шаман так не нравится??? Код: plaintext 1. 2. 3. 4. 5. 6. посмотри в сторону конструктора-построителя запросов на сервер с ограничением выборки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 12:30 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#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. 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. 2прошелмимо - последнее, по-моему, не содержит какой-либо существенной разницы, что все в мп, что часть, или? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 12:35 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
это так скать, третий клинический случай - не объект, не фильтр, а обращение к полям бд и формирование командной строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 12:44 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
прошелмимопосмотри в сторону конструктора-построителя запросов на сервер с ограничением выборки я-то понимаю как ограничить выборку, но вот есть ли смысл в таком ключе - юзер набирает какой-то текст в едитбоксе. В методе interactivechange, когда набрано 4 символа срабатывает код, который выдает в листбоксе возможные варианты слов, начинающихся с этих 4х букаф. Так вот, получаеццо, каждые 4 буквы я буду ломиццо с запросом на сервер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 12:57 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
кое-что уже заменил на evaluate() Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:08 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
ох ты наверно весь фокс перепишешь на фокс-же только с макроподстановками не допустить нулл в рез-м курсоре можно правильно написав запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. что их на стороне клиента-то шарохать? тем более, что чаще всего они наоборот нужны!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:25 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
Код: plaintext счаз посмотри в сторону визардов пример есть в upsize wizard посмотри на виз-е средства-построители запросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:27 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
прошелмимоох ты наверно весь фокс перепишешь на фокс-же только с макроподстановками прошелмимоне допустить нулл в рез-м курсоре можно правильно написав запрос та да, но задача показать как не делать мп в таких случаях, т.е. обращение к полям бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:31 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
прошелмимопосмотри в сторону визардов пример есть в upsize wizard посмотри на виз-е средства-построители запросовdbc у миня нет. а wzupsize.app - как смотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:37 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
....\vfp9\Tools\xsource\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:40 |
|
||
|
Комьюнити против макроподстановк&..Продолжение
|
|||
|---|---|---|---|
|
#18+
авторта да, но задача показать как не делать мп в таких случаях, т.е. обращение к полям бд. я для себя всегда знаю имена полей и пишу без макроподстановок если это класс унив-й, то наследую, и меняю четко нужные места, приспосабливая класс под конкр-ю стр-ру если что-то должно тянуться, то придумываю генер-ры с послед-й компиляцией и хранением и вып-ем скомпил-го байт-кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2008, 13:46 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35087230&tid=1588215]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 403ms |

| 0 / 0 |
