|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
есть символьное поле (А;FF,V и т.д. -это столбцы Excel), надо найти максимальное и сопоставить ему номер столбца (чертовы 16384 записей... в Import формата CSV нет, есть в Append from, но для него надо создать таблицу, следовательно надо узнать сколько полей, можно Fopen и подсчитать, но как всегд охота одной строкой и сразу..., может кто и знает) Ввожу формулу CALCULATE MAX(UPPER(ALLTRIM(n_col))), выдаёт V, когда максимальный столбец FF.. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:32 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
тут подумал, может перейти из десятичной системы в 27(кол-во букв латинского алфавита), и уже в этой системе попробовать подсчитать..., а как перейти в VFP, из одной системы в другую..., блин в математике слаб...чувствуется тут должен стоять натуральный логарифм... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:39 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Откуда фоксу знать что это закодированные числа? Для сравнения строк "V" > "FF" делай в два шага: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:41 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Надо добавить ведущий пробел для значений из одного символа. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:42 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
спасибо... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:43 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
q1w1e1есть символьное поле (А;FF,V и т.д. -это столбцы Excel), надо найти максимальное и сопоставить ему номер столбца (чертовы 16384 записей... в Import формата CSV нет, есть в Append from, но для него надо создать таблицу, следовательно надо узнать сколько полей, можно Fopen и подсчитать, но как всегд охота одной строкой и сразу..., может кто и знает) Ввожу формулу CALCULATE MAX(UPPER(ALLTRIM(n_col))), выдаёт V, когда максимальный столбец FF.. А по-русски это как будет звучать: "есть символьное поле (А;FF,V и т.д. -это столбцы Excel), надо найти максимальное" Что ты этой командой пытаешься подсчитать? CALCULATE MAX(UPPER(ALLTRIM(n_col))), выдаёт V, когда максимальный столбец FF ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:45 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
IgorNGА по-русски это как будет звучать Ответившие поняли :) попробуй догадаться ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:46 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Спасибо..., но как найденный максимум перевести в число.... ну типа А это 1, ff-это 162 столбец.. и т.д. может через SQL запрос...с подзапросом.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 10:50 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
q1w1e1Спасибо..., но как найденный максимум перевести в число.... ну типа А это 1, ff-это 162 столбец.. и т.д. может через SQL запрос...с подзапросом.... В принципе, можно поиграться ASCII-кодами, поскольку буквы латинского алфавита идут последовательно без разрывов. Код: sql 1. 2. 3.
Соответственно, чтобы перевести ASCII-код в число надо просто вычесть 64. Код: sql 1. 2.
Только гораздо проще создать таблицу (ну, или массив), и использовать поле таблицы или индекс массива. В смысле, выполнять поиск в этой служебной таблице нужной записи. Кстати, таблицу можно использовать в запросах, объединяя ее по Inner Join. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 11:19 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Универсальное преобразование через ASCII-коды будет выглядеть примерно так Код: sql 1. 2. 3. 4. 5.
Хотя, повторюсь, удобнее использовать таблицу перекодировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 11:30 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Большое Вам спасибо...:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 11:35 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
ВладимирМУниверсальное преобразование через ASCII-коды будет выглядеть примерно так ... Хотя, повторюсь, удобнее использовать таблицу перекодировки. Таблицу перекодировки тоже надо будет как-то заполнять, поэтому без функции не обойтись, а если есть функция то зачем таблицы лишние? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 11:44 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
ВладимирМУниверсальное преобразование через ASCII-коды будет выглядеть примерно так Код: sql 1. 2. 3. 4. 5.
Хотя, повторюсь, удобнее использовать таблицу перекодировки.А есть еще нотация R1C1, не требующая таких танцев с бубнами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 12:20 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
есть конечно же нотация...R1C1, но в данном случае реализовано так, что оператор указывает в каком столбце что находится, например наименование в столбце "A" и т.д., это долго объяснять, зачем и почему.. и отвлекает от развития основной канвы решения волпроса...:-)) "ВладимирМ", хорошию идею подал со смещением...ASC(left(padl(lcColumn,2,Chr(64)),1))-64)*26 + (ASC(right(lcColumn,1))-64), я подумал что было бы гораздо удобней воспользоваться CHRTRAN("ABCDEFGHIJKLMNOPQRSTUVWXYZ",123....но как только дошёл до 10 подумал, а можно ли и как букве "K" сопоставить 10....? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 12:28 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
q1w1e1CHRTRAN("ABCDEFGHIJKLMNOPQRSTUVWXYZ",123....но как только дошёл до 10 подумал, а можно ли и как букве "K" сопоставить 10....? не изобретай велосипедов с квадратными колесами :) Владимир тебе все правильно написал, если хочешь доработать - сделай собственную функцию и вызывай ее. Как-то так: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 12:47 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
да я уже близок к разгадке...:-)) val(("1"+CHRTRAN(CHRTRAN(x,"ABCDEFGHI","123456789"),"JKLMNOPQRS","0123456789")...) сейчас допишу... и подставлю в ваши смещения и процедуры..:-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 12:49 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
q1w1e1да я уже близок к разгадке...:-)) val(("1"+CHRTRAN(CHRTRAN(x,"ABCDEFGHI","123456789"),"JKLMNOPQRS","0123456789")...) сейчас допишу... и подставлю в ваши смещения и процедуры..:-)) Кулибин ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:08 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Раз уж изобретаешь. Подсказываю: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:10 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
спасибо за подсказку... :-) AT(SUBSTR(x,1,1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ")+26*AT(SUBSTR(x,2,1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ"), сейчас буду тестировать... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:23 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Ув. товарищи Кулибины! Почему бы на время обработки не включить всё-таки мозги стиль R1C1, а после обработки вернуть как было? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:28 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
В смысле наоборот - перед обработкой xlR1C1, а после xlA1 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:29 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Dima TВладимирМУниверсальное преобразование через ASCII-коды будет выглядеть примерно так ... Хотя, повторюсь, удобнее использовать таблицу перекодировки. Таблицу перекодировки тоже надо будет как-то заполнять, поэтому без функции не обойтись, а если есть функция то зачем таблицы лишние? Таблицу можно заполнить и вручную. Безо всяких функций. Таблица удобнее много чем. Ну, например, в нее можно записать названия столбцов в разных регистрах. Тогда отпадет надобность в UPPER(). Таблицу проще использовать в запросах (насколько я понял у автора есть таблица, где поле - это буквы столбца). Много чего можно еще сделать, если есть список значений, а не функция. PS: Если имя столбца из одной буквы, то left(), right() и substr() вернут одно и то же значение. Поэтому left() надо обязательно дополнять до 2 символов через padl(). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:37 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
потому что в начале надо создать таблицу с максимальным количеством столбцов, которые укажет оператор в стиле A1(заполненный диапазон ячеек открываемого документа может быть больше указанного оператором...), после этого как создана таблица с необходимым количеством столбцов(A... FF), заходим в Excel копируем в формате CSV, закрываем, в foxe делаем Append from в подготовленную таблицу и начинаем "разбор полётов"..:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 13:40 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
ВладимирМТаблица удобнее много чем. На вкус и цвет все фломастеры разные (с) :) По мне так функция удобнее, т.к. вероятность ошибки уменьшается, опечатка в таблице в одном значении и не увидишь пока не сглючит. Потом для поиска по таблице все равно надо код писать. Ну и при использовании в разных проектах функцию проще размножать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 14:23 |
|
Найти максимум в символьной строке
|
|||
---|---|---|---|
#18+
Dima TВладимирМТаблица удобнее много чем. На вкус и цвет все фломастеры разные (с) :) Угу. Поэтому все возражения зеркально возвращаются Dima TПо мне так функция удобнее, т.к. вероятность ошибки уменьшается, опечатка в таблице в одном значении и не увидишь пока не сглючит. Ошибка в формуле вокруг 26 столбца и не увидишь пока не потребуется этот самый 26 столбец. В общем случае, найти ошибку в формуле сложнее, чем ошибку в ограниченном наборе значений. Dima TПотом для поиска по таблице все равно надо код писать. Зато при использовании в запросах таблица не будет вызывать тормозов. Функцию невозможно воткнуть в ComboBox для быстрого выбора. Придется писать код проверки на допустимое значение. Везде, где потребуется отобразить список - придется писать дополнительный код по формированию-таки таблицы. Пусть и временной Dima TНу и при использовании в разных проектах функцию проще размножать. Копирование файла PRG ничем не отличается от копирования файла DBF. Другими словами, если не требуется работать со значениями, которые возвращает функция, как со списком, то, действительно, разницы никакой. Вопрос исключительно личных предпочтений. Однако насколько я понял, автор темы все-таки предполагает работать со списком. Дать возможность пользователю выбрать идентификатор столбца. А в этом случае таблица вне конкуренции. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2012, 14:40 |
|
|
start [/forum/topic.php?fid=41&msg=37908800&tid=1583521]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 289ms |
total: | 451ms |
0 / 0 |