Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конвертировка формата полей DBF / 15 сообщений из 15, страница 1 из 1
03.06.2010, 15:12
    #36666886
Конвертировка формата полей DBF
Здравствуйте. столкнулась с неприятностью, пытаюсь перевести базу (VFP), к работе с новой таблицей, в которой формат полей совершенно не такой...типа там где у нас было Character....Numeric, где Character....Date. Пришла в голову идея, что чем менять все программы в базе, может лучше написать программу для конвертации нового DBF файла (изменение формата полей), чтоб он стал "своим". Подскажите пожалуйста как это правильно написать. Fox изучаю находу, поэтому даже не представляю как это сделать....Спасибо
...
Рейтинг: 0 / 0
03.06.2010, 15:35
    #36666978
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Анна Познякова,

VAL() и CTOD() вам в помощь
...
Рейтинг: 0 / 0
03.06.2010, 16:11
    #36667131
Конвертировка формата полей DBF
igorbik,

вы наверное неправильно поняли меня, мне не данные менять надо в таблицах, а сам формат полей таблиц. я даже не представляю что при этом происходит с данными. Допустим была дата 37.10.01 (DATE) а мне надо 1937 (Ch)....тут одним DTOC() вроде не отделаешься...
...
Рейтинг: 0 / 0
03.06.2010, 16:17
    #36667153
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Ну так и посмотрите в Хелпе список всех функций для работы с датами.
...
Рейтинг: 0 / 0
03.06.2010, 16:22
    #36667171
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Анна Познякова
мне не данные менять надо в таблицах, а сам формат полей таблиц. я даже не представляю что при этом происходит с данными.
Прочитал внимательно. Может, лучше и не браться?
...
Рейтинг: 0 / 0
03.06.2010, 16:25
    #36667182
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
> Автор: Анна Познякова
> вы наверное неправильно поняли меня, мне не данные менять надо в таблицах, а сам формат полей таблиц.

А что мешает переименовать дбф с нужными данными, но неправильной структурой, потом сделать дбф с нужным именем и
правильной структурой и простым запросом перелить данный из неправильной в правильную? Если нужно что-то по дороге можно
сконвертировать.

> вы наверное неправильно поняли меня,

Наверное.

> мне не данные менять надо в таблицах, а сам формат полей таблиц. я даже не представляю что при этом происходит с
> данными. Допустим была дата 37.10.01 (DATE) а мне надо 1937 (Ch)....тут одним DTOC() вроде не отделаешься...

Ну в данном случае вполне можно отвертется Transform(Year(имя поля содержащего - дата 37.10.01 (DATE) )) получите то что
хотите, Только год и только строкой.

Можно как-то более попонятнее описать что есть, что хотите получить?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
03.06.2010, 16:29
    #36667207
Конвертировка формата полей DBF
Ffffffffffffffff,

такое чувство я стучу по дереву.....мне не с датами надо работать а таблицу целяком преобразовывать!!!!!!!! структуру ее что ли...
я знаю функцию для дейсвий такого типа COPYSRU ...
...
Рейтинг: 0 / 0
03.06.2010, 16:35
    #36667241
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Анна Позняковамне не данные менять надо в таблицах, а сам формат полей таблиц. я даже не представляю что при этом происходит с данными. Допустим была дата 37.10.01 (DATE) а мне надо 1937 (Ch)....тут одним DTOC() вроде не отделаешься...
Обычно исходные данные оставляют "как есть". Просто их "заливают" в нужную таблицу с нужными форматами полей.

Т.е. есть у Вас работающее приложение VFP. Для его работы нужны определенные форматы данных. Структура таблиц. Вам принесли некую "левую" таблицу (или эта таблица была создана в другом приложении). В этом случае организуют перенос данных из этой "левой" таблицы в таблицы приложения.

Не структуру меняют, а именно данные заносят в уже существующую структуру.

