Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / replace / 9 сообщений из 9, страница 1 из 1
20.02.2007, 09:51
    #34342885
phonix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Есть 2 БД:
use BD_1.dbf in alias right
use BD_2.dbf in alias wrong
ТО ЕСТЬ ЭТО ДВЕ ЭДЕНТИЧНЫЕ ПО ПОЛЯМ БАЗЫ
Необходимо:
ВЫБРАТЬ ИЗ БАЗЫ 1 те ПРАВИЛЬНЫЕ АДРЕСА(adres.bd_1), которые соответвую условию: if pass.WRONG=pass.RIGHT и замекнить ими Неправильные в БАЗе 2.
...
Рейтинг: 0 / 0
20.02.2007, 10:07
    #34342923
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Файл DBF в терминологии Visual FoxPro называется "таблица".

Какое поле в таблицах является ключевым? Есть ли такое поле вообще?

Ключевым называется поле или набор полей по значению которых можно однозначно идентифицировать запись таблицы. Т.е. не может существовать двух записей в одной таблице с одним и тем же значением ключевого поля.

В данном случае это поле необходимо для того, чтобы по значению ключевого поля в таблице с "правильным" адресом можно было найти соответствующую ей запись в таблице с "не правильным" адресом. Т.е. определить что именно (какую запись) надо изменить.

Если ключевого поля нет, то, в общем случае, задача не имеет решения. Просто невозможно определить что именно (какую запись) надо изменить.
...
Рейтинг: 0 / 0
20.02.2007, 10:40
    #34343051
phonix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Пусть будет, например key
...
Рейтинг: 0 / 0
20.02.2007, 14:34
    #34344006
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Версия FoxPro?
Существует ли индекс по полю key?
...
Рейтинг: 0 / 0
20.02.2007, 15:06
    #34344128
Maltsev Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Я понял !!!

adres.bd_1 надо читать как bd_1.adres

и

pass.WRONG=pass.RIGHT читать как WRONG.pass=RIGHT.pass

Из этого следует что:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
use BD_1.dbf in alias right
use BD_2.dbf in alias wrong
Select right
Index On pass tag pass
Select wrong
Set Relation to right.Pass into right
Go Top in wrong
Replace all Pass with right.pass
...
Рейтинг: 0 / 0
20.02.2007, 15:08
    #34344143
Maltsev Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Поправка:
В Replace Pass читать как Adres
...
Рейтинг: 0 / 0
21.02.2007, 17:21
    #34347944
phonix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
use BD_1.dbf in alias right
use BD_2.dbf in alias wrong
Select right
Index On pass tag pass
Select wrong
Set Relation to right.Pass into right
Go Top in wrong
Replace all Pass with right.pass

Заменяет все одним адрессом
...
Рейтинг: 0 / 0
22.02.2007, 08:23
    #34348876
Maltsev Max
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
Конечно ...
Прошу прощения за невнимательность ....

Надо вот так.
Проверил у себя -- работает ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
use BD_1.dbf in alias right
use BD_2.dbf in alias wrong
Select right
Index On pass tag pass
Select wrong
Set Relation to right.Pass into right
SET SKIP TO Right
Go Top in Right
Go Top in wrong
Replace all Adres with right.Adres
...
Рейтинг: 0 / 0
22.02.2007, 14:43
    #34350399
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
replace
При наличии индекса настраивать Set Relation - не обязательно

Код: plaintext
1.
2.
3.
4.
5.
use BD_1.dbf in  0  alias right
use BD_2.dbf in  0  alias wrong

Select wrong
Replace Adres with right.Adres FOR SEEK(wrong.pass,'pass','right')

Этот код предполагает наличие индекса (тэга) pass у таблицы BD_1.dbf.

Для версии VFP9 индекс уже не обязателен. Можно использовать UPDATE-SQL.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / replace / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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