|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
Если нужно заменить 2 и более подряд идущие пробелы на 1 пробел, то можно воспользоваться Replace скажем так: Код: vbnet 1.
Но что делать если подряд идут 4 или 5 пробелов, а по условиям задачи требуется, чтобы между слов оставался не более одного пробела? Ведь после замены в таком случае все равно останутся 2 и более пробелов. Когда-то в таких случаях я пользовался циклом: продолжал до тех пор пока длина строки переставала сокращаться. Но после изучения регулярных выражений понял, что есть более изящное решение. :) А код такой: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
В принципе вместо пробела (там где отмечено красным цветом) можно использовать и другой символ или даже группа символов. Отличие от простейшего Replace заключается в том, что за 1 раз заменяются все 2 и более пробела на 1, в связи с чем вовсе не требуется цикла. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 20:20 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
studierenНо что делать если подряд идут 4 или 5 пробелов, а по условиям задачи требуется, чтобы между слов оставался не более одного пробела? Ведь после замены в таком случае все равно останутся 2 и более пробелов. Регулярки - это хорошо и универсально, но хочу вставить 5 копеек в защиту риплейса. :) N вложенных риплейсов заменяют на один пробелы, количеством не более, чем (2^N). То есть, если мы уверены, что имеем не более 16-ти пробелов подряд - нам гарантировано хватает 4 риплейсов: Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 22:08 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
studieren, проверил на досуге .... тож вариант Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 22:36 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
qwrqwr... N вложенных риплейсов заменяют на один пробелы, количеством не более , чем (2^N). ... Мне удалось (с разбегу) заменить 38 пробелов 4 риплейсами. Подозреваю, это не предел. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 22:43 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
nord-woolfqwrqwr... N вложенных риплейсов заменяют на один пробелы, количеством не более , чем (2^N). ... Мне удалось (с разбегу) заменить 38 пробелов 4 риплейсами. Подозреваю, это не предел. :) Если пройти подобный инстанс, состоящий, к примеру, из 808 пробелов, то их останется ещё больше ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2012, 23:14 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
от 808 пробелов осталось всего 6. :) Код: vbnet 1. 2.
"Рабочий" диапазон до 40 пробелов подряд. Потом врет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 00:15 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
nord-woolf, а Автор сказал 16 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 00:25 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
!??nord-woolf, а Автор сказал 16 Зонуды, блин. Вообще-то всегда можно уложиться и в три риплейса. Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 09:30 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
Вот еще интересный факт, свойство таблицы, замеченное в ms access 2007. Называется "Отслеживание строк." Попробуйте активировать данное свойство, не работает. Это рудимент для сервера?: ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 09:59 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
qwrqwrВообще-то всегда можно уложиться и в три риплейса. Код: vbnet 1. 2.
Чрезвычайно оригинальное решение. А как заставить в REPLACE работать постановочных знаков (wildcard)? Вообще такое возможно? Сам я думаю, что нет. Но глядя на то, как здесь лихо справляются с трудными задачами, думаю у знатоков может есть "секретные" приёмы? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2012, 11:59 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
studieren, Код: vbnet 1.
Судя по тому, что буквально не "по хэлпам", то Статик здесь осмысленно? Для чего? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2012, 22:41 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
!??, Ой, ошибочка вышла. Я эту функцию использовал для одного запроса и там в конце у меня не было "Set objRegExp = Nothing". Я вот в конце обнулить переменного не забыл, но зато в начале забыл заменить "Static" на "Dim". :) Конечно же функция должна выглядеть так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Спасибо за поправку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2012, 07:46 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
Если хотите использовать эту же функцию в запросах, то функция должна выглядеть так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но честно говоря всё-таки идея qwrqwr намного лучше, ибо там вообще не требуется использование какого-либо объекта. Более того, при таком раскладе функция получается более универсальной как для самой VBA, так и для запросов. Код: vbnet 1. 2. 3. 4.
Да и прямо в самом запросе можно 3 Replace'а подсучить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2012, 08:54 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
Обнаружил одну странность Access'а (2003). Запускаю вот такой запрос Код: sql 1.
Здесь "@Version" как бы неявно объявленный параметр. Как и подобает в таких случаях Access спрашивает значение параметра, что в общем-то логично. Но как только стоит мне объявить (как "хороший" мальчик), то здесь происходит чудеса. Код: sql 1. 2.
Теперь Access НЕ спрашивает значение, а сразу показывает свою версию. Я понимаю, что использовать ключевые слова не есть хорошо, но почему в первом варианте он не показывает версию Access'а? Вот тут не совсем понятно. И вообще, какие зарезервированные слова ведут себя подобным образом? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 11:13 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
Кажется начал понимать в чём тут дело. ИМХО все свойства объекта "Application" имеют такую особенность. Код: sql 1. 2.
Забавно! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 11:27 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
нда, интересно... :) studieren... И вообще, какие зарезервированные слова ведут себя подобным образом? похоже, любые проперти Access.Application так можно "достать" Код: sql 1. 2.
@Visible@UserControl-1-1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 11:28 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
qwerty112, Ну надо же, первый раз обогнал qwerty112 по нажатию кнопок. Тока написал, а он тут как тут. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 11:31 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
qwerty112похоже, любые проперти Access.Application так можно "достать" но "работает" или в сохр.запросах, или через Application.DoCmd что в общем-то и "ожидалось" ... Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2012, 11:36 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
В Excel'е есть очень полезная штука "QueryTable", с помощью которой можно импортировать данные из любой СУБД. Создаём запрос к серверу и получаем данные. Вот что делать если запрос с параметром? Раньше я в программе динамически создавал запрос и в свойство CommandText подменял текст запроса каждый раз. Вчера как-то решил по приколу поменять примерно вот такого рода текст для СУБД SQL Server: Код: sql 1.
Решил попробовать обновить запрос "вручную" и очень удивился, когда Excel не вернул ошибку, а стал спрашивать значение параметра! Мне и в голову не приходило, что можно в Excel'е соорудить запрос с параметром, да так, чтобы у юзера программа сама стала бы спрашивать значения и при этом без единого кода. Соответственно я и не искал в help'е и где-нибудь в и-нете что-либо подобное. А тут такое! :) Короче, эксперименты показали, что вместо константное значение для параметра можно просто проставлять вопросительные знаки и каждый знак Excel понимает как очередной параметр. Код: sql 1.
Можно оказывается программно вставить более предметную подсказку типа "Введите код клиента". Например так: Код: vbnet 1. 2.
Более того можно сделать ссылку на определённую ячейку, чтобы Excel не спрашивал значение параметра, а сразу брал значение с указанной ячейки. Для этого вместо значения нужно написать что-то вроде "=Лист1!A1" и вуаля! Ну и много, много чего можно ещё нарыть в help'е. :) P.S. Ну извиняйте ежли баян! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 14:23 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
У меня офис 2003. Там выходит вот такое диалоговое окно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 14:24 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
studierenУ меня офис 2003. Там выходит вот такое диалоговое окно. studieren, похоже, когда-то стоял 2007, а это, судя по датапикеру, какие-то обломки от него остались ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 14:30 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
!??studierenУ меня офис 2003. Там выходит вот такое диалоговое окно. studieren, похоже, когда-то стоял 2007, а это, судя по датапикеру, какие-то обломки от него остались Вроде никогда не устанавливал офис 2007. Разве что в виртуалку. Ну это окно я получил с "боевого коня", а там строго 2003. Сейчас у соседей попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 14:35 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
!??studierenУ меня офис 2003. Там выходит вот такое диалоговое окно. studieren, похоже, когда-то стоял 2007, а это, судя по датапикеру, какие-то обломки от него остались Только что проверил у соседей, у которых отродясь НИКОГДА не был установлен офис 2007 вообще. Точь в точь такое же диалоговое окно. Так что на обломки не похоже. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 14:42 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
studierenВот что делать если запрос с параметром? тут было ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2012, 14:52 |
|
интересные факты / наблюдения / анализ чужих и собственных решений
|
|||
---|---|---|---|
#18+
Всем известно, что если скопировать текст из окна редактора VBA и при этом если язык клавиатуры не "русский", то кириллица после вставки текста превращается в крякозябру. Как-то тестировал кусочек кода в Excel'е (там в отличии от Access открываем новую книгу и не сохранив сам файл можем сразу тестировать код). Не посмотрев на язык клавиатуры скопировал в базу и сохранил, а Excel файл разумеется не сохранил. :) Там название некоторых объектов, комментарии и тексты Msgbox, в общем все превратилось в неудобочитаемый текст. :) Раньше не знал о существовании такого простого трюка. Оказывается весь этот текст можно скопировать в Word и там "Сервис" ==> "Исправить поврежденный текст" и вуаля! Весь текст опять "нормальный"! Ну и это не всё! Прилагаю файл "CodePage.reg", которого нужно просто запустить и согласиться с тем, чтобы некоторые Win реестры изменились. текст файлаWindows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] "1250"="c_1251.nls" "1251"="c_1251.nls" "1252"="c_1251.nls" "1253"="c_1251.nls" "1254"="c_1251.nls" "1255"="c_1251.nls" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\EUDCCodeRange] "Unicode"="E000-F8FF" После этого обязательно нужно перезагрузить Windows. Если у Вас Win XP, то теперь смело можете копировать и вставить тексты из VBA и наоборот, и при этом совсем можно игнорировать раскладку клавиатуры. "Крякозябры" не появятся. P.S. У меня в ноутбуке Win 7. Увы, там этот номер почему-то не проходит. Кто-нибудь знает как заставить Win 7 работать так как надо со шрифтами / Unicode и прочие, прочие, прочие ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2012, 13:50 |
|
|
start [/forum/topic.php?fid=45&msg=38046086&tid=1610226]: |
0ms |
get settings: |
13ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 446ms |
0 / 0 |