Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как обновить одно поле одной конкретной записи? / 8 сообщений из 8, страница 1 из 1
07.12.2004, 15:33
    #32816814
vitalenergy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
В цикле прохожу по таблице
n1reccount=reccount()
for i=1 to n1reccount
goto i
проверяю определенное условие и если оно выполняется нужно поменять значение одного поля текущей записи
Подскажите команду?
...
Рейтинг: 0 / 0
07.12.2004, 15:48
    #32816873
Solmyr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
Ну насколько я помню есть REPLACE FOR.
replace field1 with var1 for <а здесь ваше условие>
и не надо никаких циклов.
А кстати, какой Fox?
...
Рейтинг: 0 / 0
07.12.2004, 15:49
    #32816876
как обновить одно поле одной конкретной записи?
replace Fld1 with Val1

или без for

update Alias set Fld1 = Val1 where <условие>
...
Рейтинг: 0 / 0
07.12.2004, 15:57
    #32816904
vitalenergy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
Как я понимаю эти команды обновляют множество записей по определенному условию - это не очень удобно в моем случае, даже очень неудобно. Мне же нужно именно текущую запись изменить.
...
Рейтинг: 0 / 0
07.12.2004, 16:04
    #32816923
vitalenergy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
Дело в том, что условие тоже не простое: нужно сравнить два поля записи и если расхождение меньше,чем на два символа, выбрать текущую запись в другую таблицу.
replace for может с натяжкой и пойдет, но это уже по-моему некоторое извращение
Наверное нужно будет писать функцию
...
Рейтинг: 0 / 0
07.12.2004, 18:05
    #32817325
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
как-то так
select * from t1 into table t2 where (len(alltrim(f1))-len(alltrim(f2)))<2

или примерно так
select * from t1 into table t2 where f(f1,f2)<2
где f ваша функция
...
Рейтинг: 0 / 0
07.12.2004, 18:13
    #32817340
AiSK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
vitalenergyВ цикле прохожу по таблице
n1reccount=reccount()
for i=1 to n1reccount
goto i
проверяю определенное условие и если оно выполняется нужно поменять значение одного поля текущей записи


Довольно странно - вам известно о существовании SCAN ... ENDSCAN (необязательно подсчитывать число записей и использовать цикл по FOR)?
SCAN
....
здесь и проверяйте ваше условие и меняйте значение
....
ENDSCAN

Можно
GO TOP ( если нужно начинать сканирование с какой хотите позиции, не используйте GO TOP)
DO WHILE NOT EOF()
....
здесь и проверяйте ваше условие и меняйте значение
....
SKIP
ENDDO

Впрочем, непонятно. чем вас групповой Replace не устраивает?
...
Рейтинг: 0 / 0
07.12.2004, 22:09
    #32817551
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить одно поле одной конкретной записи?
Если не догадались с первого раза, то команда REPLACE без FOR-условия будет модифицировать только одну текущую запись
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как обновить одно поле одной конкретной записи? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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