Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / имя открытой dbf-ки в переменную / 21 сообщений из 21, страница 1 из 1
18.01.2010, 12:31
    #36415642
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Задача такая - есть дбф но не все символы в полях отображаються корректно.. REPLACE FIO WITH STRTRAN меняю нечитаемые символы на нужные.И если бы не украинская заглавные буквы "І" и "Є"то проблема была бы решена- но такие фамилии как Іванов начинались бы с пропиской буквы.. вот тут у меня начинаются проблемы - не знаю как имя открытой дбф загнать в переменнуюмя ,а потом вернуть в имя дбф- нужно для того чтобы после манипуляций по изменению структуры дбф вернуть в конце процедуры ее первоначальное имя...Структуру меняю для того чтобы после copy to ..... TYPE SDF поднять на новую структуру дбф потом обработать украинские буквы из прописных в заглавные и вернуть в изначальную структуры дбф с ее же первоначальным именем.. может я что то заумное придумал.. но пока так.. если будут другие варианты готов расмотреть... а пока подскажите как загнать имя дбф в перемнную и вернуть потом..
...
Рейтинг: 0 / 0
18.01.2010, 12:48
    #36415713
Трезвый
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
dbf()
...
Рейтинг: 0 / 0
18.01.2010, 13:08
    #36415773
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Трезвый,

да именно это я пробовал... но не понял как вернуть имя.. там ведь прописыватся весь путь до дбф-ки ..
...
Рейтинг: 0 / 0
18.01.2010, 13:15
    #36415807
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Николай77Трезвый,

да именно это я пробовал... но не понял как вернуть имя.. там ведь прописыватся весь путь до дбф-ки ..

Код: plaintext
1.
JUSTFNAME(DBF())
...
Рейтинг: 0 / 0
18.01.2010, 13:16
    #36415810
имя открытой dbf-ки в переменную
Николай77,

тогда ALIAS()
...
Рейтинг: 0 / 0
18.01.2010, 14:55
    #36416069
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Народ...короче как пел В. Висоцкий - если туп как дерево.. то родишся баобабом... ложу свой пример ..исправте плиз..короче я пока просто хочу сделать копию дбф в другое место...если получится тогда буду менять структуру , имя и возвращать в конце процедуры исходное имя..Кодовая страница в примере дбф 866.Кстати только на этом примере понял что нужно доделать только одну букву "І"..
...
Рейтинг: 0 / 0
18.01.2010, 20:32
    #36416799
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Николай77,

Например, так:

************
USE ?
BROWSE

copy to name1
use

select 0
use name1
browse

repl all fio with strtran(fio, 'I', 'И')
repl all fio with strtran(fio, 'i', 'и')

BROWSE
use
****************

Там еще нужно много украинских букв поменять, а также Йо на Ё, но еще имена и отчества не совпадут с русскими, например, Юхим по укр. - это Ефим по русски и пр.
Так что ищи базу русских имен и отчеств и пиши переименовку.
...
Рейтинг: 0 / 0
19.01.2010, 09:44
    #36417252
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
igorbik,

Спасибо за помощь... но я все таки пошел немного по другому пути..щас немного занят другим.. но допишу код и покажу как реализовал..просто как говорят нужно хранить копии написаных прог чтобы потом не мучать других..
...
Рейтинг: 0 / 0
19.01.2010, 16:02
    #36418426
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Короче менять мне нужно только те символы что не читаются.. вечная проблема чисто украинских букв... в ексель все выводится из прогрммы корректно..но дбф с нечитаемыми символами.. вот поэтому банки просят откоректировать дбф...Сделал в итоге так :
SET DEFAULT TO C:\Employment\Source\foBank\
USE ?
BROWSE
CLEAR
? ALIAS( ) && Display the alias
STORE ALIAS( )to v1
copy to C:\Employment\Source\Correct\1.txt TYPE SDF fields nsc, fio, summa ,ved , name_b ,id_kod
CREATE TABLE C:\Employment\Source\Correct\21;
(nsc C(16),fio_cor C(1),fio C(49), summa N(12,2), ved N(8), name_b C(50),id_kod C(10))
APPEND FROM C:\Employment\Source\Correct\1.txt TYPE sdf
REPLACE FIO WITH STRTRAN(FIO,' _',' I') ALL
REPLACE FIO WITH STRTRAN(FIO,'_','│') ALL
REPLACE Name_b WITH STRTRAN(Name_b,'_','│') ALL
REPLACE fio_cor WITH STRTRAN(fio_cor,'i','▓') ALL
copy to C:\Employment\Source\Correct\11.txt TYPE SDF fields nsc,fio_cor, fio, summa , ved , name_b ,id_kod
CREATE TABLE C:\Employment\Source\Correct\22.dbf;
(nsc C(16),fio C(50), summa N(12,2), ved N(8), name_b C(50),id_kod C(10))
APPEND FROM C:\Employment\Source\Correct\11.txt TYPE sdf
SET DEFAULT TO C:\Employment\Source\Correct\
? v1
COPY TO (v1)
BROWSE
quit
Может не самый "умный" вариант...но я к этому и не стремился..главное работает.. щас доделаю чтобы отдать ползователям и забуду о этом..
...
Рейтинг: 0 / 0
19.01.2010, 17:16
    #36418662
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Что у Вас возвращает функции

