powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Memo
50 сообщений из 50, показаны все 2 страниц
Memo
    #38426536
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как содержимое мемо поля перенести построчно в таблицу?я делаю через alines(), в результате в таблицу заносится только первая строка массива,также кол-во строк в получившейся таблице соответствует кол-ву строк массива...
...
Рейтинг: 0 / 0
Memo
    #38426545
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

ALINES() - Выполняет копирование каждой строки символьного выражения или memo-поля в соответствующий элемент массива

А как в таблицу заносишь мы должны сами догадаться?
...
Рейтинг: 0 / 0
Memo
    #38426679
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aarray=ALINES (Marray, мемополе, chr(13)+chr(10))
create table xxx (jj c(254))
for i=1 to lAarr
str=aMarr [i,1]
select xxx
append blank
replace jj with str
...
Рейтинг: 0 / 0
Memo
    #38426682
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitaryAarray=ALINES (Marray, мемополе, chr(13)+chr(10))
create table xxx (jj c(254))
for i=1 to lAarr
str=aMarr [i,1]
select xxx
append blank
replace jj with str

В chr(13)+chr(10) уверенность есть?
...
Рейтинг: 0 / 0
Memo
    #38426707
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
строки в мемополе попали из текстовиков,в них окончание строк откат каретки... вроде бы... по этим символам и хотел строки из мемо распихать в таблицу
...
Рейтинг: 0 / 0
Memo
    #38426734
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

Ну так проверь - и будет понятно.
...
Рейтинг: 0 / 0
Memo
    #38426749
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для разбора на строки третий параметр ALINES() не надо указывать.
По дефолту понимает оба варианта chr(13) + chr(10) и chr(13)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
? '*'
lcText = '1' + chr(13) + '2' + chr(13) + '3' + chr(13)
for i = 1 to alines(la1, lcText)
	? la1[i]
endfor
lcText = '1' + chr(13) + chr(10) + '2' + chr(13) + chr(10) + '3' + chr(13) + chr(10)
for i = 1 to alines(la2, lcText)
	? la2[i]
endfor
? '*'
...
Рейтинг: 0 / 0
Memo
    #38426761
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовал внести в таблицу строки из массива через
append blank
replace yy with substr ()
таже хрень вносится только первая строка мемополя во все строчки таблицы, я где то неправильно из массива читаю в таблицу и никак не въеду где...хелп..
...
Рейтинг: 0 / 0
Memo
    #38426767
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в массив корректно заношу,проверено
...
Рейтинг: 0 / 0
Memo
    #38426771
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
окончание строки chr(10)+chr(13), проверено
...
Рейтинг: 0 / 0
Memo
    #38426772
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

FOR i = 1 to ALEN(mArray, 1)
INSERT INTO myTable (myField) VALUES (mArray(i))
ENDFOR
...
Рейтинг: 0 / 0
Memo
    #38426775
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGgrommilitary,

FOR i = 1 to ALEN(mArray, 1)
INSERT INTO myTable (myField) VALUES (mArray(i))
i = i + 1
ENDFOR
...
Рейтинг: 0 / 0
Memo
    #38426780
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGIgorNGgrommilitary,

FOR i = 1 to ALEN(mArray, 1)
INSERT INTO myTable (myField) VALUES (mArray(i))
i = i + 1
ENDFOR
так через строчку будет вставлять
...
Рейтинг: 0 / 0
Memo
    #38426783
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitaryпопробовал внести в таблицу строки из массива через
append blank
replace yy with substr ()
таже хрень вносится только первая строка мемополя во все строчки таблицы, я где то неправильно из массива читаю в таблицу и никак не въеду где...хелп..
код целиком покажи, телепатов тут нет.

Возможно ENDFOR забыл.
...
Рейтинг: 0 / 0
Memo
    #38426791
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо огромное парни!!!с вашей помощью заработало!
...
Рейтинг: 0 / 0
Memo
    #38426866
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
парни а почему по alines() в массив попадают строки только из одного мемополя в то время как их далеко не одно?в работу берется только последнее memo...
...
Рейтинг: 0 / 0
Memo
    #38426924
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

