powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Синтаксис Replace в Fox Pro
25 сообщений из 58, страница 1 из 3
Синтаксис Replace в Fox Pro
    #37108348
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста синтаксис команды замены записей в таблицы
Берем столбец1 и меняем значения на "n" при условии что значение столбца1>x
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108364
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс..
REPLACE столбец1 WITH "n" for столбец1<10
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108388
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем собственно вопрос? Если Вы сами знаете ответ. Если для всех записей
REPLACE ALL столбец1 WITH "n" for столбец1<10
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108404
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorПодскажите пожалуйста синтаксис команды замены записей в таблицы

REPLACE Command (Visual FoxPro)
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108416
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда писал не знал. Тут еще вопросик нужно перебрать значения в таблице1
и в случае совподения условия менять значения поля на то которое в таблице2
Код: plaintext
REPLACE т1.столбец1 WITH т2.столбец1 for (т1.Столбец2=т2.столбец2) and (т1.Столбец3="const")
Спасибо. FoxPro2.6
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108598
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что нет такой возможности?
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108619
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorЧто нет такой возможности?Такой - это какой?
Кстати, Вы, похоже, не обратили внимание на слово ALL в предложенных Вам примерах.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108651
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратил только не заострил на этом внимания.
Что касается "такой" там-же написано что при совпадении некого условия берем значение из второй таблицы и заменяем в первой.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108703
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorОбратил только не заострил на этом внимания.
Что касается "такой" там-же написано что при совпадении некого условия берем значение из второй таблицы и заменяем в первой.А в предложенных Вам примерах обновление делается не при "совпадении некого условия"? Не для всех, подпадающих под условие? Кстати, что такое совпадение условий?
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108779
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример последний, что там не понятного.
1таблица
1столбец 2столбец
1 а
2 б
3 с
2таблица
1столбец 2столбец 3столбец
1 а 222
1 б выв
1 с цуцу
в случае совпадения 2таблица.1столбец=1 то меняем 2таблица.3столбец=1таблица.2столбец

1столбец 2столбец 3столбец
1 а 1
1 б 2
1 с 3
Так понятно
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108846
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorПример последний, что там не понятного.
1таблица
1столбец 2столбец
1 а
2 б
3 с
2таблица
1столбец 2столбец 3столбец
1 а 222
1 б выв
1 с цуцу
в случае совпадения 2таблица.1столбец=1 то меняем 2таблица.3столбец=1таблица.2столбец

1столбец 2столбец 3столбец
1 а 1
1 б 2
1 с 3
Так понятноКому? Вам? Может быть. Только вопросы Вы задаете нам и потому они должны быть понятны нам. Ибо понимание Вами Ваших вопросов почему-то не решило Ваши проблемы.
А теперь расскажите почему Вы решили, что значение в какой-то таблице будет влиять на изменение данных в совершенно другой, никоим образом не связанной с первой, таблице? Просто наличие 2таблица.1столбец=1 ?
Может лучше задачу распишиете, а не выбранный Вами способ ее решения?
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108866
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я Вам и пытаюсь описать задачу. 1 как связать таблицы в FoxPro, что в предыдущем примере не ясно? Или Вы издеваетесь?
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108882
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorТак я Вам и пытаюсь описать задачу. 1 как связать таблицы в FoxPro, что в предыдущем примере не ясно?Нет, неясно. Ибо условие 2таблица.1столбец=1 есть условие отбора строк в 2таблица и никоим образом не указывает хоть на что-то в 1таблице. Или Вы издеваетесь?Кто здесь издевается еще надо выяснить.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37108909
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
REPLACE т1.столбец1 WITH т2.столбец1 for (т1.Столбец2=т2.столбец2) and (т1.Столбец3="const")
Вот же пример, если мы натыкаемся в таблице1 на значение столбца3=1 то берем значение столбца2 таблицы1 ищем такое же значение столбца2 таблицы2 берем значение столбца1 таблицы2 и вставляем его в столбца1 таблицы2.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109043
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor
Код: plaintext
REPLACE т1.столбец1 WITH т2.столбец1 for (т1.Столбец2=т2.столбец2) and (т1.Столбец3="const")
Вот же пример, если мы натыкаемся в таблице1 на значение столбца3=1 то берем значение столбца2 таблицы1 ищем такое же значение столбца2 таблицы2 берем значение столбца1 таблицы2 и вставляем его в столбца1 таблицы2.
Ты неправильно понял как REPLACE работает, совсем не так как в селектах.
Твой код равнозначен такому:
Код: plaintext
1.
Переменная2 = т2.столбец2
REPLACE т1.столбец1 WITH т2.столбец1 for (т1.Столбец2=Переменная2) and (т1.Столбец3="const")
тебе надо или SET RELATION использовать или SCAN и по одной записи обрабатывать.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109083
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109130
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А есть возможность "скормить" что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
sele  0  && переход в свободную рабочую область
use таблица2 
sele  0 
use таблица1
scan && перебор всех записей в таблица1
   переменная = ...
   sele таблица2 
   append blank
   repl поле1 with таблица1.поле1, поле2 with таблица1.поле2, поле3 with переменная