Код: plaintext
1.
2.
?CPCURRENT()
?CPDBF()

Для того файла, который читается не правильно?
...
Рейтинг: 0 / 0
19.01.2010, 17:36
    #36418733
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
ВладимирМ,
извените я ваще не програмер... я гдето так слегка админ... на фоксе пишу чисто по необходимости.. избавится от рутины...и на Ваш вопрос не совсем знаю ответ.. вернее ваще не понимаю о чем Вы... если сделает прога не то имя файла.. то оператор скажет что не получилось...если о том то ли загружают.. и то ли получилось .. стоит два раза BROWSE чтобы удостоверится что то загрузил (элементарно сверяют с распечатаной ведомостью первый раз и второй все ли удачно прошло.. чисто визуально..) .. я так подозреваю ответил совсем не по теме .. но извените..
...
Рейтинг: 0 / 0
19.01.2010, 19:33
    #36419006
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Смысл в том, что FoxPro всегда работает в определенной кодовой странице. Если кодовая страница среды FoxPro отличается от кодовой страницы файла DBF, то как будут отображаться данные из этой таблицы зависит от ряда настроек.

Кодовая страница файла DBF физически записана в 29 байте заголовка DBF (первый бай имеет порядковый номер (смещение) равное 0). Если там ничего не записано, то возникают большие проблемы при интерпретации данных из такой таблицы.

Создание новых файлов в среде FoxPro естесственно происходит в кодовой странице самой среды FoxPro.

Вот я и спрашивал, что записано в 29 байте заголовка исходного DBF и в какой кодовой странице работает среда FoxPro (т.е. содержимое 29 байта заголовка нового файла DBF)

Да, для справки:

Можно использовать ASCII-коды нужных символов вместо их символьного отображения через функцию CHR(). Т.е. вместо, например

Код: plaintext
ChrTran(MyField, "а", "А")

написать

Код: plaintext
ChrTran(MyField, CHR( 224 ), CHR( 192 ))
...
Рейтинг: 0 / 0
20.01.2010, 08:51
    #36419506
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
ВладимирМ,

Может я и не прав но... после use ? выбираю нужную дбф (кстати когда ее формируем в программе то четко указываем 866 кодовую страницу) естественно после того как указали какую дбф открывать указываем руками кодовую страницу MS-DOS 866 и фокс отрывает ее в нужной нам кодировке... так что спрашивать фокса а в какой ?CPDBF() я думаю не совсем логично... руками то ведь указали кодовую страницу.. в приниципе можна было принидительно все это прописать в какой кодовой странице открывать.. но тогда оператор ваще не о чем думать не будет.. тогда если следовать такой же логике то нужно заремить и два BROWSE.. типа зачем утруждать оператора два раза лишних щелкать мышкой..Короче каждый пишет так как считает нужным.. и для меня главное результат.. работает и фиг с ним..а то что не по каким то канонам сделал.. ну извените не учил я этого в университетах...я инженер-механик по образованию..а механику что главное.. правильно -чтобы работало..
...
Рейтинг: 0 / 0
20.01.2010, 12:03
    #36420043
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
...
Рейтинг: 0 / 0
20.01.2010, 12:47
    #36420177
Николай77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
ВладимирМ,

спасибо почитаю на досуге.. только вот ехе файлы я не делаю.. не вижу надобности...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
20.04.2015, 13:43
    #38940572
styli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Я тут вмешалась в ваш разговор Для меня актуально на данный момент
Есть переменная zm0ff000f0f0f0f
надо скопировать txt файл с таким именем в txt файл с коротким названием zm0f.txt для дальнейшей работы в fox
Поможете?
...
Рейтинг: 0 / 0
20.04.2015, 13:51
    #38940578
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
styliЯ тут вмешалась в ваш разговор Для меня актуально на данный момент
Не надо вмешиваться не в тему. Надо поднимать отдельный топик со своим вопросом.
styliЕсть переменная zm0ff000f0f0f0f
надо скопировать txt файл с таким именем в txt файл с коротким названием zm0f.txt для дальнейшей работы в fox
Поможете?
Код: sql
1.
copy file (zm0ff000f0f0f0f) to zm0f.txt
...
Рейтинг: 0 / 0
20.04.2015, 14:00
    #38940596
styli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
а если и имя короткого файла в переменной
a='zm0f'
...
Рейтинг: 0 / 0
20.04.2015, 14:01
    #38940600
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Код: sql
1.
copy file (zm0ff000f0f0f0f) to (a + '.txt')
...
Рейтинг: 0 / 0
21.04.2015, 06:06
    #38941203
styli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
В том и проблема, что в foxpro простым копированием не копируются файлы с длинным именем
...
Рейтинг: 0 / 0
21.04.2015, 07:26
    #38941209
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
имя открытой dbf-ки в переменную
Проблема в том что тут телепатов нет. У меня копируются всякие файлы.

Напиши конкретно что хочешь сделать и что не получается. Например хочу скопировать файл "файл с длинным именем.txt" имя которого в переменной myfile в файл c именем "file.txt". Версию фокса укажи если не 9-й.
И заведи отдельный топик.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / имя открытой dbf-ки в переменную / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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