powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro и INSERT INTO
76 сообщений из 76, показаны все 4 страниц
FoxPro и INSERT INTO
    #37119124
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как добавить в существующую таблицу записи
Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5072300.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1 
В данном случае создается таблица New_1 и туда записываются данные возвращаемые запросом мне нужно дописать в New_1
Код: plaintext
1.
INSERT into New_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from P5072300.DBF, New_disc.DBF Where New_disc.Pred=P5072300.Pred
ругается на синтекс FoxPro 2.6, не все конструкции SQL понимает?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119159
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorПодскажите как добавить в существующую таблицу записи
Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5072300.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1 
В данном случае создается таблица New_1 и туда записываются данные возвращаемые запросом мне нужно дописать в New_1
Код: plaintext
1.
INSERT into New_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from P5072300.DBF, New_disc.DBF Where New_disc.Pred=P5072300.Pred
ругается на синтекс FoxPro 2.6, не все конструкции SQL понимает?Угу. Там было очень ограниченное подмножество SQL. Объедините Ваши запросы через union all, без insert, разумеется.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119232
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как будут добавляться записи. Что даст мне UNION
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119307
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorИ как будут добавляться записи.Точно так же, как ы первом запросе. Что даст мне UNIONВы не знаете, что такое union? Кратко это объединение в одном результате результатов двух и более запросов с одинаковой структурой.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119693
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это
Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5072300.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1
+ это

Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\xxx.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1
Между ними UNION но ведь into dbf New_1 попросит перезаписать файл или...?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119714
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
Вы может таки почитаете документацию-то? И фантазию немного попридЕржите?
Независимо от количества union и select вокруг них вся конструкция считается одним запросом. Со всеми вытекающими.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37120627
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
Код: plaintext
1.
2.
3.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5060101.DBF, G:\Temp\New_disc.DBF Where New_disc.Pred=P5060101.Pred 
UNION 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5100100.DBF, G:\Temp\New_disc.DBF Where New_disc.Pred=P5100100.Pred into dbf New_1 
Правда не хочет выполняться пока не расположишь все в одну строку.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37120637
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для переноса используй точку с запятой
Код: plaintext
1.
2.
select ...;
from...;
union ...
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37120733
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Еще мы таким способом можем перезаписывать таблицу т.е. если мы перечислили в запросе 2 таблицы то из них и получим одну ту что после into стоит, а есть возможность именно добавлять записи в уже существующую таблицу. Или это из "оперы" APPEND....
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121433
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor... а есть возможность именно добавлять записи в уже существующую таблицу. Или это из "оперы" APPEND....
из оперы, только в этой опере еще есть
Код: plaintext
APPEND FROM ...
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121784
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот опять тупость
Код: plaintext
1.
2.
3.
4.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred1;
UNION; 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty2, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred2;
UNION; 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_[SRC sql]
disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
UNION;
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty6, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred6;
UNION;
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty7, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred7;
into dbf Disc_1
[/src]Ругается при добавлении седьмого select
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred1 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty2, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred2 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty6, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred6 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty7, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred7 into dbf Disc_1
Error in line  210 : Compiled code for this line too long.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121814
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
откройте для себя понятие "алиас таблицы".
Код: plaintext
select Nd.PR, Nd.FAK, Nd.SPEC, Nd.KAF, Nd.BLOK, Nd.PRED, Nd.NAME, Nd.FAK_OLD, Nd.SPEC_OLD, Nd.KAF_OLD, Nd.PRED_OLD from &Puty1, E:\Temp\New_disc as Nd
Длина команды в старом фоксе до 2048 символов. Потому выкидывайте все ненужное и необязательное из команд. Или переходите к Append from.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121843
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как переделать запрос с APPEND'ом т.к. ненужное из этого запроса мне убрать не получится. У меня 66 таблиц по которым ищется совпадения.
P.S. Не ругайтесь мне самому надоела моя тупость.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121989
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122066
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
APPEND FROM E:\temp\Disc_1
В чем ошибка пытаюсь добавить записи выбранные select в Disc_1.dbf
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122088
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
APPEND FROM E:\temp\Disc_1
В чем ошибка пытаюсь добавить записи выбранные select в Disc_1.dbfAppend from, как могли бы убедитсься по предложенным примерам, есть отдельная команда, а не часть запроса. Точку с запятой долой.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122096
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovChek_Fedor
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
APPEND FROM E:\temp\Disc_1
В чем ошибка пытаюсь добавить записи выбранные select в Disc_1.dbfAppend from, как могли бы убедитсься по предложенным примерам, есть отдельная команда, а не часть запроса. Точку с запятой долой.
Пройденный этап, удалял ; запрос заканчивает работу на select'e т.е. не вставляет записи в Disc_1.dbf
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122099
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select "Рабочая область куда будем добавлять записи"
APPEND FROM "Таблица ИЗ которой будем брать записи для добавления"

