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

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

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

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

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

Наверное.

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

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

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

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

такое чувство я стучу по дереву.....мне не с датами надо работать а таблицу целяком преобразовывать!!!!!!!! структуру ее что ли...
я знаю функцию для дейсвий такого типа COPYSRU ...
...
Рейтинг: 0 / 0
Конвертировка формата полей DBF
    #36667241
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Позняковамне не данные менять надо в таблицах, а сам формат полей таблиц. я даже не представляю что при этом происходит с данными. Допустим была дата 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
Конвертировка формата полей DBF
    #36667244
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анна Познякова, в таком случае вы должны каждую колонку преобразовывать отдельно при помощи вышеописанных функций. Без преобразования данных в нужный формат вы не зальете их в поле другого формата.
Это азы теории баз данных.
...
Рейтинг: 0 / 0
Конвертировка формата полей DBF
    #36667249
Анна Познякова,

и еще....мне нужно не просто эту таблицу переделать, а написать ПРОГРАММУ, которая правильно будет изменять формат полей. в книжке это называется МАДИФИКАЦИЯ СТРУКТУРЫ ТАБЛИЦЫ (переопределение полей). но там написано только, что можно преобразовывать а что нет....
была таблица с полями num,num,date...стала...ch,ch,ch. как это с помощью программы описать. хоть на пальцах напишите...
...
Рейтинг: 0 / 0
Конвертировка формата полей DBF
    #36667399
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
Конвертировка формата полей DBF
    #36667424
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Позднякова, если Вы хотите научиться программно изменять структуру таблицы, то можно так:
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
Конвертировка формата полей DBF
    #36667453
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка: Create t3 from t1
...
Рейтинг: 0 / 0
Конвертировка формата полей DBF
    #36668487
Спасибо всем большое за комментарии, есть над чем задуматься и с чего начать)
...
Рейтинг: 0 / 0
Конвертировка формата полей DBF
    #36668799
uZverrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анна Познякова,
а можно попробовать команду ALTER TABLE, которая программно изменяет структуру таблицы.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Конвертировка формата полей DBF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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