powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / APPEND FROM ARRAY ArrayName [FOR lExpression]
13 сообщений из 13, страница 1 из 1
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073776
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация:
Необходимо перезаполнить таблицу из массива

Код: vbnet
1.
2.
	nrecordArhivFile=reccount()
replace FROM ARRAY atov  	



а потом добавляю или удаляю строки
Код: vbnet
1.
2.
3.
4.
5.
IF nrecordArhivFile<Alen(atov,1) THEN 
	APPEND FROM ARRAY atov FOR 
ELSE 

ENDIF


Вопрос:
Надо Как то определить с какой по какую строчку массива добавить значения
это можно задать в выражении [FOR IExpression] но как сделать не могу сообразить,
да и примера найти не смог.
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073793
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr29Надо Как то определить с какой по какую строчку массива добавить значенияТак ведь кроме вас никто не знает, "с какой по какую строчку массива"нужно вести обработку...
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073820
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

nrecordArhivFile=reccount()
Мы определяем количество записей в таблице
соответственно с nrecordArhivFile+1 по конец массива Alen(atov,1)
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073875
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуйте FOR BETWEEN(nrecordArhivFile+1 по конец массива Alen(atov,1))
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073892
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viart,
попробовал вариант
APPEND FROM ARRAY atov FOR BETWEEN(atov,nrecordArhivFile+1,Alen(atov,1))
он не работает.
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073912
Viart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИМХО: насколько помню append добавляет 1 запись, а по условию for выходит больше, там или цикл нужно делать, либо Insert SQL.
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073961
Alexandr29,

Help по Append from Array...
FOR lExpression
Specifies a condition for appending records from the array. lExpression must contain the name of a target field in its conditional expression.
Before a row of the array is appended to a record in the table, the array element corresponding to the target field specified in lExpression is checked to determine whether that array element meets the condition in lExpression. If the array element satisfies the condition, a record is appended.

If the array element does not satisfy the condition, the array row is not appended and the next row in the array is checked to determine whether it meets the condition.

То есть, for служит для проверки того, чтобы значение из массива, которое будет сохранено в поле таблицы удовлетворяло некоторому условию. Например,
Код: sql
1.
2.
3.
select tbl
Append from array ara for tbl.summa > 0 
&& строки из массива, где отрицательные значения соответствуют полю summa, не попадут в таблицу
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073962
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viart,
Нет, может добавлять несколько записей, проверял.
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38073963
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr29Viart,
попробовал вариант
APPEND FROM ARRAY atov FOR BETWEEN(atov,nrecordArhivFile+1,Alen(atov,1))
он не работает.Потому что в APPEND FROM ARRAY:
Help APPEND FROM ARRAYFOR lExpression
Задает условие добавления записей из массива. Выражение lExpression должно содержать имя поля назначения в его условном выражении.

Перед добавлением строки массива к записи в таблице проверяется элемент массива, который соответствует полю назначения, заданному выражением lExpression. Если элемент массива удовлетворяет условию lExpression, запись добавляется.

Если элемент массива не удовлетворяет этому условию, строка массива не добавляется и проверяется следующая строка массива - удовлетворяет она условию или нет.

ViartИМХО: насколько помню append добавляет 1 запись, а по условию for выходит больше, там или цикл нужно делать, либо Insert SQL.
Help APPEND FROM ARRAYДобавляет одну запись в выбранную в данный момент таблицу для каждой строки массива и заполняет каждую запись данными из соответствующей строки массива.


INSERT SQL тоже как-то не очень...

Тогда бубен:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
[SRC PLSQL]SELECT myTable
COPY STRUCTURE TO tmpTable
USE tmpTable IN 0
SELECT tmpTable
APPEND FROM ARRAY atov
SELECT myTable
APPEND FROM tmpTable FOR RECNO('tmpTable')>nrecordArhivFile
USE IN myTable
ERASE myTable.DBF

:))
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38074020
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извращенцы, ёптыть... отрубаете от массива кусок с помощью acopy(), аппендите его, и всё!
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38074162
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

Пробовал, размер массива остается тем же, только конец заполняется .f.
ACOPY( atov,atov_add,5*nrecordArhivFile+1,-1)
Так что APPEND FROM ARRAY atov_add For тоже надо писать условие

Вариант Станислав С...кий мне кажется самый грамотный, я только его ещё не проверял
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38074171
Alexandr29Вариант Станислав С...кий мне кажется самый грамотный, я только его ещё не проверял
Я ничего не предлагал, просто попытался проиллюстрировать примером статью из хелпа....
...
Рейтинг: 0 / 0
APPEND FROM ARRAY ArrayName [FOR lExpression]
    #38074195
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий, это мне и надо было - пример
APPEND FROM ARRAY atov FOR ARHIVFILE.id>nrecordArhivFile
условие работает. вопрос закрыт.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / APPEND FROM ARRAY ArrayName [FOR lExpression]
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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