PS: Посмотрите пример по приведенной ранее ссылке
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122138
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин ну я в общее... совсем запутался
Код: plaintext
1.
2.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
Этим указали таблицу куда добавлять записи
Код: plaintext
1.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
т.е. в моем случае это Disc_1.DBF он идентичен New_disc.dbf
Код: plaintext
1.
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
здесь говорим, что брать записи нужно из New_disc.dbf в том случае если они удовлетворяют условию New_disc.Pred=&TPred5 где
&TPred5=таблица5.Pred
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122168
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorБлин ну я в общее... совсем запутался
Код: plaintext
1.
2.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
Этим указали таблицу куда добавлять записиЭтим Вы ничего и ничему не указали. Ибо запрос (строка, начинающаяся со слова select) не имеет указания куда помещать результат запроса. И наконец запмните, что запрос на выборку (select) никогдане вставлял записи в уже имеющиеся таблицы.
Код: plaintext
1.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
т.е. в моем случае это Disc_1.DBF он идентичен New_disc.dbf
Код: plaintext
1.
2.
[/quot]Я уже писал про алиасы. [quot]
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
здесь говорим, что брать записи нужно из New_disc.dbf в том случае если они удовлетворяют условию New_disc.Pred=&TPred5 где
&TPred5=таблица5.PredИ что такое таблица5? Она тут каким боком? И что фоксу сказано по поводу этой таблицы в деле отбора записей для совершенно другой таблицы?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122218
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorSergey Sizovпропущено...
Append from, как могли бы убедитсься по предложенным примерам, есть отдельная команда, а не часть запроса. Точку с запятой долой.
Пройденный этап, удалял ; запрос заканчивает работу на select'e т.е. не вставляет записи в Disc_1.dbf
Рабочие области никто не отменял и FROM переводится "откуда" а не "куда"
В общем виде так:
Код: plaintext
1.
2.
3.
4.
select ... from ... into dbf ТаблицаСДаннымиДляДобавления
sele ТаблицаСДаннымиДляДобавления
use
sele ТаблицаКудаДобавлять
append from ТаблицаСДаннымиДляДобавления
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122267
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам запутался и Вас запутал.
по поводу таблиц. В общем на понятном мне SQL-запросе не FoxPro
Код: plaintext
1.
insert into Disc_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=таблица1.Pred;
вот этот запрос работал бы в MSSQL.
т.е. мы берем таблицу New_disc ищем совпадения стаблица1 и вставляем в Disc_1.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122289
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ общем виде так:
sele ТаблицаСДаннымиДляДобавления
use
Совершенно ненужные команды, вводящие новичков в заблуждение.
Первая не нужна в силу автоматического переключения на результат запроса.
Вторая не нужна в силу возможности добавления из открытой таблицы.
Кстати, так как ТаблицаСДаннымиДляДобавления временная, то вместо ino dbf лучше использовать into cursor.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122308
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как переделать мой запрос с insert into. Чувствую скоро двинусь с этим FoxPro (то длинные команды то еще что)
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122315
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorСам запутался и Вас запутал.
по поводу таблиц. В общем на понятном мне SQL-запросе не FoxPro
Код: plaintext
1.
insert into Disc_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=таблица1.Pred;
вот этот запрос работал бы в MSSQL.
т.е. мы берем таблицу New_disc ищем совпадения стаблица1 и вставляем в Disc_1.Так вот Append from - это не sql. В нем нельзя написать
Код: plaintext
from &Puty1, E:\Temp\New_disc.DBF 
Эта команда добавляет данные только и исключительно из одной таблицы.
Если я правильно понял задачу, которую Вы таки и не огласили полностью, Вам надо собрать данные из нескольких одинаковых по структуре таблиц в одну? При этом собрать не все, а по какому-то условию?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122318
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorКак переделать мой запрос с insert into. Чувствую скоро двинусь с этим FoxPro (то длинные команды то еще что)Никак, о чем уже вроде бы писали.
Огласите, наконец, всю задачу, а не отдельные проблемы, вытекающие из выбранного способа решения.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122319
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovDima TВ общем виде так:
sele ТаблицаСДаннымиДляДобавления
use
Совершенно ненужные команды, вводящие новичков в заблуждение.
Первая не нужна в силу автоматического переключения на результат запроса.
Вторая не нужна в силу возможности добавления из открытой таблицы.
Может быть, подсмотрел из исходников своих старых. У меня там еще DELETE FILE в конце, он открытую DBF-ку не удалит.
Sergey SizovКстати, так как ТаблицаСДаннымиДляДобавления временная, то вместо ino dbf лучше использовать into cursor.
Некстати, у него фокс 2.6, тогда курсоров не было.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122327
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSergey Sizovпропущено...
Совершенно ненужные команды, вводящие новичков в заблуждение.
Первая не нужна в силу автоматического переключения на результат запроса.
Вторая не нужна в силу возможности добавления из открытой таблицы.
Может быть, подсмотрел из исходников своих старых. У меня там еще DELETE FILE в конце, он открытую DBF-ку не удалит.
Sergey SizovКстати, так как ТаблицаСДаннымиДляДобавления временная, то вместо ino dbf лучше использовать into cursor.
Некстати, у него фокс 2.6, тогда курсоров не было.Да что Вы говорите? И давно их там отменили?
Кстати, при использовании курсора и удаление файла не понадобится.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122367
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovChek_FedorКак переделать мой запрос с insert into. Чувствую скоро двинусь с этим FoxPro (то длинные команды то еще что)Никак, о чем уже вроде бы писали.
Огласите, наконец, всю задачу, а не отдельные проблемы, вытекающие из выбранного способа решения.
Уже писал про свою задачу и запрос с insert into ее полностью отображает. Повторюсь
Есть таблицы New_Disc и "Таблица1" их таких как "Таблица1" много. Нужно из New_Disc выбрать все строки удовлетворяющие условию New_Disc.pred=Таблица1.pred и вставить их в таблицу Disc_1. Дальше тоже самое проделываем только вместо "Таблица1" будет "Таблица2". Как это реализовать в FoxPro 2.6. Использование Union результатов не дало т.к. появилась ошибка что запрос слишком длинный. Посоветовали перейти на APPEND FROM.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122392
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorSergey Sizovпропущено...
Никак, о чем уже вроде бы писали.
Огласите, наконец, всю задачу, а не отдельные проблемы, вытекающие из выбранного способа решения.
Уже писал про свою задачу и запрос с insert into ее полностью отображает. Повторюсь
Есть таблицы New_Disc и "Таблица1" их таких как "Таблица1" много. Нужно из New_Disc выбрать все строки удовлетворяющие условию New_Disc.pred=Таблица1.pred и вставить их в таблицу Disc_1. Дальше тоже самое проделываем только вместо "Таблица1" будет "Таблица2". Как это реализовать в FoxPro 2.6. Использование Union результатов не дало т.к. появилась ошибка что запрос слишком длинный. Посоветовали перейти на APPEND FROM.Осмелюсь таки заявить, что так и не написали Вы полностью задачу.
Ваша задча похожа на ту, что в приведенной ВладимирМ ссылке? Сколько файлов? Где они лежат? Есть система в именовании этих файлов? Какая? Вы собираетесь полностью ручами сделать перебор всех файлов? Или разрешите фоксу по используемой системе именования файлов самому изх перебрать и обработать?
Кстати, код обработки одного файла Вам уже весь написали. Осталось только доделать его для обработки всех нужных файлов.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122403
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovDima Tпропущено...

