powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Макроподстановка зло ?!
39 сообщений из 39, показаны все 2 страниц
Макроподстановка зло ?!
    #34117568
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
SELECT надо сделать с сортировкой по условию. Порядок определяется в переменной пусть (qqq), если в селект ORDER BY &qqq всё работает, если ORDER BY (qqq) то выдаёт ошибку. Так как же без макроподстановки правильно сделать.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34117576
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макроподстановка зло. Но иногда без нее не обойтись, увы.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34117651
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак как же без макроподстановки правильно сделать.
Она зло при непомерном использовании не по месту, где например
"выражение имени" будет работать быстрее.
В твоём случае она по месту. Обычная нормальная конструкция.

Опять же при работе в цикле макро будет "вычисляться" и подставляться
один раз - при первом проходе, а "выражение имени" - каждый проход.
Главное каждый раз думать что будет уместнее и понятное дело - будет
ли это работать в конкретном случае. В хелпе всё расписано.

При использовании в объектном коде конец макро не забывай указывать
второй точкой. Например такой фрагмент без макро мне описать не
представляется:

Код: plaintext
1.
2.
LOCAL lcActiveGrid
lcActiveGrid = This.cActiveGrid
RETURN This.&lcActiveGrid..lAllowCopy

однотипных методов, отвечающих за отрисовку тулбара и меню полтора
десятка, поднимаются по малейшему пыху, нет ни малейшего намёка на тормоза. Так в чём же зло?
Благо.

А классическое сохранение/восстановление SET'ов через макро.
Тоже не зло. Потому что по месту. Команда как команда - чего молодёжь пугать?
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34117823
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey SizovМакроподстановка зло. Но иногда без нее не обойтись, увы.
Всегда использовал, использую и буду использовать. Хоть какой-то инструмент, похожий на обычный указатель с. А что есть лучше указателя?
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118116
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например такой фрагмент без макро мне описать не
представляется:

LOCAL lcActiveGrid
lcActiveGrid = This.cActiveGrid
RETURN This.&lcActiveGrid..lAllowCopy

Код: plaintext
Return evaluate('This.'+cActiveGrid+'.lAllowCopy')

Или:
Код: plaintext
1.
2.
LOCAL loActiveGrid
loActiveGrid = evaluate('This.'+cActiveGrid)
RETURN loActiveGrid.lAllowCopy
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118163
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВсегда использовал, использую и буду использовать

не я у тебя начальником - я б тебе руки отбил
ума нет, одно слово


еще куча идиотов динамический скл пишет - поубивал бы
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118331
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BMJSELECT надо сделать с сортировкой по условию. Порядок определяется в переменной пусть (qqq), если в селект ORDER BY &qqq всё работает, если ORDER BY (qqq) то выдаёт ошибку. Так как же без макроподстановки правильно сделать.

Можно проиндексировать результат выборки. Можно написать n-ое кол-во селектов в do case. Если замена простой и читаемой в коде макроподстановки ведет написанию нечитабельного кода, то уж лучше использовать макроподстановку.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118345
DmGr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 alex11100

А что плохого в динамическом скл?
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118421
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
купи сервак за 20 тонн
и посмотри загрузку процессоров
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118563
TallinAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зато можно получить смешную программную конструкцию

как то:


PARA a
c=IIF(a=1, "*" , " ")
&c a=a+1
a=a+1
?a
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118598
Peisov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 alex11100

А все-таки - что плохого? Уж разъясните, пожалуйста!
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118672
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну елы-палы , зачем такая категоричность .
С дуру конечно можно и сами_знаете_что сломать.
Однако есть случаи , когда макроподстановка удобнее или по другому ну никак .
Просто не стоит злоупотреблять...

Кстати , то-же относиться и к динамическому SQL - ясное дело что если это
select поле1,поле2 from table
то за такое нужно по рукам лупить .
А если это построение кросс-таблицы или запроса по фильтрам и условиям , полученным от пользователя - тогда тут без динамики никуда.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118854
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Sergey Sizov
Код: plaintext
Return evaluate('This.'+cActiveGrid+'.lAllowCopy')
Да, должно по идее работать, у меня в некоторых других методах
так и написано - с использованием EVALUATE.
А здесь не получалось, вот и задействовал макро. Надо будет
проверить твой вариант.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118913
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы дурью не страдать
нужно правильно ссылки передавать

