powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / COPY TO
7 сообщений из 7, страница 1 из 1
COPY TO
    #34859039
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две таблицы (все поля символьные)
t1 - id, name
t2 - id, id_t1, name

Необходимо для каждой из записей в t1 отобрать записи в t2 (id <-> id_t1)
и эти записи скопировать в таблицы t3 расположенные в разных каталогах.
Что делаю:
SELECT id FROM t1 INTO ARRAY arT1

FOR i = 1 to ALEN(arT1,1)

SELECT id FROM t2 WHERE id_t2 = arT[i,1] INTO ARRAY arT2

&&пытался исполтзовать USE t1 посылает меня - таблица уже используется...
COPY TO cPath + '\t3.dbf\' FOR ( ASCAN( id , arT2 ) != 0 ) &&cPath где-то уже определили ранее

EndFor

В итоге в таблицах t3 значений нет, а структура мягко говоря перемешка полей обоих таблиц...
Подскажите чайнику где грабли и как их обойти.
Одно из подозрений это сравнение строк в ASCAN, а по структуре даже и не знаю...
...
Рейтинг: 0 / 0
COPY TO
    #34859264
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
use t1 in  0  order tag ID   && надеюсь такой индекс есть :)
select  0 
use t2
set relation to id_t1 into t1
copy structure to t3
select  0 
use t3
append from t2 for t2.id_t1=t1.id
...
Рейтинг: 0 / 0
COPY TO
    #34859311
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avdj
Подскажите чайнику где грабли и как их обойти.

Грабли везде просто... Попробуем...

Код: 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.
lcSrcPath1 = "t1.dbf"
lcSrcPath2 = "t2.dbf"
lcDestPath = "t3.dbf"
&& Для начала, прихлопнем алиасы, если они использовались.
USE IN SELECT("Src1")
USE IN SELECT("Src2")
&& Теперь открываем нужные нам две таблицы (зададим им удобные для нас алиасы)
USE (lcSrcPath1) IN  0  ALIAS Src1
USE (lcSrcPath2) IN  0  ALIAS Src2
&& SQL Выбираем все поля из Src2, которые есть в Src1
SELECT DISTINCT ; && Никто не сказал, что записи в t1 уникальны по Id
  Src2.* ;
  FROM Src2 ;
  LEFT OUTER JOIN Src1 ON Src2.Id_T1 = Src1.Id ; && Приляпываем Src1 по совпадению Id. Попадут все записи из Src2 и те из Src1 в которых Id совпадет.
  WHERE ISNULL(Src1) ; && Отсеем те записи, в которых Id совпал. Останутся только те из Src2, где ID не совпадает.
  INTO CURSOR Dest NOFILTER READWRITE && READWRITE Здесь нужен, чтобы автоматом прибить курсор с тем же алиасом.

&& А вдруг табла уже есть?
IF FILE(lcDestPath)
   ERASE (lcDestPath)
ENDIF
&& Здесь мы множеством разных способов сбрасываем курсор в файл.
SELECT Dest
COPY TO (lcDestPath)

Данный код - репрокод. Я его прямо здесь наколбасил и не отлаживал, но общее направление - примерно такое.
...
Рейтинг: 0 / 0
COPY TO
    #34859341
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я неправильно понял условие и нужны все совпадающие записи, а не все несовпадающие, как в предыдущем посте, тогда так.
Код: plaintext
1.
2.
3.
4.
5.
6.
&& SQL Выбираем все поля из Src2, которые есть в Src1
SELECT DISTINCT ; && Никто не сказал, что записи в t1 уникальны по Id
  Src2.* ;
  FROM Src2 ;
  INNER JOIN Src1 ON Src2.Id_T1 = Src1.Id ; && Приляпываем Src1 по совпадению Id. Попадут все записи из Src2 и те из Src1 в которых Id совпадет.
  INTO CURSOR Dest NOFILTER READWRITE && READWRITE Здесь нужен, чтобы автоматом прибить курсор с тем же алиасом.
...
Рейтинг: 0 / 0
COPY TO
    #34859479
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, буду пробывать.
...
Рейтинг: 0 / 0
COPY TO
    #34861235
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как быть если одна из таблиц уже открыта?

USE (lcSrcPath1) IN 0 ALIAS Src1
USE (lcSrcPath2) IN 0 ALIAS Src2
...
Рейтинг: 0 / 0
COPY TO
    #34861681
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Разобрался.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / COPY TO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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