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

Код: 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
11.12.2012, 11:40
    #38073793
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
Alexandr29Надо Как то определить с какой по какую строчку массива добавить значенияТак ведь кроме вас никто не знает, "с какой по какую строчку массива"нужно вести обработку...
...
Рейтинг: 0 / 0
11.12.2012, 11:52
    #38073820
Alexandr29
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
tanglir,

nrecordArhivFile=reccount()
Мы определяем количество записей в таблице
соответственно с nrecordArhivFile+1 по конец массива Alen(atov,1)
...
Рейтинг: 0 / 0
11.12.2012, 12:12
    #38073875
Viart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
попробуйте FOR BETWEEN(nrecordArhivFile+1 по конец массива Alen(atov,1))
...
Рейтинг: 0 / 0
11.12.2012, 12:20
    #38073892
Alexandr29
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
Viart,
попробовал вариант
APPEND FROM ARRAY atov FOR BETWEEN(atov,nrecordArhivFile+1,Alen(atov,1))
он не работает.
...
Рейтинг: 0 / 0
11.12.2012, 12:30
    #38073912
Viart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
ИМХО: насколько помню append добавляет 1 запись, а по условию for выходит больше, там или цикл нужно делать, либо Insert SQL.
...
Рейтинг: 0 / 0
11.12.2012, 12:48
    #38073961
APPEND FROM ARRAY ArrayName [FOR lExpression]
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
11.12.2012, 12:49
    #38073962
Alexandr29
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
Viart,
Нет, может добавлять несколько записей, проверял.
...
Рейтинг: 0 / 0
11.12.2012, 12:49
    #38073963
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
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
11.12.2012, 13:15
    #38074020
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
извращенцы, ёптыть... отрубаете от массива кусок с помощью acopy(), аппендите его, и всё!
...
Рейтинг: 0 / 0
11.12.2012, 14:16
    #38074162
Alexandr29
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
APPEND FROM ARRAY ArrayName [FOR lExpression]
tanglir,

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

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


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