Если возможна простая конвертация, то все решается групповыми командами вроде SELECT ... INTO + APPEND FROM или для VFP9 - INSERT INTO ... SELECT ... FROM ...

Например, чтобы строка вида "37.10.01" была преобразована в дату {01.10.1937} достаточно сделать такие настройки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
* Установить формат даты вида "ГГГГ.ММ.ДД"
Set Date ANSI    

* Установить автоматическое указание столетия если столетие не указано
* для значения года больше или равно  50  считать это  1800 +год
* для значения года меньше  50  считать это  1900 +год
Set Century to  18  ROLLOVER  50 

После таких установок смотрим, что вернет преобразование вида

Код: plaintext
1.
2.
3.
4.
* Отображать  4  цифры года
Set Century On

?CTOD("37.10.01")   && будет значение  1937 . 10 . 01 

В более сложных случаях необходимо будет писать специальные процедуры по конвертации данных для каждой записи и каждого поля в отдельности.
...
Рейтинг: 0 / 0
03.06.2010, 16:36
    #36667244
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Анна Познякова, в таком случае вы должны каждую колонку преобразовывать отдельно при помощи вышеописанных функций. Без преобразования данных в нужный формат вы не зальете их в поле другого формата.
Это азы теории баз данных.
...
Рейтинг: 0 / 0
03.06.2010, 16:37
    #36667249
Конвертировка формата полей DBF
Анна Познякова,

и еще....мне нужно не просто эту таблицу переделать, а написать ПРОГРАММУ, которая правильно будет изменять формат полей. в книжке это называется МАДИФИКАЦИЯ СТРУКТУРЫ ТАБЛИЦЫ (переопределение полей). но там написано только, что можно преобразовывать а что нет....
была таблица с полями num,num,date...стала...ch,ch,ch. как это с помощью программы описать. хоть на пальцах напишите...
...
Рейтинг: 0 / 0
03.06.2010, 17:10
    #36667399
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE TABLE1 (fLD1 N( 20 ), FLD2 N( 20 ), FLD3 D)

INSERT INTO table1 (fld1,fld2,fld3) VALUES ( 10 , 20 , DATE())

CREATE TABLE TABLE2 (fLD1 c( 20 ), FLD2 c( 20 ), FLD3 c( 10 ), Fld4 c( 10 ))

INSERT INTO Table2 (Fld1,Fld2,Fld3,Fld4) ;
       SELECT STR(Fld1),STR(fld2), STR(YEAR(Fld3)), STR(month(Fld3)) FROM table1
...
Рейтинг: 0 / 0
03.06.2010, 17:19
    #36667424
zchvv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Анна Позднякова, если Вы хотите научиться программно изменять структуру таблицы, то можно так:
use t
copy structure extended to t1
use t1
locate for field_name ='pole1'
replace field_type with 'C',field_len with 10
locate for field_name ='pole2'
replace field_type with 'C',field_len with 20
..........................................................
..........................................................
create t3 from t2
&&получили пустую таблицу t3 с измененными полями. Что Вы будете делать с ней дальше - ума не &&приложу. Данные остались в таблице t. И Вы не можете перелить их в новую таблицу простым &&APPEND FROM, так как структура уже другая. Слушайте, что Вам говорят знатоки.
CLOSE ALL
DELETE FILE t1.dbf

Если будкт доп. вопрос, отвечу.
Есть еще ALTER TABLE...
...
Рейтинг: 0 / 0
03.06.2010, 17:27
    #36667453
zchvv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Опечатка: Create t3 from t1
...
Рейтинг: 0 / 0
04.06.2010, 10:24
    #36668487
Конвертировка формата полей DBF
Спасибо всем большое за комментарии, есть над чем задуматься и с чего начать)
...
Рейтинг: 0 / 0
04.06.2010, 11:45
    #36668799
uZverrr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировка формата полей DBF
Анна Познякова,
а можно попробовать команду ALTER TABLE, которая программно изменяет структуру таблицы.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конвертировка формата полей DBF / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]