если нужно продергивать методы, то и присваивайте объект в ссылку

динамический sql - зло, особенно когда на пустом месте
(в большинстве случаев вместо красного можно написать черненьким и синеньким)
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34118964
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100динамический sql - зло, особенно когда на пустом месте
Я бы сказал так
динамический sql - зло, ЕСЛИ на пустом месте

Не понимаю Вашей категоричности.Всем можно пользоваться- только с умом.
Пример из жизни

Что есть водка - добро или зло ?
По мне если 100 грам под шашлычок или пельмешки , да в хорошей компании - то добро. А вот ежели пол литра паленой в подворотне под занюхивание руковом - зло.
Пардон за оффтоп - пятница
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34119463
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторводка - добро или зло ?
Хороший пример, а хотел его ещё в первом посте привести,
но... сдержался
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34119474
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=AlexiS=- alex11100динамический sql - зло, особенно когда на пустом месте
Я бы сказал так
динамический sql - зло, ЕСЛИ на пустом месте

Не понимаю Вашей категоричности.Всем можно пользоваться- только с умом.
Пример из жизни

Что есть водка - добро или зло ?
По мне если 100 грам под шашлычок или пельмешки , да в хорошей компании - то добро. А вот ежели пол литра паленой в подворотне под занюхивание руковом - зло.
Пардон за оффтоп - пятница

Золотые слова, особенно про "..100 грам под шашлычок.."
Двумя руками за :)
А если серьезно, то иногда просто нет другово способа, как собрать в строку SELECT-SQL и затем на нее & . Всяко будет быстрее, чем плодить кучу CASE или IF
С уважением, Алексей.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34119548
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Aleksey-K

если писать как на 2-м прг, то понятно, у Вас нет способа
КА посмотрите и селекткмд у него
и скажите мне зачем там макроподстановка
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34119575
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
люди о патернах думают,
кубики раскладывают, кружечки рисуют

... водка, макроподстановка ...
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34119769
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрее pls, добрее... пятница всё же
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34119885
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex111002 Aleksey-K

если писать как на 2-м прг, то понятно, у Вас нет способа
КА посмотрите и селекткмд у него
и скажите мне зачем там макроподстановка
Что-то я не понял про КА !!!!
Мы про что говорим? Я про SELECT-SQL к ЛОКАЛЬНЫМ таблицам (курсорам) для всяческих для пользователя прятствах :)
(дополнительня сортировка, фильтрация, группировака и пр.)!
Или вы и к локальным курсорам через КА ходите?
С уважением, Алексей.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120029
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
найдете макроподстановку - покажите мне

я не знаю зачем мне влокальных курсорах делать макроподстановку
я всегда знаю что и где и зачем
и контролы сами знают откуда что брать и куда чего ....

разный стиль и подход
вначале в кубики играться нужно, а уже затем кодить
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120176
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и где в твоём примере SELECT-SQL к ЛОКАЛЬНЫМ таблицам

А вот твои relations между таблицами и использование их влоб
- действительно зло
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120200
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это пример того,
что если не знаешь, что и где
и то это поднимается без макроподстановок
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120264
Cyv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай pls исходный вопрос
авторSELECT надо сделать с сортировкой по условию. Порядок определяется в переменной пусть (qqq), если в селект ORDER BY &qqq всё работает, если ORDER BY (qqq) то выдаёт ошибку. Так как же без макроподстановки правильно сделать.
И я ответил что в данном случае макроподстановка уместна.

А твой пример неплохой, можно кое-что найти интересное, только не совсем
по теме. Хороших выходных!
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120458
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не знаю к примеру какую нужно решить задачу

ну вот к примеру
нужно сделать объект, который будет что-то вычислять ... ну не знаю

ну оч.просто делается
создается кастом в него уже кладется КА
и он что-то делает
и отдает кому угодно источники - курсоры ....

вот и применение

чаще всего можно и
в селекте можно обойтись без макроподстановки

select tt,eee,rrr from (lcAlias) where id=lnId

ведь и метод можно перегрузить в нужных местах,
если его правильно написать объект

ну так ведь нельзя писать
select * from &cAlias into table &thisform.Alias
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120489
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, и финты ушами никто не отменял

Код: plaintext
1.
2.
3.
4.
5.
6.
create cursor tt (n i, t i)
insert into tt values ( 3 , 45 )
insert into tt values ( 2 , 65 )
insert into tt values ( 1 , 48 )
insert into tt values ( 4 , 96 )
select * from tt order by  1 