Может быть, подсмотрел из исходников своих старых. У меня там еще DELETE FILE в конце, он открытую DBF-ку не удалит.
пропущено...

Некстати, у него фокс 2.6, тогда курсоров не было.Да что Вы говорите? И давно их там отменили?
Кстати, при использовании курсора и удаление файла не понадобится.
Проверил, действительно были, извиняюсь, неправ.
Тогда все упрощается.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122442
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите пожалуйста код применимый к моему случаю. Имена таблиц не как не связаны я их перечислил руками присвоив переменной примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
tab1="P5010001"
tab2="P5010101"
TPred1="&tab1"+".Pred"
TPred2="&tab2"+".Pred"
puty1="E:\temp\&tab1+.dbf"
puty2="E:\temp\&tab2+.dbf"
* Старый код с использованием Union
* Вместо него нужно вставить APPEND т.к. продолжать объединение  60  таблиц нет возможности код не исполняется в связи с его длинной
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred1;
UNION; 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty2, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred2;
into dbf Disk_1
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122534
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УЖОС !!!

Я же вроде писал тебе про ключевое слово ALIAS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
sele  0 
use E:\Temp\New_disc.DBF
AppendDisk("E:\temp\P5010001.dbf")
AppendDisk("E:\temp\P5010101.dbf")
return

proc AppendDisk
para tcDbf
use (tcDbf) alias TabAdd

select ... from TabAdd, New_disc Where New_disc.Pred=TabAdd.Pred into cursor tCurNew
sele New_disc
append from dbf('tCurNew')
sele tCurNew
use
sele TabAdd
use
return
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122541
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
сударь, от того, что Вы будете как попугай много и много раз повторять одно и тоже, задача не решится.
Вы отвечать на вопросы уметеете? Сколько вопросов я Вам задал? На сколько из них Вы ответили? Зачем Вы опять нам рассказываете про свое неработающее решение вместо ответов про задачу?

Смотрим:
Имена таблиц не как не связаны я их перечислил руками присвоив переменной примерно так

tab1="P5010001"
tab2="P5010101"
TPred1="&tab1"+".Pred"
TPred2="&tab2"+".Pred"
puty1="E:\temp\&tab1+.dbf"
puty2="E:\temp\&tab2+.dbf"И нафига вот эти пляски с бубном? Как это не связаны, если они удовлетворяют маске 'E:\temp\P5010???.dbf'?
В предложенной ссылке как раз идет решение задачи по обработке файлов, лежащих в одном каталоге. Трудно в тот код поставить Вашу маску и получить такой цикл?
Код: plaintext
1.
2.
3.
For i =  1  to ADir(arDbfs, 'E:\temp\P5010???.dbf')
	?arDbfs[i, 1 ]
Next
brow
Как уже было написано, код обработки одного файла тут уже есть. То есть его просто надо поставить внутрь цикла перебора файлов. Это трудно сделать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select PR, FAK, SPEC, KAF, BLOK, PRED, NAME, FAK_OLD, SPEC_OLD, KAF_OLD, PRED_OLD ;
  from  E:\Temp\New_disc where .f. into cursor Disk_1 && создание пустого курсора, чтобы было куда вставлять

