Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

перекодировкa Фокспро

11K
24 апреля 2006 года
Aselia
10 / / 24.04.2006
У меня проблема, я знаю как можно дату в Фокспро из формата 04/02/2006 перевести в формат 060402 функцией Dtoc, и время из формата 00:25:30 перевести в формат 002530 функцией substr(ttoc).
Но все дело в том что эти значения дат и времени находятся в таблице, и когда я перевожу их, то переводятся только текущая строка на которой стоит указатель в таблице, а не все строчки с
заданным названием поля и результат перевода строки отображается в экране Фокспро а не в самой таблице.
У вас побольше опыта в базах данных Фокспро, не могли бы вы мне помочь.
Как можно это сделать программно в Фокспро 5.0а?

С уважением Асель.
Для наглядности прикрепляю файл таблицы базы данных Фокспро.

Ответ отправьте, пожалуйста, на мою почту [email]AselVT@yandex.ru[/email].

Жду вашего ответа.
16K
25 апреля 2006 года
INB
5 / / 18.04.2006
Цитата:
... все дело в том что эти значения дат и времени находятся в таблице, и когда я перевожу их, то переводятся только текущая строка на которой стоит указатель в таблице, а не все строчки...



Лучше привести фрагмент кода, а так невозможно точно сказать, в чем проблема.
Вообще, изменение полей в таблице делает команда REPL. Пример изменения:
тек.запись - REPL <поле> WITH <выражение>;
все записи - REPL ALL <поле> WITH <выражение>;
выб.записи - REPL <поле> WITH <выражение> FOR <условие>.

При изменении поля, надо следить за тек.индексом, если он включает изменяемое поле. Так как индекс упорядочивает записи, при изменении поля, первая запись может стать последней (или последняя первой ?).

11K
25 апреля 2006 года
Aselia
10 / / 24.04.2006
Здравствуйте, уважаемые программисты Фокспро!
Огромное спасибо вам за то, что откликнулись!
Вы прислали мне, чтобы я объяснила задачу:


Дело в том, что в текущей таблице, к примеру в первой ее строке в полях:
1) Enddate стоит 04/04/2006, что было в этой таблице, вот став указателем на эту строку, я задаю в окне код

?substr((dtoc(enddate,1)),3,6)

у меня получается в основном окне Фокспро, не в самой таблице, 060404 (т.е. год, месяц, число-т.е. что мне и нужно было перевести из формата месяц/число/год(полная форма) в год/месяц/число (но без разделителей и в строковой форме, для дальнейшего перевода затем структуры поля из типа date8 в тип char6).

Задача: В общем виде, получить из даты 04/04/2006 (mm/dd/yyyy) дату 060404 (yymmdd), а затем перевести из типа date8 в тип char6, и сделать это надо в виде программы, чтобы менялись все остальные соответствующие строчки таблицы поля enddate по вышеприведенному формату (т.е. из mm/dd/yyyy c типом date8 получить yymmdd с типом char6), а не только текущая строка данного поля и изменения были бы в самой таблице, а не в экране Фокспро.

Что же мне нужно сделать, для того чтобы это отражалось не в экране Фокспро, а в самой таблице и по всем ее строкам поля enddate?

2) В поле endtime, к примеру в первой строке стоит 23:00:11 нужно перевести в вид 230011 (т.е. без разделителей).
Я обратно встаю на эту строку, задаю код в окне Command:

?substr(endtime,1,2)+substr(endtime,4,2)+substr(endtime,7,2)

У меня получается этот перевод т.е. из 23:00:11 появляется обратно в окне Фокспро 230011, а не в самой таблице и только по данной строке высвечивается результат.

Задача: В общем виде, получить из времени 23:00:11 (hh:mm:ss) время 230011 (hhmmss), а затем перевести это поле из типа char8 в тип char6, и сделать это надо в виде программы, чтобы менялись все остальные соответствующие строчки таблицы поля endtime по вышеприведенному формату (т.е. из hh:mm:ss с типом char8 получить hhmmss с типом char6), а не только текущая строка данного поля и изменения были бы в самой таблице, а не в экране Фокспро.

Что же мне нужно сделать, для того чтобы это отражалось не в экране Фокспро, а в самой таблице и по всем ее строкам поля endtime?

Для наглядности прикрепляю эту табличку, в которой это надо сделать.
Жду вашего ответа. Ответ отправьте на [email]AselVT@yandex.ru[/email].
С уважением, Асель.
7.9K
25 апреля 2006 года
uki_
122 / / 26.01.2006
Записать обратно в поле enddate не получится.
Так как поле имеет тип дата, и поэтому строковой тип туда записать не можно. Это относится и к полю endtime.

Сперва нужно изменить тип обоих полей на Сhar( 8 ).

Чтоб можно было менять структуру таблицы, ее нужно открыть в режиме Exclusive:
 
Код:
USE C:\bill00001177\bill00001177.dbf EXCLUSIVE
После того, как тип полей изменен можно дать команду
 
Код:
UPDATE bill00001177 SET enddate = LEFT(enddate,2) + SUBSTR(enddate,4,2) + RIGHT(enddate,2), endtime = LEFT(endtime,2) + SUBSTR(endtime,4,2) + RIGHT(endtime,2)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог