powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Уменьшение ширины столбца по макс. длине строки
3 сообщений из 3, страница 1 из 1
Уменьшение ширины столбца по макс. длине строки
    #35150979
zavhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Очень нужен совет, хочу написать скрипт для редактирования файлов dbf ,а конкретно обрезания ширины столбца по макс. длине выражения в нем, вот что вышло:

USE ?
STORE ALIAS() TO cTabName
nCnt = AFIELD(arr)
FOR i=1 to nCnt
IF TYPE(arr(i,1))='C'
SELECT MAX(LEN(ALLTRIM(&arr(i,1)))) FROM cTabName
SELECT query
LOCATE FOR NOT EMPTY(max_exp_1)
cwidth=max_exp_1+2
CLEAR query
SELECT cTabName
ALTER TABLE cTabName alter COLUMN &arr(i,1) C (cwidth)
endif
ENDFOR

SELECT (cTabName)
GO TOP
BROWSE

Но проблема в том что программа стопорится на запросе query и дальше ничего не происходит,подскажите, где ошибка?
...
Рейтинг: 0 / 0
Уменьшение ширины столбца по макс. длине строки
    #35151001
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zavhozДобрый день!
Очень нужен совет, хочу написать скрипт для редактирования файлов dbf ,а конкретно обрезания ширины столбца по макс. длине выражения в нем,

Уже странная задача. Для таких дел есть поля типа varchar.

вот что вышло:

USE ?
STORE ALIAS() TO cTabName
nCnt = AFIELD(arr)
FOR i=1 to nCnt
IF TYPE(arr(i,1))='C'
SELECT MAX(LEN(ALLTRIM(&arr(i,1)))) FROM cTabName

B вот тут, наверняка, выскакивает окно browse? но отнюдь не то, которое должно выводится по последней команде, не так ли?
А куда по умолчанию фоксу поместить результат запроса? Правильно, в полном соответствии с докой, в окно browse. А чтоб такого не было, надо ему явно указать получателя результата запроса. Например, дописав конце into cursor query

SELECT query

И вот эта команда совершенно лишняя.

LOCATE FOR NOT EMPTY(max_exp_1)
cwidth=max_exp_1+2
CLEAR query
SELECT cTabName
ALTER TABLE cTabName alter COLUMN &arr(i,1) C (cwidth)
endif
ENDFOR

SELECT (cTabName)
GO TOP
BROWSE

Но проблема в том что программа стопорится на запросе query и дальше ничего не происходит,подскажите, где ошибка?
Может просто всем у всех полей типа char поменять тип на varchar и не заниматься ерундой?
...
Рейтинг: 0 / 0
Уменьшение ширины столбца по макс. длине строки
    #35151049
zavhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я юзаю fox8,там нет такого типа поля, это для более свежих версий?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Уменьшение ширины столбца по макс. длине строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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