|
|
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Данные: VFP9, clipper 5.1, базы сетевые. Задача: Несколько раз в день из базы в clipper'e берутся данные, выборочно. Есть поля с текстом. Все берущиеся базы в 866. Вопрос: В хелпе прочитал, что к текущей cpodepage(1251) VFP9 переводит автоматом. Ан нет. Не подскажите, что нужно сделать, а то постоянно пользоваться "CPCONVERT" в запросах (и не только) муторно. Доп.Инфо: Базу открываю в SHARED, пользуюсь SELECT, в сonfig.fpw стоит codepage = 1251. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 18:52 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Так поставь codepage=866 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 18:56 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Так основная программа работает с 1251 и 866 мне НЕ нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 19:03 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
У таблиц Clipper по умолчанию вообще не проставлен признак кодовой страницы. FoxPro автоматом никогда не выставляет признак кодовой страницы. Хотя, при определенных настройках он может спросить (вывести диалог) какой признак кодовой страницы проставить. В поставке FoxPro есть такая программа CPZERO.PRG находится (каталог FoxPro)\Tools\CPZERO\CPZERO.PRG При помощи нее можно выставить нужный признак кодовой страницы DO CPZERO.PRG WITH "MyTable.dbf",866 На работу программы Clipper - это никак не повлияет. Следует только помнить, что для такой установки необходим единоличный доступ к таблице. Проверить текущую кодовую старницу таблицы можно после ее открытия функцией ?CPDBF() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 19:06 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Да, это помогло (а я думал чего это CPDBF выдает 0). НО ... эти дурацкие файлы создаются 2-3 раза в месяц clipper'ом (причем в других директориях и естественно с 0 CP). А каждый раз ездить с фоксом и конвертить не могу (далеко), да и в офисе сидят девочки-одуванчик им не "по зубам". Возможно ли это сделать програмно. Например как-то принудительно при открытии сказать что он в 866 CP? P.S. Clipper программу курочить нельзя, нет исходников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 19:31 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Странный ты какой-то. Тебе дали программу. Какие проблемы сделать пункт меню, при выборе которого и будет запускаться эта программа устанавливая у всех таблиц нужную кодовую страницу? Можешь ее автоматом запускать, если оказалось что CPDBF()=0. Ну, там обработчик ошибок навесить, ADIR() прикрутить и т.п. Кстати, из всей это программы по сути нужны только несколько строчек Код: plaintext 1. 2. 3. 4. Здесь m.fname - это имя файла. Можно с путем доступа. CHR(101) - это как раз код 866 кодовой страницы Все остальное в этой программе различные проверки и настройки. На всякий случай. Открыть программу CPZERO.PRG на просмотр можно также как и обычный PRG-файл Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2005, 21:01 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Clipper часто просто обнуляет кодовую страницу у своих файлов - не только при создании... Я когда-то делал так: при ОТКРЫТИИ баз в VFP проверял кодовую страницу, если нулевая - ставим нужную и работаем... Нет необходимости в ОТДЕЛЬНОМ пункте меню (хотя можно и сделать...), при траблах (clipper влез, обнулил...) достаточно ПЕРЕЗАПУСТИТЬ программу VFP (на это девочек-одуванчиков хватит :D) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 08:20 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Напиши маленькую процедурку, в которой проверяй наличие в заголовке открываемой таблицы признака кодовой страницы. Сlipper При обработке таблицы файл признака запирает его. Все фоксовские таблицы его имеют и поэтому этот разряд заголовка заполнен, если разряд не заполнен - это таблица DOC проставь CP866. За основу возьми код CPZERO.PRG. Если название таблицы известно, то посмотри в сторону команды COPY TO ..... Кстати, а кто тебе запрещает задачу решить наоборот - после формирования таблицы предназначенной для обработки в фоксе -прописать там сразу после ее закрытия признак кодовой таблицы 866. Пример тебе дан выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 09:11 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо. Решил без меню, просто при открытии проверить и переоткрыть. Жалко Код: plaintext Только меня очень удивило (особенно после просмотра исходника CPZERO.PRG), что в фоксе нет стандартного действия для указания страницы, хотя при открытии отдельной базы появляется диалог выбора CP. Странно это возможность есть, а программной реализации нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 10:20 |
|
||
|
Опять CODEPAGE
|
|||
|---|---|---|---|
|
#18+
StarpomТолько меня очень удивило (особенно после просмотра исходника CPZERO.PRG), что в фоксе нет стандартного действия для указания страницы, хотя при открытии отдельной базы появляется диалог выбора CP. Странно это возможность есть, а программной реализации нет. А как ты думаешь, ЧТО делает этот диалог? Он делает все то же самое. При этом диалог возникает только при выполнении следующих условий: Включена настройка SET CPDIALOG ON Таблица открывается в режиме EXCLUSIVE В заголовке таблицы нет признака кодовой страницы Т.е., по сути, это примерно такая последовательность действий: Код: plaintext 1. 2. 3. 4. 5. Автоматизировать это невозможно! На каком основании программа должна модифицировать структуру заголовка таблицы? А если очень надо, то вот тебе инструмент (программа CPZERO.PRG) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2005, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=320&tid=1594177]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 432ms |

| 0 / 0 |
