Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как найти определённую запись и отредактировать её через Replace.  [new]
Never74
Member

Откуда:
Сообщений: 6
Приветствую всех, у меня возникла проблема.

Задача стоит такая:
По фильму и некоторых данных нужно найти эту запись, то есть как бы встать на неё.
После чего выполнить редактирования через Replace.

Проблема:
После поиска не встает на данную запись.

&&Работа с таблицей "film" 
SELECT 2
USE "Tables\film" IN 2

&&Поиск по циклу IF
if film.film_1=ALLTRIM(thisform.text1.value)

&&Редактирование на строке
replace film.kol WITH film.kol-val(thisform.text3.value)
replace film.kol_prodano WITH film.kol_prodano+val(thisform.text3.value)

&&Конец цикла IF
ENDIF

Заранее спасибо :)
20 ноя 11, 08:55    [11626764]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определённую запись и отредактировать её через Replace.  [new]
sqlnew
Member

Откуда:
Сообщений: 801
IF - это не цикл. используй его внутри DO WHILE EOF()=.F. ..... ENDDO
Иначе ты проверяешь условие только для первой записи.
20 ноя 11, 09:22    [11626776]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определённую запись и отредактировать её через Replace.  [new]
Never74
Member

Откуда:
Сообщений: 6
sqlnew, спасибо за подсказку, но я нашёл немного другой способ пока что.
После replace поставил FOR :)
FilmName=ALLTRIM(thisform.text1.value)
TimetName=val(thisform.text2.value)

SELECT 2
USE "Tables\film" IN 2

replace film.kol WITH film.kol-val(thisform.text3.value) FOR (film.film=FilmName) AND (film.timet=TimetName)
replace film.kol_prodano WITH film.kol_prodano+val(thisform.text3.value) FOR film.film=FilmName AND (film.timet=TimetName)

BROWSE
20 ноя 11, 10:58    [11626849]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определённую запись и отредактировать её через Replace.  [new]
Dima T
Member

Откуда:
Сообщений: 15281
Never74
sqlnew, спасибо за подсказку, но я нашёл немного другой способ пока что.
После replace поставил FOR :)

Правильно нашел. FOR для того и нужен чтоб циклы не писать.
20 ноя 11, 11:27    [11626876]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определённую запись и отредактировать её через Replace.  [new]
sqlnew
Member

Откуда:
Сообщений: 801
Dima T,

Довольно давно не практикую... ;-)

А конструкция "replace .... for" не блокирует таблицу?
20 ноя 11, 12:52    [11627027]     Ответить | Цитировать Сообщить модератору
 Re: Как найти определённую запись и отредактировать её через Replace.  [new]
P003
Guest
1. Обновишь ты не запись, а записи по условию.
2. Почему бы это не сделать через Updatе, примерно так :

Use "Tables\film" Alias film In 0 Again

m.FilmName = alltrim(thisform.text1.value)
m.TimetName = val(thisform.text2.value)
m.l_val =  val(thisform.text3.value)

UPDATE film SET kol = kol-m.l_val, kol_prodano = kol_prodano+m.l_val;
WHERE film = m.FilmName AND timet = m.TimetName
20 ноя 11, 13:39    [11627112]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить