powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавление записей из других таблиц
7 сообщений из 7, страница 1 из 1
Добавление записей из других таблиц
    #32813656
Nimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста.
Почему то не срабатывает этот код в VFP 5.0
Есть две таблицы с одинаковой структурой
Пишу:
select table2
append from table1 for table1.adate=date()

в table2 заносятся все записи из table1, а не те которые соответствуют текущей дате. В чем дело?
...
Рейтинг: 0 / 0
Добавление записей из других таблиц
    #32813728
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что в команде APPEND FROM опция FOR относится к той таблице в которую добавляют записи, а не к той из которой эти новые записи берутся. В приведенном синтаксисе, условие FOR будет наложено только на одну текущую запись таблицы table1

В данном случае надо сделать 2 запроса:

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT * FROM table1 ;
INTO CURSOR curTMP NOFILTER ;
WHERE table1.adate=date()

select table2
APPEND FROM (DBF('curTMP'))
USE IN curTMP
...
Рейтинг: 0 / 0
Добавление записей из других таблиц
    #32813747
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select table2
append from table1 for adate=date()
...
Рейтинг: 0 / 0
Добавление записей из других таблиц
    #32813848
Nimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо. Теперь понятно.
А я голову сломала
...
Рейтинг: 0 / 0
Добавление записей из других таблиц
    #32814199
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь. Неправильно объяснил, как именно команад APPEND FROM фильтрует записи по FOR-условию.

Похоже примерно на такую логику:

По команде APPEND FROM создется выборка из таблицы-источника в некоторый временный курсор. И только потом из этого курсора происходит вставка записей в текущую таблицу.

Имя этого куросора формируется случайным образом. Поэтому, если необходимо наложить фильтр на данные (отобрать записи из таблицы-источника по определенному условию), то указывать имя таблицы или ее алиас не имеет смысла, поскольку на момент подачи команды APPEND FROM его имя не известно.

Так что AleksMed правильно написал. Не надо указывать алиас. Это и подразмевает наложение фильтра, поскольку в этом случае фильтр будет наложен на этот временный курсор.
...
Рейтинг: 0 / 0
Добавление записей из других таблиц
    #32814679
Nimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, так что не верно в вашем коде?
Я поняла, что выборка сохранилась в курсор CurTMP, а затем в table2 добавляются записи из этого курсора.
Или я чтото перепутала.


Ошибка моя была в том, что я в книге вычитала
"Если из таблицы CURDROP требуется добавить только те записи, у которых значение поля LInProduction равно .F. используйте следующие строки программы:
SELECT PRODHIST
APPEND FROM CURPROD FOR NOT lInProduction
Т.е. получется выбираются записи ( соответствующие условию) из той таблицы, откуда надо их брать, а это оказалось не так
...
Рейтинг: 0 / 0
Добавление записей из других таблиц
    #32814693
Nimka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ах, все дошло до меня. Все сработало.
Я поняла, т.е. не надо было указывать перед adate имя таблицы table2!
Ну кто бы мог подумать,в чем фишка зарыта
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Добавление записей из других таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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