можно вывернуться и придумать
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120550
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. alex11100 - вот вам пример - есть некая форма - на ней грид , в него выводиться некоторое кол-во инфы.
у пользователя есть возможность выбирать свои условия отбора и сортировки.
Причем условий этих достаточно много и они могут быть достаточно сложными и основываться на выборках из других таблиц.
Количество условий- величина переменная
Как вы решили бы проблему получения из пользовательского курсора отчета или xls файла с этими самыми юзерскими изысками ?
*****
Лично я делаю примерно так
-Обхожу контролы, в которых юзер что-то навыбирал, в зависимости от значений строю строку для where _filtr_ и для order by _ordr_
для локального курсора
- Получаю строку типа select * from cursor where _filrt_ order by _ordr_
- Выполняю &CursorStr
- Гоню все это дело в xls или репорт

Если же мне нужно получить запрос с сервера я генерю динамический SQL
и выполняю его на сервере (на самом деле несколько сложнее- но идея все-же в динамическом построении запросов)

Лично мне так удобно, да и юзера не жалуються...
Пример интерфейса отбора условий фильтрации - на картинке
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120784
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to alexis
делаю примерно так же только без or - для моих юзеров сложно
?1 интерфейс английский - пользвователи англоязычные ?
?2 идея с скобками интересеная
но самому мне проще в команд. окне написать а юзеры у меня ...
своих долго обучал ? :))
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120879
hkus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает ? Ну и не слушай никого. Когда не устроит - сам разберешься.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34120921
MSDN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=AlexiS=-, DOOM пишешь ?
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34123065
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Гулин Федор
Пользователи интернациональные - поэтому собственно и интерфейс на "языке межнационального общения"
На форме есть и простые фильтры , а этот кусок - для "продвинутых" , и пока находиться на стадии тестирования и "вреднения". Пользуются им пока что мало , но те кто хотел такого - довольны.

to MSDN - не понял DOOM то при чем ?
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34123214
babys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 -=AlexiS=-
И что совсем нет возможности типизировать отчеты?
Пока не встречался с необходимостью такого построителя. Для этого пользователи должны быть уж совсем продвинутыми.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34124068
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то babys
таких пользователей очень мало, но есть .

А насчет отчетов - они тоже есть и достаточно много.Их содержание и количество пользователей устраивает.
Просто иногда у людей с "большим" весом (я имею ввиду должность) возникают "нестандартные" запросы. Вот тогда-то такой построитель и приходит на помошь.Если уж не пользователям , то службе поддержки.

PS Ну и еще мне было интнресно построить вот такую штуку
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34124234
fffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для пользователей с большим весом вывожу все данные в Excel и делаю сводную таблицу.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34126286
s.e.r.g.e.y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так таки никто внятно и не объяснил почему макроподстановка - зло.
А как по мне - все что правильно работает - благо :)
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34126468
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.e.r.g.e.y.Так таки никто внятно и не объяснил почему макроподстановка - зло.
Потому что никто так не считает.

Автор темы BMJ перепутал макроподстановку (символ &) и выражение имени (скобки). Они работают по разному и предназначены для разных целей. Иногда результат их работы совпадает. Отсюда и путаница.

s.e.r.g.e.y.А как по мне - все что правильно работает - благо :)
Не всегда. Т.е. это хорошо для готовой программы. Но программирование - это не только "написал и забыл". Как правило, это еще и "написал, исправил, дополнил, исправил, дополнил,...".

Так вот, с точки зрения последующей модификации приложения макроподстановка сильно усложняет понимание программного кода. Просто тяжело понять, что откуда берется. Поэтому, если есть возможность , макроподстановки лучше избегать.

Разумеется, не всегда возможно отказаться от макроподстановки. Точнее, отказаться можно всегда, но зачастую это приведет к неоправданному раздуванию программного кода. Тут надо смотреть по конкретной задаче.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34127254
s.e.r.g.e.y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда усложняет понимание а иногда облегчает.
Понятно , что использовать ее надо с умом , вообще при прграмировании ум иногда нужен.
...
Рейтинг: 0 / 0
Макроподстановка зло ?!
    #34128940
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часто бывает так, что есть над чем задуматься, а нечем.
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Макроподстановка зло ?!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]