Ну код-то полностью приведи. Может, у тебя SCAN нет, нам же не видно.
...
Рейтинг: 0 / 0
Memo
    #38426927
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что ты написал код для обработки мемополя одной записи. Чтобы обработать мемополе для всех записей, надо перебрать все записи.
Оберни в цикл SCAN ... ENDSCAN
...
Рейтинг: 0 / 0
Memo
    #38426977
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
scan..endscan не использовал,пытался подсчитать кол-во записей в мемополе,занести это в массив и читать содержимое по порядку проделывая вышеупомянутое,ниче не вышло пока...а scan..endscan каким образом юзать?сорри пишу с телефона код тяжко вставлять((
...
Рейтинг: 0 / 0
Memo
    #38426984
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

В мемо-поле НЕТ записей. Наоборот, в каждой записи имеется мемо-поле, содержащее какой-либо текст. Вот и нужен цикл по всем записям:

SCAN
твой код
ENDSCAN
...
Рейтинг: 0 / 0
Memo
    #38427014
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если например в коде есть куски которые не нужно зацикливать по scan..endscan, их можно пропустить как то?
...
Рейтинг: 0 / 0
Memo
    #38427035
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

Значит эти куски должны быть вне цикла.
...
Рейтинг: 0 / 0
Memo
    #38427044
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо,пробую сделать...
...
Рейтинг: 0 / 0
Memo
    #38427102
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary каким образом юзать?
"Лучше день потерять потом за час долететь" (с)

Возьми нормальную книгу по фоксу и почитай. Целиком почитай.
...
Рейтинг: 0 / 0
Memo
    #38427106
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitary,

А вообще, судя по соседней теме, что-то нужно подправить в консерватории.
Сначала их текстовых файлов в memo-поле, потом из memo-поля - построчно в таблицу.
Задача-то какая?
...
Рейтинг: 0 / 0
Memo
    #38427196
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, полностью согласен! Я читаю попутно матчасть, какие-то старые книженции есть под рукой да инет на трубке...А задача такая:
1. Поступаемый материал в текстовом виде закинуть в таблицу (содержимое текстовых файлов четкой структуры не имеет)
2. Содержимое необходимо раскидать по полям
3. Вести накопление этого материала
4. Вероятно появится необходимость поиска

Это то, что необходимо сделать в первую очередь, дальше по мере необходимости...
...
Рейтинг: 0 / 0
Memo
    #38427204
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так читай интенсивней или в форум работа и там тебе все сделают за умеренное вознаграждение.
...
Рейтинг: 0 / 0
Memo
    #38427206
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно, просто интересно самому сделать...
...
Рейтинг: 0 / 0
Memo
    #38427494
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот этоgrommilitaryсодержимое текстовых файлов четкой структуры не имеетвот с этим
grommilitaryСодержимое необходимо раскидать по полямкак стыкуется? чёткий алгоритм "раскидывания" (в зависимости от содержимого) есть?
...
Рейтинг: 0 / 0
Memo
    #38427671
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirвот этоgrommilitaryсодержимое текстовых файлов четкой структуры не имеетвот с этим
grommilitaryСодержимое необходимо раскидать по полямкак стыкуется? чёткий алгоритм "раскидывания" (в зависимости от содержимого) есть?

chr(13) + chr(10) :)
...
Рейтинг: 0 / 0
Memo
    #38427721
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да действительно, единственный признак это окончание строки,т.е. целиком эти строки я помещаю в таблицу,а дальше необходимо уже определенные подстроки из этих строк раскидать по полям другой таблицы...
...
Рейтинг: 0 / 0
Memo
    #38428018
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitary,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
PRIVATE I, N

* открываем таблицу со списком файлов
USE ftmp IN 0

* создаем таблицу для текстовых файлов в построчном представлении
SELECT 0
CREATE TABLE ltmp (fnum N(5), lnum N(5), fline C(254))

* заносим содержимое первого файла из таблицы файлов
* в таблицу с построчным представлением
* fnum-номер файла, lnum-номер строки в файле
N = memlines(ftmp.fcontent)
FOR I = 1 TO N
  APPEND BLANK
  REPLACE fnum WITH 1, ;
          lnum WITH I, ;
          fline WITH mline(ftmp.fcontent,I)
ENDFOR

* закрываем таблицы
USE IN ftmp
USE IN ltmp
...
Рейтинг: 0 / 0
Memo
    #38428070
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасиб тебе!у меня затык вот в чем.в таблице мемополе в нем записи.я заношу в массив по alines() строки из содержимого мемополя,далее подсчитываю кол-во строк в этом массиве по alen() и по циклу эти строки вношу в таблицу.не могу сообразить каким образом закинуть в массив все строки из всех записей мемополя.советовали через scan, не вшарю куда его здесь воткнуть?хелп
...
Рейтинг: 0 / 0
Memo
    #38428098
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitaryв таблице мемополе в нем записинаоборот
в таблице записи, в каждой записи - мемо-поле
grommilitaryя заношу в массив по alines() строки из содержимого мемополяиз одной записи, значит...
grommilitaryне могу сообразить каким образом закинуть в массив все строки из всех записей мемополя.советовали через scan, не вшарю куда его здесь воткнуть?"здесь" - это где? показывайте свой код для одного поля, поможем.
...
Рейтинг: 0 / 0
Memo
    #38428100
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirдля одного полятьфу, для одной записи
...
Рейтинг: 0 / 0
Memo
    #38428147
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create ftmp (fname c(30), fcontent M, ftemp c(254))
sele ftmp
=alines (aMemoArray, fcontent)
for i=1 to alen (aMemoArray,1)
insert into ftmp(ftemp) values (aMemoArray(i))
endfor
use in ftmp
...
Рейтинг: 0 / 0
Memo
    #38428157
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitaryспасиб тебе!у меня затык вот в чем.в таблице мемополе в нем записи.я заношу в массив по alines() строки из содержимого мемополя,далее подсчитываю кол-во строк в этом массиве по alen() и по циклу эти строки вношу в таблицу.не могу сообразить каким образом закинуть в массив все строки из всех записей мемополя.советовали через scan, не вшарю куда его здесь воткнуть?хелп

В моем коде показано, как обработать ОДНО мемо-поле, для этого никакие SCAN не нужны. Если тебе нужно заполнить таблицу с построчным представлением файлов содержимых ВСЕХ мемо-полей, нужно проделать SCAN по таблице файлов, поместив вышеупомянутый код внутрь SCAN .. ENDSCAN и соответствующим образом его изменить для правильной нумерации файлов
...
Рейтинг: 0 / 0
Memo
    #38428186
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я и ставил скан на вышеприведенный код,только чет нет нужного результата.без скана в работу берется последняя запись,со скан-первая...
...
Рейтинг: 0 / 0
Memo
    #38428264
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
otorva1,

у меня код работает также только я в первоначальную таблицу результат сунул, а как для всех теперь сделать?
...
Рейтинг: 0 / 0
Memo
    #38428274
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я выше свой код привел,подскажите как для него скан верно сделать..
...
Рейтинг: 0 / 0
Memo
    #38428323
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitaryя выше свой код привел,подскажите как для него скан верно сделать..тот код читает запись из массива и пишет данные в таблицу, а вы говорили о коде, делающем прямо противоположное - читающем запись из таблицы и раскидывающем её построчно в массив
приводите свой код, делающий это - поможем, а пока лично у меня создаётся впечатление, что вы вообще не понимаете что выложенный вами код делает...
...
Рейтинг: 0 / 0
Memo
    #38428480
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitarycreate ftmp (fname c(30), fcontent M, ftemp c(254))
sele ftmp
=alines (aMemoArray, fcontent)
for i=1 to alen (aMemoArray,1)
insert into ftmp(ftemp) values (aMemoArray(i))
endfor
use in ftmp

это и есть мой код, он выполняет то, что нужно,только для одного мемо,а необходимо сделать для всех мемо,находящихся в таблице и записать в другое поле или таблицу,в данном случае строки мемополя заносятся в массив, а оттуда в поле ftemp
...
Рейтинг: 0 / 0
Memo
    #38428491
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grommilitarygrommilitarycreate ftmp (fname c(30), fcontent M, ftemp c(254))
sele ftmp
=alines (aMemoArray, fcontent)
for i=1 to alen (aMemoArray,1)
insert into ftmp(ftemp) values (aMemoArray(i))
endfor
use in ftmp

это и есть мой код, он выполняет то, что нужно,только для одного мемо,а необходимо сделать для всех мемо,находящихся в таблице и записать в другое поле или таблицу,в данном случае строки мемополя заносятся в массив, а оттуда в поле ftemp

Ну да, создаешь пустую таблицу, читаешь якобы memo_поле и в эту же таблицу куча инсертов и все это в цикле scan.
...
Рейтинг: 0 / 0
Memo
    #38428495
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitary, вот код, который собирает содержимое текстовых файлов данной папки в мемо-поле одной таблицы, а затем переписывает текст построчно в другую таблицу
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
PRIVATE N, I, dflt_dir, fnm

dflt_dir = 'C:\AAA\'

* заносим инф. о тестовых файлах заданной папки в массив
DIMENSION dir_arr[1]
N = adir(dir_arr, dflt_dir + '*.TXT')
IF N = 0
  RETURN
ENDIF

* создаем таблицу для имен и содержимого файлов
SELECT 0
CREATE TABLE ftmp (fnum N(5), fname C(254), fcontent M)

* заносим инф. о файлах из массива в таблицу
FOR I = 1 TO N
  fnm = m.dflt_dir + dir_arr[I,1]
  APPEND BLANK
  REPLACE fname WITH m.fnm, ;
          fnum WITH I
  APPEND MEMO fcontent FROM (m.fnm) OVERWRITE
ENDFOR

* создаем таблицу для текстовых файлов в построчном представлении
SELECT 0
CREATE TABLE ltmp (fnum N(5), lnum N(5), fline C(254))

* заносим содержимое первого файла из таблицы файлов
* в таблицу с построчным представлением
* fnum-номер файла, lnum-номер строки в файле
SELECT ftmp
GO TOP
SCAN
  SELECT ltmp
  N = memlines(ftmp.fcontent)
  FOR I = 1 TO N
    APPEND BLANK
    REPLACE fnum WITH ftmp.fnum, ;
            lnum WITH I, ;
            fline WITH mline(ftmp.fcontent,I)
  ENDFOR
ENDSCAN

* закрываем таблицы
USE IN ftmp
USE IN ltmp


...
Рейтинг: 0 / 0
Memo
    #38428513
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо! у меня все также почти в коде,только единственное,что по mline() из мемополя будут выдергиваться строки как я понимаю без возможности указать разделитель,а по aline() у меня получается раскидать построчно в таблицу по признаку конца строки и переходу на след. или может в вашем примере это возможно?
...
Рейтинг: 0 / 0
Memo
    #38428553
otorva1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitaryспасибо! у меня все также почти в коде,только единственное,что по mline() из мемополя будут выдергиваться строки как я понимаю без возможности указать разделитель,а по aline() у меня получается раскидать построчно в таблицу по признаку конца строки и переходу на след. или может в вашем примере это возможно?
Может, и возможно, только зачем? Для извлечения строк из мемо-поля лучше пользоваться функцией, специально для этого предназначенной. Еще лучше извлекать строки для обработки прямо из текстового файла
...
Рейтинг: 0 / 0
Memo
    #38428573
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и кстати по memlines() существенно дольше думает прога...получается если делать по alines() не удасться засунуть в scan..endscan?
...
Рейтинг: 0 / 0
Memo
    #38428602
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grommilitaryпо mline() из мемополя будут выдергиваться строки как я понимаю без возможности указать разделитель,а по aline() у меня получается раскидать построчно в таблицу по признаку конца строки и переходу на след.
решилось через set memowidth to
...
Рейтинг: 0 / 0
Memo
    #38428922
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если исходно речь идет о некоем текстовом файле, то "раскидать" его по записям таблицы можно одной единственной командой вообще без циклов

Код: sql
1.
2.
3.
4.
5.
6.
7.
create cursor Test (f1 C(254))
APPEND FROM MyFile.txt TYPE SDF

* Смотрим, что получилось
select test
go top
browse nowait



Опция SDF говорит о том, что файл надо рассматривать как файл в котором записаны "поля" фиксированной ширины. Т.е. одна строка файла - это одна запись таблицы, а одно "поле" - это столько символов, сколько символов указано в типе поля принимающей таблицы.

Если длина одной строки в текстовом файле может быть больше 254 символов, то достаточно просто создать нужное количество полей в принимающем курсоре

Код: sql
1.
2.
create cursor Test (f1 C(254), f2 c(254), f3 c(254), f4 c(254))
APPEND FROM MyFile.txt TYPE SDF




Если все-таки хочется использовать массив, то есть специальные команды групповой вставки APPEND FROM ARRAY и INSERT INTO ... FROM ARRAY. Единственное условие для вставки именно многих записей заключается в том, что массив должен быть определен как двумерный. А команда ALINES() создает одномерный массив. Но это препятствие легко можно преодолеть просто переопределив массив после его создания

Код: sql
1.
2.
3.
4.
5.
6.
7.
=Alines(aTest, MyTable.MyMemo)
* Делаю массив двумерным, но содержащим только 1 столбец
Dimension aTest(alen(aTest),1)

* Закачка в курсор
create cursor test (f1 C(254))
append from array aTest
...
Рейтинг: 0 / 0
Memo
    #38429254
grommilitary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо!буду знать
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Memo
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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