powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос на добавление
21 сообщений из 21, страница 1 из 1
Запрос на добавление
    #36494098
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, я понимаю, что вопрос тривиален, но больше обратиться не к кому, а с FoxPro никогда не работала ранее (слышала, что данна СУБД использует некий собственный диалект SQL).

Есть две дбф-ки: А и Б.
В базе А поле X пустое, а в Б - содержит значения. Обе базы имеют общее поле Y.

Вопрос: как подлить в базу А значения поля Х из базы Б, связав их по общему полю Y?
Структура баз абсолютно одинакова.

Как это проще сделать? Через окно команд VFP или можно написать скрипт и запускать его батником?
...
Рейтинг: 0 / 0
Запрос на добавление
    #36494443
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son6kaРебята, я понимаю, что вопрос тривиален, но больше обратиться не к кому, а с FoxPro никогда не работала ранее (слышала, что данна СУБД использует некий собственный диалект SQL).

Есть две дбф-ки: А и Б.
В базе А поле X пустое, а в Б - содержит значения. Обе базы имеют общее поле Y.

Вопрос: как подлить в базу А значения поля Х из базы Б, связав их по общему полю Y?
Структура баз абсолютно одинакова.

Как это проще сделать? Через окно команд VFP или можно написать скрипт и запускать его батником?
Код: plaintext
1.
UPDATE A SET X = B.X FROM A INNER JOIN B ON A.Y = B.Y
С уважением, Алексей
...
Рейтинг: 0 / 0
Запрос на добавление
    #36494608
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда выполнять этот запрос? В VFP получаю ошибку о "нераспознаных" лексемах.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36494794
Ffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия Foxpro?
...
Рейтинг: 0 / 0
Запрос на добавление
    #36494874
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFP7
...
Рейтинг: 0 / 0
Запрос на добавление
    #36494953
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запрос на добавление
    #36494994
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son6kaVFP7
Мой пример дан для версии VFP 9
С уважением, Алексей
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495007
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son6kaVFP7
Может так прокатит:
Код: plaintext
1.
UPDATE A SET A.X = B.X FROM A, B WHERE A.Y = B.Y
С уважением, Алексей
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495102
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
спасибо.
Я так поняла сначала нужно проиндексировать оба файла по общему полю.
Но остается открытым вопрос: как связать таблицы, т.е. как построить связь "мастер-детейл" в фокспро? Где хранятся relations?
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495120
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son6ka,

Если не получается одним запросом, можно сделать цикл SCAN по одной табличке с Locate внутри по второй табличке.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495148
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
son6ka как связать таблицы, т.е. как построить связь "мастер-детейл" в фокспро? Где хранятся relations?

Нигде не хранятся. А зачем им храниться? Вы же в запросе сами указываете связь.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495177
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний вопрос: как задать алиесы в VFP7? Как их привязать к физическим dbf-файлам?
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495185
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли будет потом упаковать все эти действия: назначение алиесов, индексация, запрос в sql-скрипт?
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495203
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
USE d:\Dir1\a1.dbf IN  0  SHARED ALIAS ИмяАлиаса

SELECT * FROM Table1 ИмяАлиаса1 ;
inner join Table2 ИмяАлиаса2 On ИмяАлиаса1.Поле1=ИмяАлиаса2.Поле2
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495206
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно создать prg-файл. Вообще, лучше уточните, для чего вам это нужно.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495271
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ffffffffffffffff,
уточняю

Используются два АРМа, назовем их А1(тонкий клиент к Oracle) и А2(VFP7).
В состав фокспрошной базы, с которой работает А2 входит dbf-файл, назовем его 1.dbf.

Для обмена информацией между АРМами (базами Oracle и FoxPro) данные из А1 экспортируются в файл 2.dbf.

Структура файлов 1.dbf и 2.dbf идентична. 2.dbf отличается от 1.dbf только новыми добавленными записями. Т.е. далее файл 1.dbf просто заменяется на 2.dbf в базе FoxPro. Но есть одно "НО". В экспортированном 2.dbf одно из полей пустое. Т.е. перед заменой я должна "подлить" значения этого поля из старого 1.dbf.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495341
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так создайте Exe-файл с запросом на обновление.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36495652
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son6kaИспользуются два АРМа, назовем их А1(тонкий клиент к Oracle) и А2(VFP7).
В состав фокспрошной базы, с которой работает А2 входит dbf-файл, назовем его 1.dbf.

Для обмена информацией между АРМами (базами Oracle и FoxPro) данные из А1 экспортируются в файл 2.dbf.

Структура файлов 1.dbf и 2.dbf идентична. 2.dbf отличается от 1.dbf только новыми добавленными записями. Т.е. далее файл 1.dbf просто заменяется на 2.dbf в базе FoxPro. Но есть одно "НО". В экспортированном 2.dbf одно из полей пустое. Т.е. перед заменой я должна "подлить" значения этого поля из старого 1.dbf.
Если Ваша задача заключается в том, чтобы только ДОБАВИТЬ те записи, которые есть в одной базе, но нет в другой, то в полной замене нет необходимости. Надо именно добавить недостающее.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
* Получаем выборку тех записей, которые надо будет добавить
* Предполагаю, это те записи у которых нет значения по полю Y в аналогичной таблице
select * ;
into cursor curAdd ;
from A ;
where not exists(select 'x' from B where A.Y = B.Y)

* Добавляем в таблицу отобранные записи
select B
append from (dbf('curAdd'))
...
Рейтинг: 0 / 0
Запрос на добавление
    #36496995
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
Спасибо, но это не решает всей проблемы: пустое поле Х в новых записях.
...
Рейтинг: 0 / 0
Запрос на добавление
    #36497140
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son6kaСпасибо, но это не решает всей проблемы: пустое поле Х в новых записях.
Так оно и при связке останется не заполненным. Ведь в старой таблице нет записей с тем кодом Y, по значению которого надо заполнять X.

Т.е. если Вы создали записи в Oracle, а в VFP нет эти записей, то откуда же возьмутся новые значения X?
...
Рейтинг: 0 / 0
Запрос на добавление
    #36497573
son6ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,
прошу прощения, туплю.
Вы абсолютно правы.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос на добавление
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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