Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Visual Basic Новый топик    Ответить
 Replace без учёта регистра символов  [new]
zenk
Member

Откуда: Москва
Сообщений: 112
Добрый день!

Работаю в PowerDesigner, он позволяет использовать скрипты на Visual Basic.

Есть в базе данных таблица, она, в частности, характеризуется двумя параметрами - Code (системное имя таблицы в базе данных), например LIST_OF_EMPLOYEES,
и Name, которое поясняет назначение таблицы для неподготовленного пользователя, например, "Справочник сотрудников".

Поскольку PowerDesigner не позволяет ОДНОВРЕМЕННО отображать Code и Name,
Name может вводиться как
"Справочник сотрудников LIST_OF_EMPLOYEES",
или как "Справочник сотрудников List_Of_Employees",
или как "Справочник сотрудников List_of_Employees".

Стоит задача из поля Name вырезать Code независими от регистра, в котором оно было когда-то введено в поле Name.

Replace(Name, Code, "") не находит вхождений при несовпадении регистра.

Не в цикле же обрабатывать строку с позиции InStr(UCase(Name), UCase(Code))
(оставим такую возможность на самый крайний случай).

Не поможете?
5 май 12, 00:18    [12511188]     Ответить | Цитировать Сообщить модератору
 Re: Replace без учёта регистра символов  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20345
Может просто поиск с конца до первого пробела? Ведь имя таблицы не может содержать пробелов?
5 май 12, 00:55    [12511232]     Ответить | Цитировать Сообщить модератору
 Re: Replace без учёта регистра символов  [new]
скукотища
Guest
> zenk
> Replace(Name, Code, "") не находит вхождений при несовпадении регистра.

Находит, надо только попросить
?replace("Справочник сотрудников List_of_Employees","LIST_OF_EMPLOYEES","", , ,1)
Справочник сотрудников 
5 май 12, 07:11    [12511393]     Ответить | Цитировать Сообщить модератору
 Re: Replace без учёта регистра символов  [new]
zenk
Member

Откуда: Москва
Сообщений: 112
скукотища,

К сожалению, в моём диалекте VB это не проходит:

Name = Trim(Replace(Name, Code, ""))

отрабатывает нормально (все вхождения, если они совпали по регистру символов, заменяются), а

Name = Trim(Replace(Name, Code, "", , ,1)) 

выдаёт:
Ошибка выполнения Microsoft VBScript
Несоответствие типа (0x800A000D)
At line 57, character 16

К сожалению, не смог найти, какая версия VB включена в PowerDesigner в качестве встроенного редактора скриптов.

Нашёл только вот это упоминание:

автор
You can access PowerDesigner objects using any scripting language such as Java, VBScript or C# (C Sharp). However, the scripting language used to illustrate our examples in this chapter is VBScript.

VBScript is a Microsoft scripting language. PowerDesigner provides integrated support for Microsoft VBScript so that you can write and run scripts to interact with metamodel objects in a development environment using properties and methods.
5 май 12, 08:31    [12511511]     Ответить | Цитировать Сообщить модератору
 Re: Replace без учёта регистра символов  [new]
studieren
Member

Откуда: Tashkent, Uzbekistan
Сообщений: 2824
zenk,

А в Вашей версии VB "Option Compare Binary" проходит?
5 май 12, 09:07    [12511592]     Ответить | Цитировать Сообщить модератору
 Re: Replace без учёта регистра символов  [new]
zenk
Member

Откуда: Москва
Сообщений: 112
скукотища, studieren

Большое спасибо!

Подтолкнули к правильному решению:

Name = Trim(Replace(Name, Code, "", 1, -1, 1))


Ещё раз спасибо
5 май 12, 09:35    [12511697]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Replace без учёта регистра символов  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51742
Бойцы парили несколько лет мне мозг, что вба-ёхель не заменяет построку без учета регистра
ща уже сам залез и шо я увидел :)
s = Replace(s, ParName(i), ParVal(i), vbTextCompare)
13 ноя 16, 11:11    [19887568]     Ответить | Цитировать Сообщить модератору
Все форумы / Visual Basic Ответить