powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro и INSERT INTO
25 сообщений из 76, страница 2 из 4
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
25 сообщений из 76, страница 2 из 4
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro и INSERT INTO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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