Обновление строк с помощью функции CHRTRAN Visual FoxPro

У меня есть базовое программное обеспечение для ведения учета; мы пытаемся захватить адреса электронной почты, вспомогательное программное обеспечение не может захватить знак «@».

Попытка использовать команду CHRTRAN Visual FoxPro для поиска в поле «UdidText» запятой «,» и замены ее знаком «@».

Текущий фрагмент кода гласит:

update [udids] set udidtext = CHRTRAN (udidtext, '%,%', '@') where udidno = '78' and udidtext != ''

В качестве краткой заметки; знак процента - мой предпочтительный подстановочный знак.

Изменить: при проверке кода в моем приложении функция выдает ошибку "Несоответствие типа оператора/операнда".


person Alexander Ashkin    schedule 22.03.2016    source источник


Ответы (2)


CHRTRAN() не нуждается в подстановочных знаках. Второй параметр — символ или символы для замены. Так что попробуйте:

CHRTRAN(uiditext, ',', '@')

Тамар

person Tamar E. Granor    schedule 22.03.2016

Согласно части chrtran(), это будет просто:

chrtran(uidtext, ',', '@')

Ваш код, вероятно, дает вам ошибку, потому что udidno не является символом? Вероятно, вам нужно:

 .. udidno = 78 ... 

там.

Однако ваш код вообще не будет заменять, если только ANSI не включен. У вас есть это:

... and udidtext != ''

Если ANSI НЕ ВКЛЮЧЕН, тогда эта часть будет преобразована в FALSE, и обновление не произойдет. Чтобы исправить это, вам нужно либо SET ANSI ON, либо лучше использовать ==, который не содержит ANSI:

update [udids] set udidtext = CHRTRAN(udidtext, ',', '@') where udidno = '78' and !(udidtext == '')

Таким же образом = '78' будет означать любые записи, в которых udidno начинается с '78'. Если вам нужно точное совпадение, то это будет:

update [udids] set udidtext = CHRTRAN(udidtext, ',', '@') where udidno == '78' and !(udidtext == '')

Последняя часть на самом деле не нужна, поэтому она становится:

update [udids] set udidtext = CHRTRAN(udidtext, ',', '@') where udidno == '78'

И, наконец, ваше udidno может быть числовым:

update [udids] set udidtext = CHRTRAN(udidtext, ',', '@') where udidno = 78
person Cetin Basoz    schedule 22.03.2016