powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro 2.6 запрос в общем
9 сообщений из 34, страница 2 из 2
FoxPro 2.6 запрос в общем
    #37074538
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS Странная логика какая-то у тебя: ищем в Disc1 name='name' и если есть то еще раз добавляем запись, там случайно "append blank" не лишний?

PPS При установленной настройке среды SET EXACT OFF (оно обычно так и стоит) сравнение строк идет до окончания правой, т.е. сравнение 'nameXXX' = 'name' вернет истину.
Спасибо! Весь приведенный выше код это так... для отладки, на самом деле мне нужно проверить... если берем запись из одной "таблицы1" проверяем если она не входит в "таблицу2" добовляем в "таблицу2" иначе пропускаем.
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37074868
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну опять в "луже"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
IF .NOT. USED("Disc_S")  
  sele  0  && переход в свободную рабочую область
  use Disc_S
else
  sele Disc_S
endif

GO TOP
scan && перебор всех записей в таблица1

	locate for New_Disc.name=Disc_S.name
	if found()
  	sele New_Disc && тут опять для удобства
   	append blank
   	repl Name with 'ЕСТЬ'

else 
  	sele New_Disc 
   	append blank
   	repl Name with Disc_S.name
endif
endscan
По моей задумке код должен брать 1 запись из Disc_S сравнить с записями из таблицы New_Disc если сходство не найдено то вставить ее в New_Disc из Disc_S иначе перейти к следующей записи из Disc_S и т.д. пока не достигнем последней записи таблицы Disc_S.
scan && тут мы пепербираем поля из таблицы New_Disc или?
или просто прицепить вместо него DO WHILE .NOT. EOF() всеравно не понятно в какой таблице ждем конца записей?
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37075030
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
sele Disc_S &&в конечном итоге окажемся тут
GO TOP
scan && перебор всех записей в Disc_S

	locate for New_Disc.name=Disc_S.name 
&&на пред. строке вы ищете в таблице Disc_S запись, удовл. условию New_Disc.name=Disc_S.name
&&соотв-но скан вполне вероятно накрывается медным тазом
	if found()
&&и если мы нашли в Disc_S эту запись, то добавляем пустую запись в New_Disc
  	sele New_Disc
   	append blank
   	repl Name with 'ЕСТЬ'
else 
&&а если НЕ нашли, то всё равно добавляем пустую запись в New_Disc
&&и зачем, спрашивается?
  	sele New_Disc 
   	append blank
   	repl Name with Disc_S.name
endif
endscan
решение - между сканом и локейтом поставить таки select new_disc
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37075104
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Огромное!
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37076005
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну эти области...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
IF .NOT. USED("Disc_s")  
  	sele  0  && переход в свободную рабочую область
  	use Disc_s
   else
  	sele Disc_s
   endif
IF .NOT. USED("New_Disc")  
  	sele  0  && переход в свободную рабочую область
  	use New_Disc
   else
  	sele New_Disc
   endif

GO TOP
scan  && перебор всех записей в New_Disc
      sele Disc_s 
      APPEND BLANK
	repl Name with New_Disc.Name
endscan

есть таблица
[1] [name]
1 34
2 23
3 20
Это, new_disk, открывается т.е. use New_Disc до этого кода и загружается не вся а только та часть которая находится нужна (3 23) я так понял этой части выделена область (sele...) вообщем есть способ перекинуть всю таблицу в Disk_s сейчас копируется только строка №3
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37076152
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedorвообщем есть способ перекинуть всю таблицу в Disk_s сейчас копируется только строка №3Это был вопрос? Тогда ответов несколько:
copy file

copy to

scan+(scatter+gather)+endscan

select into array / insert from array

А в вашем примере скорее всего 1-я таблица уже открыта и указатель стоит на последней записи. Напишите GO TOP перед проверкой использования New_Disc.
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37076604
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorНу эти области...

И не лень тебе методом научного тыка фокс изучать Давно бы книжку качнул и почитал. Время бы свое сэкономил.

Области это основа языка. Все операции с данными привязаны к областям. Сначала переход в нужную область (SELECT ... или сокращенно SELE ...), а потом работа с таблицей (DBF-кой) которая в этой области открыта.
Все команды перемещающие указатель в таблице выполняются в текущей области (USE, APPEND, REPL, LOCATE, SCAN, SEEK)
В 2.x только так, в поздних версиях можно не переключаться указав ключевое слово "IN"

Код немного избыточный:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
IF .NOT. USED("Disc_s")  
  	sele  0  && переход в свободную рабочую область
  	use Disc_s
   else
  	sele Disc_s && Это лишнее, т.к. дальше sele New_Disc
   endif
IF .NOT. USED("New_Disc")  
  	sele  0  && переход в свободную рабочую область
  	use New_Disc
   else
  	sele New_Disc
   endif

 GO TOP && Это лишнее, т.к. SCAN начинает с первой записи
scan  && перебор всех записей в New_Disc
      sele Disc_s 
      APPEND BLANK
	repl Name with New_Disc.Name
endscan

Chek_Fedorесть таблица
[1] [name]
1 34
2 23
3 20
Это, new_disk, открывается т.е. use New_Disc до этого кода и загружается не вся а только та часть которая находится нужна (3 23) я так понял этой части выделена область (sele...) вообщем есть способ перекинуть всю таблицу в Disk_s сейчас копируется только строка №3
Не совсем понял чего тебе надо, но в коде выше ты переносишь из New_Disc в Disc_s, а как я понимаю тебе надо наоборот.
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37076689
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИ не лень тебе методом научного тыка фокс изучать Давно бы книжку качнул и почитал. Время бы свое сэкономил.
.
Есть одна "Программирование в FoxPro для WINDOWS на примерах" долго в ней искал значение ALLT нашел, только не в книге, а интернете. И так со всеми своими, может быть порой глупыми, вопросами.

Код: plaintext
Не совсем понял чего тебе надо, но в коде выше ты переносишь из New_Disc в Disc_s, а как я понимаю тебе надо наоборот
Тут все правильно "Т.З." и пожелания меняются на глазах :-). Выше посоветовали GO TOP поставить... ставил, пробовал во всех местах, от отчаяния, не помогло. Ну да ладно проблема решилась сменой задачи, хотя мне по прежнему интересно.
...
Рейтинг: 0 / 0
FoxPro 2.6 запрос в общем
    #37076748
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorDima TИ не лень тебе методом научного тыка фокс изучать Давно бы книжку качнул и почитал. Время бы свое сэкономил.
.
Есть одна "Программирование в FoxPro для WINDOWS на примерах" долго в ней искал значение ALLT нашел, только не в книге, а интернете. И так со всеми своими, может быть порой глупыми, вопросами.
Имена команд/функций можно сокращать до 4-х букв. ALLT - сокращенно ALLTRIM(), русский хэлп на VFP9 там можешь описания функций смотреть. Почти все что в 2.x было работает в 9ке.

По книжкам в форуме поищи. Неплохо написано по FoxPro 2.x автор Попов, по FoxPro 6 - Базиян.
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro 2.6 запрос в общем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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