For i =  1  to ADir(arDbfs, 'E:\temp\P5010???.dbf')
	?arDbfs[i, 1 ]
  select Nd.PR, Nd.FAK, Nd.SPEC, Nd.KAF, Nd.BLOK, Nd.PRED, Nd.NAME, Nd.FAK_OLD, Nd.SPEC_OLD, Nd.KAF_OLD, Nd.PRED_OLD ;
    from ('E:\Temp\'+arDbfs[i, 1 ]) as t1, E:\Temp\New_disc as ND Where Nd.Pred=t1.Pred ;
    into cursor Tmp
  select Disk_1
  Append From Tmp
Next
brow
Ну и где тут длинные команды?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122705
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_disc as ND не понимает. Пробовал просто на seleсte что arDbfs[i,1] возвращает
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122719
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorNew_disc as ND не понимает. Пробовал просто на seleсte что arDbfs[i,1] возвращаетДавайте Вы лучше не будете рассказывать свое понимание, а приведете свой код и сообщениеоб ошибке. Ибо нет никакой уверенности в правильности Вашего кода. Возможно, что на as плохо реагирует, можно его убрать.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122789
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Ваш код чуть-чуть измененный as убрал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select PR, FAK, SPEC, KAF, BLOK, PRED, NAME, FAK_OLD, SPEC_OLD, KAF_OLD, PRED_OLD ;
  from  E:\Temp\New_disc where .f. into cursor Disk_1 && создание пустого курсора, чтобы было куда вставлять
USE Disc_1
For i =  1  to ADir(arDbfs, 'E:\temp\P5??????.dbf') *маска изменена т.к.  общее между файлами только P5
	?arDbfs[i, 1 ]
*t1=arDbfs[i, 1 ]
t1="E:\temp\"+arDbfs[i, 1 ] * здесь пытаюсь указать путь к файлу
tab1=arDbfs[i, 1 ]
TPred="&tab1"+".Pred" * так "прокатывало" с присвоением когда использовал UNION
  select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD;
    from &t1, E:\Temp\New_disc where New_disc.Pred=&TPred; 
    into cursor Tmp
  select Disc_1
  Append From Tmp
Next
brow
если убрать where то select работает правда только с первой таблицей
На Ваш код также ругается Unrecognized phrase/keyword in command.
Спасибо
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122815
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
Вы не пробовали осмысливать предложенное? На кой ляд Вы опять занимаетесь рукоблудством даже если оно Вам где-то когда-то и помогало?
1. Вы жить не можете без макроподстановки? На кой ляд она тут сперлась?
2. Зачем указывать путь там, где он уже указан?
Код: plaintext
'E:\Temp\'+arDbfs[i, 1 ])
3. Зачем Вы вставили USE Disc_1? Чтобы больше кода было?

авторНа Ваш код также ругается Unrecognized phrase/keyword in command.Ругается на на код, а на конкретную строку. На какую? Я должен угадать?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122819
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

если убрать where то select работает правда только с первой таблицейО каком таком where то select идет речь? А что происходит со второй? Я опять все должен угадывать?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122825
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
from &t1, E:\Temp\New_disc where New_disc.Pred=&TPred; 

извиняюсь песдетс

автор тролль или тупой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
   
  lcName1 = "c:\ttt\table1"
  lcName2 = "c:\ffff\table2"
 
  select  ;
     t1.pp ;
   , ... ;
   , t2.kkk ;
  ...
  from (lcName1) t1, (lcName2) t2 ;
  where t1.uu=t2.rr

врубитесь наконец в то, как пишут на фокспро грамотные разработчики
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122836
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
* Создаем пустой курсор, куда будем добавлять данные из таблиц
select ;
	PR, ;
	FAK, ;
	SPEC, ;
	KAF, ;
	BLOK, ;
	PRED, ;
	NAME, ;
	FAK_OLD, ;
	SPEC_OLD, ;
	KAF_OLD, ;
	PRED_OLD ;
from  E:\Temp\New_disc ;
where .f. ;
into cursor Disk_1

PRIVATE pathName, cntFiles
pathName = 'E:\temp\'

* В массив записываем имена файлов по маске
DIMENSION arDbfs[ 1 ]
cntFiles = ADir(arDbfs, pathName + 'P5??????.dbf')

* Собственно цикл в котором в ранее созданный курсор добавляются все записи из таблиц
PRIVATE fileName
For i =  1  to cntFiles
	fileName = pathName + arDbfs[i, 1 ]
	select Disk_1
	APPEND FROM (fileName)
endfor

* Смотрим результат
select Disk_1
browse

Если необходимо, далее можно делать выборку из курсора Disk_1, объединяя его с таблицей New_disc для поиска совпадений по полю Pred
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122843
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот на эту
Код: plaintext
1.
2.
3.
  select Nd.PR, Nd.FAK, Nd.SPEC, Nd.KAF, Nd.BLOK, Nd.PRED, Nd.NAME, Nd.FAK_OLD, Nd.SPEC_OLD, Nd.KAF_OLD, Nd.PRED_OLD ;
    from ('E:\Temp\'+arDbfs[i, 1 ]) as t1, E:\Temp\New_disc as ND Where Nd.Pred=t1.Pred;
    into cursor Tmp
Жмем ignore
Говорит на
Append From Tmp
Cannot write to a read-only file
Использовал Ваш код
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122867
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorCannot write to a read-only file


ну и что собираетесь делать?
переводчиком пользовались?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122871
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorВот на эту
Код: plaintext
1.
2.
3.
  select Nd.PR, Nd.FAK, Nd.SPEC, Nd.KAF, Nd.BLOK, Nd.PRED, Nd.NAME, Nd.FAK_OLD, Nd.SPEC_OLD, Nd.KAF_OLD, Nd.PRED_OLD ;
    from ('E:\Temp\'+arDbfs[i, 1 ]) as t1, E:\Temp\New_disc as ND Where Nd.Pred=t1.Pred;
    into cursor Tmp
Жмем ignore
Говорит на
Append From Tmp
Cannot write to a read-only file
Использовал Ваш кодВот с этого и надо было начинать.
Забывать стал, что в старом фоксе курсор был необновляемым.
Вместо слова cursor пишем dbf. И никакой самодеятельности.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122883
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот-же результат
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122888
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorТот-же результатА первый cursor заменен или второй?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122893
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorТот-же результат
Вам пытались сказать, что "редактируемым" надо делать то, что Вы собираетесь "редактировать". Т.е. то, куда пойдет запись. В данном случае - это курсор Disk_1.

Код: plaintext
1.
2.
3.
4.
select ...
from ...
where .F.
into table Disk_1

Те курсоры ИЗ которых будут браться данные (то, что создается внутри цикла) можно так и оставать только на чтение.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122917
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovChek_FedorТот-же результатА первый cursor заменен или второй?
Да. убрал опять as
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select PR, FAK, SPEC, KAF, BLOK, PRED, NAME, FAK_OLD, SPEC_OLD, KAF_OLD, PRED_OLD ;
  from  E:\Temp\New_disc where .f. into dbf Disk_1 && создание пустого курсора, чтобы было куда вставлять

For i =  1  to ADir(arDbfs, 'E:\temp\P5??????.dbf')
	?arDbfs[i, 1 ]
tab=arDbfs[i, 1 ]
TPred="&tab"+".Pred"

  select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD;
    from ('E:\Temp\'+arDbfs[i, 1 ]), E:\Temp\New_disc Where New_disk.Pred=&TPred;
    into dbf Tmp
  select Disk_1
  Append From Tmp
Next
brow
если убрать where то ошибок не выдает но Disk_1 пустой
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122944
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

Вас просили БЕЗ самодеятельности. Вы выполнили эту просьбу? А можете, накоенец-то, выполнить и повыкидывать к черту Ваши макроподстановки и все с ними связанное? В моем коде были переменные и макроподстановки?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122953
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedorубрал опять asИ не только. В том числе и то, что не нужно было убирать.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122975
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не шумите я Вам говорил что FoxPro 2.6 не хочет работать с as
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select PR, FAK, SPEC, KAF, BLOK, PRED, NAME, FAK_OLD, SPEC_OLD, KAF_OLD, PRED_OLD ;
  from  E:\Temp\New_disc where .f. into dbf Disk_1 && создание пустого курсора, чтобы было куда вставлять

For i =  1  to ADir(arDbfs, 'E:\temp\P5??????.dbf')
	?arDbfs[i, 1 ]
tab=arDbfs[i, 1 ]
TPred="&tab"+".Pred"

select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD;
  from ('E:\Temp\'+arDbfs[i, 1 ]), E:\Temp\New_disc  Where New_disc.pred= 1900 ; * "для пробы"
    into dbf Tmp
  select Disk_1
  Append From Tmp
Next
brow
Так вот работает я спрашивал что выдает arDbfs[i,1] т.е. мне нужно 1900 заменить на "имя таблицы".pred для этого и вводил переменные поскольку с as работать не хочет.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122983
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122991
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorНе шумите я Вам говорил что FoxPro 2.6 не хочет работать с asЯ в курсе. И предлагал убрать только as и ничего более. А Вы что убрали?Так вот работает я спрашивал что выдает arDbfs[i,1] т.е. мне нужно 1900 заменить на "имя таблицы".pred для этого и вводил переменные поскольку с as работать не хочет.Вам привел код НЕ ТРЕБУЮЩИЙ указания таблицы. AS к переменным не имеетникаког отношения. Вы опять занялись деструктивной самодеятельностью совершенно не понимая ни своих, ни наших действий.
Неужели так трудно взять мой код, первый cursor заменить на dbf и убрать слово as? Это очень трудно для понимания и выполнения?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123010
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимодоцент тупой?

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=829169&msg=10252789
Ты что мне их предлагаешь файлы руками перебирать? Если есть такая возможность прокрутить все в цикле почему этим не воспользоваться? Почему никто не читает то что я пишу. Зачем столько эмоций. Задача описана уже давно Insert into... читайте выше. Если не получается решить проблему сразу решаю постепенно. Сейчас стоит вопрос не как вернуться к альянсу, а как грамотно сравнить столбцы... Вопрос был что дает arDbfs[i,1] если имя+расширение тогда понятно что New_Disc.pred=P5000000.dbf.pred работать скорее не будет.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123013
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedorпрошелмимодоцент тупой?

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=829169&msg=10252789
Ты что мне их предлагаешь файлы руками перебирать? Если есть такая возможность прокрутить все в цикле почему этим не воспользоваться? Почему никто не читает то что я пишу. Зачем столько эмоций. Задача описана уже давно Insert into... читайте выше. Если не получается решить проблему сразу решаю постепенно. Сейчас стоит вопрос не как вернуться к альянсу, а как грамотно сравнить столбцы... Вопрос был что дает arDbfs[i,1] если имя+расширение тогда понятно что New_Disc.pred=P5000000.dbf.pred работать скорее не будет.

Код: plaintext
1.
from (lcName1) [color=red]t1[/color], (lcName2) [color=red]t2[/color] ;
  where [color=red]t1[/color].uu=[color=red]t2[/color].rr

правда, - тупой

оставь фокспро в покое, - займись си шарпом
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123019
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотреть на строку

from (lcName1) t1, (lcName2) t2 ;
where t1.uu=t2.rr

долго
внимательно

говорить вслух: я тупой, но хочу, хочу ...


пытаться осознать что такое эти буковки t1 и t2
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123028
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorТы что мне их предлагаешь файлы руками перебирать? Если есть такая возможность прокрутить все в цикле почему этим не воспользоваться? Почему никто не читает то что я пишу.Потому, что уже не единожды прочитано, а нового ничего нет. Зачем столько эмоций.Есть раздражающие факторы. Задача описана уже давно Insert into... читайте выше.Опять, уже писалось, что задача НЕ описана. Если Вы считаете Ваши повторения описанием, то что Вы хотите отнас, таких тупых и непонимающих Ваши описания? Если не получается решить проблему сразу решаю постепенно.Похвально. Сейчас стоит вопрос не как вернуться к альянсу, а как грамотно сравнить столбцы... Вопрос был что дает arDbfs[i,1] если имя+расширение тогда понятно что New_Disc.pred=P5000000.dbf.pred работать скорее не будет.Вы опять не читает, что Вам написано? Чукча писатель? Сколько раз надо повторить, что в моем коне НЕТ необходимости псать имя таблицы или подставляеть его куда-либо? Сколько раз Вам наджо построить, что в приведенном мной коде как раз и производится грамотное сравнение полей?
Короче, или Вы таки прекращаете заниматься самодурством и я пытаюсь Вас наставить на путь истинный или продлжайте без меня заниматься непойми чем. Задачу можно было в течение часа сделать, Вы со своими выходками уже два дня ковырятесь. Хотите и дальше так же безрезультатно ковыряться - продложайте, но нас тогда больше ни о чемс не спрашивайте.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123063
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select PR, FAK, SPEC, KAF, BLOK, PRED, NAME, FAK_OLD, SPEC_OLD, KAF_OLD, PRED_OLD ;
  from  E:\Temp\New_disc where .f. into dbf Disk_1 && создание пустого курсора, чтобы было куда вставлять
For i =  1  to ADir(arDbfs, 'E:\temp\P5??????.dbf')
	?arDbfs[i, 1 ]
  select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD;
  from ('E:\Temp\'+arDbfs[i, 1 ]) t1,  E:\Temp\New_disc  Where New_disc.pred=t1.pred;
  into DBF Tmp
  select Disk_1
  Append From Tmp
Next
brow
Вот так работает :(
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123070
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо осталось от дублей избавится.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123072
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorВот так работает :(

славте, Господи.

брось фокспро - не мучь себя.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123079
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorСпасибо осталось от дублей избавится.Прелестно! Это назывется "задача описана"! Браво!
Какие еще условия задачи остались в рукаве? Тпереь Будем мужественно бороться с дубликатами вместо того, чтобы их сразу не делать.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123092
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovТпереь Будем мужественно бороться с дубликатами вместо того, чтобы их сразу не делать.

ушел за попкорном
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123450
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxPro бы бросил (в принципе я еще и не начинал) но тут прога на мою шею "нарисовалась" приходится разбираться с теми "глюками" которые из нее "выскакивают". На счет дубликатов придется побороть :). Спасибо за терпение.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37123580
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorСпасибо осталось от дублей избавится.
Код: plaintext
select distinct * from Disk_1 into cursor disk_2
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37124616
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как исправить
Ошибка в строке
Код: plaintext
1.
        locate for arDbfs[i, 1 ].name=New_tmp.name
Я не знаю что возвращает arDbfs[i,1]
Код работает если вместо arDbfs[i,1].name прописать P5xxxxxx.name
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
For i =  1  to ADir(arDbfs, 'E:\temp\P5??????.dbf')
	?arDbfs[i, 1 ]
select distinct(name) as name, t1.pred, t1.SPEC from ('E:\Temp\'+arDbfs[i, 1 ]) t1 Where t1.pred> 1  into dbf tDoubleX
select tDoubleX.pred, tDoubleX.name, t1.SPEC from E:\Temp\tDoubleX.dbf, ('E:\Temp\'+arDbfs[i, 1 ]) t1 Where ((tDoubleX.name<>t1.name) and (tDoubleX.pred=t1.pred)) into dbf tmpDubl
select New_Disc.pred, New_Disc.name from E:\Temp\tmpDubl.dbf, E:\Temp\New_Disc.dbf Where ((tmpDubl.name=New_Disc.name) and (tmpDubl.SPEC=New_Disc.SPEC)) into dbf New_tmp

close databases
sele  0  && переход в свободную рабочую область
USE 'E:\Temp\'+arDbfs[i, 1 ] EXCLUSIVE
  	sele  0  && переход в свободную рабочую область
  	USE E:\Temp\New_tmp.dbf EXCLUSIVE
select arDbfs[i, 1 ]
scan  && перебор всех записей в таблица1
select New_tmp
     go top
        locate for arDbfs[i, 1 ].name=New_tmp.name
	if found()
 	sele 
 	repl pred with New_tmp.pred
	endif
endscan
Next

...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37124668
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorЯ не знаю что возвращает arDbfs[i,1]

Это элемент массива со списком файлов, 1 - имя файла, строка
Help ADIR()

Посмотреть что угодно можно вставив вывод на экран:
Код: plaintext
? type("arDbfs[i,1]"), arDbfs[i, 1 ]
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37124699
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorОшибка в строке
Код: plaintext
1.
        locate for arDbfs[i, 1 ].name=New_tmp.name
Я не знаю что возвращает arDbfs[i,1]
Код работает если вместо arDbfs[i,1].name прописать P5xxxxxx.name
Не работает потому что надо сначала открыть DBF а потом по ней искать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
For i =  1  to ADir(arDbfs, 'E:\temp\P5??????.dbf')
	?arDbfs[i, 1 ]
close databases
sele  0  && переход в свободную рабочую область
USE 'E:\Temp\'+arDbfs[i, 1 ] EXCLUSIVE alias Table1
  	sele  0  && переход в свободную рабочую область
  	USE E:\Temp\New_tmp.dbf EXCLUSIVE
select Table1
scan  && перебор всех записей в таблица1
select New_tmp
     go top
        locate for Table1.name=New_tmp.name
	if found()
 	sele 
 	repl pred with New_tmp.pred
	endif
endscan
select Table1
use
Next

Про ALIAS я тебе уже писал тут
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37124769
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Спасибо
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37124964
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вопросик При выполнении
Код: plaintext
1.
into dbf New_tmp
спрашивает о перезаписи есть возможность отменить это (т.е. без вопросов о перезаписи).
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37125148
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставь в начало программы
Код: plaintext
set safety off
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37141051
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет желания создавать новую тему. При попытке объединить две таблицы запросом
Код: plaintext
1.
2.
3.
4.
select PR, GOD, FO, FAKULT, SPEC, S_FAK, SPK, KURS, KOLST, OPLP, OPLX, KOLGR, KOLPGR, SEM, PG, NED, PPNAME, KBLOK, NBLOK, KAF, PRED, DISZIP, NKAF, LEK, LAB, PRA, IND_RUK, EKZ, ZA, KUR, KONT, GOS, H_LEK, H_LAB, H_PRA, H_IND_RUK, H_ZA, H_EKZ, H_GOS, H_KONS, H_KONTR, H_KUR, H_DIPL_RUK, H_DIPL_REZ, H_PRA_U, H_PRA_P, H_ASP_RUK, H_SOISK_RU, H_EKZV, H_RUK, H_FDP, H_OTHER, H_VSE, H_VSEP, H_VSEX, KPBLOK from E:\Temp\KAF1401.DBF;
UNION; 
select PR, GOD, FO, FAKULT, SPEC, S_FAK, SPK, KURS, KOLST, OPLP, OPLX, KOLGR, KOLPGR, SEM, PG, NED, PPNAME, KBLOK, NBLOK, KAF, PRED, DISZIP, NKAF, LEK, LAB, PRA, IND_RUK, EKZ, ZA, KUR, KONT, GOS, H_LEK, H_LAB, H_PRA, H_IND_RUK, H_ZA, H_EKZ, H_GOS, H_KONS, H_KONTR, H_KUR, H_DIPL_RUK, H_DIPL_REZ, H_PRA_U, H_PRA_P, H_ASP_RUK, H_SOISK_RU, H_EKZV, H_RUK, H_FDP, H_OTHER, H_VSE, H_VSEP, H_VSEX, KPBLOK from E:\Temp\KAF1507.DBF;
into dbf Disk

Ругается "SELECT's are not UNION compatible" Что в двух строчках может не нравится?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37141122
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorРугается "SELECT's are not UNION compatible"Вам перевести? Что в двух строчках может не нравится?Несовместимость результатов этитх строчек.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37141415
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо Append from выручил
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37141650
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут заглянул на шум.., извиняюсь что вмешиваюсь...
по моему ошибка в "SELECT's are not UNION compatible", в том что у таблиц разная структура, вроде бегло посмотрел, наименования одинаковые, а вот тип этих полей может отличаться... или вообще поля такого нет, и поэтому .F... для точного ответа нужны именно эти две таблицы именно с того места, где они находились во время этого сообщения и именно в то время, когда было это сообщение...для чистоты эксперемента.., тогда можно ответить конкретно...:-)
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37143143
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, для простого объединения таблиц с (типа) одинаковой структурой не обязательно использовать SELECT-SQL:
Код: plaintext
1.
2.
3.
4.
SELECT  0 
USE E:\Temp\KAF1401.DBF
COPY TO Disk
USE Disk
APPEND FROM E:\Temp\KAF1507.DBF
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37147698
bagalaki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
Всё просто ))
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro и INSERT INTO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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