endscan
соответственно с правильными названиями полей и таблиц
Окно Command в FoxPro выполняет по моему только 1 строку.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109395
fore5ta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Chek_FedorА есть возможность "скормить" что-то типаДа, сохраняешь код в файле *.PRG и в командном окне пользуешься командой для редактирования MODI COMM <имя> и командой для выполнения DO <имя>. По логике приведенного тобой кода не достает поиска по таблице значения условия. Просто перейти в рабочую область SELECT недостаточно. Искать можешь по LOCATE, а лучше по SEEK, и потом разумеется проверить результат поиска IF FOUND() ... Если надумаешь искать SEEKом, то перед этим надо построить индекс по полю поиска. А так в целом очень близко к завершению. PS. REPLACE не единственная команда замены значения поля в таблице.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109593
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
sele  0  && переход в свободную рабочую область
USE c:\fpw26\plan1\p5080100.dbf EXCLUSIVE
sele  0 
USE c:\fpw26\plan1\Blok.dbf EXCLUSIVE
scan && перебор всех записей в таблица1
select p5080100
	locate for (p5080100.Kblok=Blok.blok5) and (p5080100.Pred> 1 )
	if found()
        APPEND BLANK
	repl NBlok with Blok.NBL
        else 
 	sele p5080100
	endif
endscan
Где напортачил?
При выполнении условий p5080100.Kblok=Blok.blok5 и p5080100.Pred>1 должны изменятся данные в поле NBlok таблицы p5080100 на значение поля NBL таблицы Blok иначе следующая запись...
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109813
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все перепробовал "метод тыка" не работает, подскажите, пожалуйста, что не так...
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109863
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
Сдается мне, что между select p5080100 и locate for (p5080100.Kblok=Blok.blok5) and (p5080100.Pred>1) нужно вставить go top
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37109970
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorГде напортачил?
При выполнении условий p5080100.Kblok=Blok.blok5 и p5080100.Pred>1 должны изменятся данные в поле NBlok таблицы p5080100 на значение поля NBL таблицы Blok иначе следующая запись...Т.е. надо пройтись по таблице п5080100 и заменить в ней кблок на подходящие блок.нбл (если найдутся)? Тогда так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
sele  0  && переход в свободную рабочую область
USE c:\fpw26\plan1\p5080100.dbf EXCLUSIVE
sele  0 
USE c:\fpw26\plan1\Blok.dbf EXCLUSIVE
select p5080100
scan for pred= 1  && перебор всех записей в таблица1
select Blok
==Ю      go top
	locate for (p5080100.Kblok=Blok.blok5)
	if found()
 	sele p5080100
          APPEND BLANK
 	repl NBlok with Blok.NBL
	endif
endscan
Это вроде ближе к правде...
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37110067
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorОкно Command в FoxPro выполняет по моему только 1 строку.
Если в окне Command выделить несколько строк, а затем нажать Enter, то будет выполнен весь выделенный кусок

Chek_FedorГде напортачил?
При выполнении условий p5080100.Kblok=Blok.blok5 и p5080100.Pred>1 должны изменятся данные в поле NBlok таблицы p5080100 на значение поля NBL таблицы Blok иначе следующая запись...

Команда APPEND BLANK создает новую запись. Последующая Replace изменяет содержимое этой самой новой записи.
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37110184
fore5ta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Chek_Fedor Где напортачил?
При выполнении условий p5080100.Kblok=Blok.blok5 и p5080100.Pred>1 должны
изменятся данные в поле NBlok таблицы p5080100 на значение поля NBL таблицы
Blok иначе следующая запись...
Твой код не отражает сформулированную задачу. Если должны _изменяться_ данные в поле p5080100.NBLOK зачем вставляешь новую запись а не собственно изменяешь проверяемую, и второе, если изменению подвергаешь таблицу p5080100.DBF, то почему перебираешь SCANом таблицу BLOK.DBF. Далее, существует "косяк" при проверке условия, если не нашел запись по нужному условию, нет возврата в область со SCANом.
Если ничего не напутано в условии, то можно как одним из способов:
Код: plaintext
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.
close databases
select  0 
use BLOK
index on BLOK5 to BLOK
select  0 
use P5080100
scan for P5080100.PRED >  1 
  select BLOK
  seek P5080100.KBLOK
  if found()
    select P5080100
    replace next  1  P5080100.NBLOK with BLOK.NBL
  else
    wait window nowait 'Not found'+ str(P5080100.KBLOK) && если надо поправиш тип
  endif
  select P5080100
endscan
use
select BLOK
use
if file('BLOK.IDX')
  erase BLOK.IDX
endif

return
...
Рейтинг: 0 / 0
Синтаксис Replace в Fox Pro
    #37110459
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
sele  0  && переход в свободную рабочую область
USE c:\fpw26\plan1\p5080100.dbf EXCLUSIVE
sele  0 
USE c:\fpw26\plan1\Blok.dbf EXCLUSIVE
scan && перебор всех записей в таблица1
select p5080100
	locate for (p5080100.Kblok=Blok.blok5) and (p5080100.Pred> 1 )
	if found()
        APPEND BLANK
	repl NBlok with Blok.NBL
        else 
 	sele p5080100
	endif
endscan
Где напортачил?
При выполнении условий p5080100.Kblok=Blok.blok5 и p5080100.Pred>1 должны изменятся данные в поле NBlok таблицы p5080100 на значение поля NBL таблицы Blok иначе следующая запись...
В твоем описании алгоритма ни слова про добавление новых записей.
APPEND BLANK зачем вставил? Убери все заработает как ты написал.
APPEND BLANK - добавляет пустую запись в конец и устанавливает указатель на нее, т.е. следующий за ним Replace пишет в эту пустую запись, а не в ту которую нашел locate

И это просто ненужный код:
Код: plaintext
1.
2.
        else 
 	sele p5080100
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Синтаксис Replace в Fox Pro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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