On-line: Haz, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост N: 4843
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.05.15 17:28. Заголовок: "M" => "C"


Может кто писал такое , не хочется велик изобретать.
Нужно просканировать папку(текущую) с DBF файлами.
Выяснить в каких их них есть MEMO поля , при чем в одном DBF
может быть не одно MEMO поле.
И затем MEMO поля преобразовать в тип "C" с длиной 250 (не убив при этом базы) ;)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 4 [только новые]


постоянный участник




Пост N: 637
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.15 18:02. Заголовок: была рыба, на подобн..


была рыба, на подобное:
 

lSet := Set( _SET_DELETED, .F. )

aDir := Directory(cPath+"*.dbf")

nK := len(aDir)

FOR nI := 1 TO nK

cFile := aDir[ nI ][1]

USE ( cPath + cFile ) NEW ALIAS INP
nInp := select()
aStru := dbStruct()
dbGotop()

nM := AScan(aStru, {|x| x[2] == 'M' }) // memo поле есть\нет

IF nM > 0
k := len(aStru)
FOR i := 1 TO k
IF aStru[ i ][2] == 'M'
aStru[ i ][2] := 'C'
aStru[ i ][3] := 250
ENDIF
NEXT
ENDIF

dbCreate(cPath+'_'+cFile, aStru, 'DBFCDX', .T., 'OUT')

DO WHILE ! ( nInp )->( EOF() )
dbAppend()
FOR i := 1 TO k
FieldPut(i, ( nInp )->( FieldGet(i) ))
NEXT

IF ( nInp )->( deleted() ); dbDelete()
ENDIF

( nInp )->( dbSkip(1) )
ENDDO
dbCloseArea()
( nInp )->( dbCloseArea() )

NEXT

Set( _SET_DELETED, lSet ) // SET DELETED OFF


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4202
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.05.15 18:08. Заголовок: Не писал... Но думаю..


Не писал... Но думаю придётся тебе из базы в базу копировать чтобы данные не потерялись...
aStru := dbStruct()
nMemo := 0 ; aEval(aStru, {|x,e| nMemo += iif(x[2] == 'M', 1, 0)}) // кол-во МЕМО-полей в БД
IF nMemo > 0

DO WHILE ! EOF()
FOR i := 1 to len(aStru)
IF aStru[ i ][2] == 'M'
j := FieldGet(i)
// твоя обработка
ENDIF
NEXT
SKIP
ENDDO

ENDIF

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 638
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.15 18:10. Заголовок: PS. IF nM > ..


PS.
IF nM > 0
k := len(aStru)
строки поменять местами
k := len(aStru)
IF nM > 0


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4844
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.05.15 18:41. Заголовок: SergKis Спасибо , с..


SergKis
Спасибо , самое оно. Довел слегка только.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 684
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет