Найти конкретный символ в поле и заменить его фразой

Я искал в Интернете ответ на этот вопрос в течение нескольких часов, и я не могу ничего найти. Мой опыт работы с FoxPro довольно ограничен. Вероятно, это будет 2 вопроса в одном.

Первый вопрос: у меня есть список элементов, и некоторые из этих элементов могут содержать запятую, что недопустимо в программе, в которую я передаю данные.

Мне в основном нужно что-то вроде этого утверждения:

REPLACE ALL Field1 with STRTRAN(field1, "," , "<break time='250ms' />"

Что-то подобное собирается выполнить то, что мне нужно?

Второй вопрос: у меня есть 5 отдельных полей, из которых мне нужно, чтобы данные были перемещены в новое поле. Что-то вроде этого.

Поле 1: Октябрь Поле 2: 21 Поле 3: 2013 Поле 4: 5:00 Поле 5: PM

FinalField Спасибо за ваше письмо, ваша встреча запланирована на [Поле1] [Поле2] [Поле3] в [Поле4] [Поле5].

Это будет для тысяч записей, поэтому я хотел бы сформулировать утверждение, которое заменило бы их все сразу.

REPLACE ALL FinalField with STRTRAN(

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


person Lordv8r    schedule 11.01.2013    source источник


Ответы (2)


Первый вопрос: то, что вы написали, заменит каждое вхождение запятой на «‹break time='250ms' /›». Не уверен, что это то, что вам нужно. Чтобы просто удалить все запятые:

ЗАМЕНИТЬ ВСЕ field1 С помощью STRTRAN(поле1, [,], [])

сделаю это. Мне нравится использовать символы [] в качестве разделителей строк, когда я имею дело с запятыми, кавычками и т. д. — для ясности.

Взгляните на функцию TEXTMERGE() для ответа на ваш второй вопрос.

person LAK    schedule 11.01.2013
comment
Спасибо за помощь! У меня было ощущение, что я был прав с верхней частью, и я взглянул на функцию TEXTMERGE() и надеюсь, что это решение, которое мне нужно. Еще раз Спасибо! - person Lordv8r; 12.01.2013

Для вашего второго вопроса вы можете просто написать выражение вроде:

REPLACE ALL FinalField WITH ;
  "Thank you for your email, your appointment is scheduled for " + ;
  ALLTIRIM(Field1) + " " + TRANSFORM(Field2) + ;
  TRANSFORM(Field3) + " at " + ;
  ALLTRIM(Field4) + ALLTRIM(Field5) + "."

Это предполагает, что Поле1, Поле4 и Поле5 являются символьными, а Поле2 и Поле3 — числовыми. Если это не так, вам придется настроить их.

Если вы выполняете однократный экспорт в другое приложение, вам может быть проще написать SQL-запрос, чтобы поместить все данные в нужный формат, а затем экспортировать созданный запросом курсор.

person Tamar E. Granor    schedule 11.01.2013
comment
Спасибо за ответ, на самом деле я использовал ее, а не функцию TEXTMERGE(), так как ее немного легче понять. - person Lordv8r; 14.01.2013