powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / нужен совет
8 сообщений из 8, страница 1 из 1
нужен совет
    #32777901
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть простенькая база из 2-х таблиц связанная по индексам(unique i regular) один-ко-многим.
Таблица А Таблица Б
code I(4) --------->> code I(4)
name C(25) start_date D(8)
other fields end_date D(8)
Пользователь на форме просматривает эти таблички в 2-х гридах и иногда вызывает маленькую формочку DO FORM FormFiltr TO lcFilt где указывает параметры фильтра. Форма формирует и возврает строку налоения фильтра, а затем FILTER TO &lcFilt и все работало.
Но теперь пользователь хочет выбрать записи из таблици А для которых соотв.записи в таблице Б попадают в выбраный им диапазон.
Возможно ли втиснуть это в описанную схему наложения фильтра, или делать что-то новое (типа селектом выбирать)?
...
Рейтинг: 0 / 0
нужен совет
    #32778286
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица В есть подчинееная А, значит в А влюбом случае есть то что есть в В!!!
Теперь по условию поконкретнее пожалуста...
Могу только предположить что у тебя там Список какихто фирм или справочник товаров, И твоему пользователю нужен список по диапазону дат, правильно?
...
Рейтинг: 0 / 0
нужен совет
    #32778438
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица А - список фирм (со всеми реквизитами) которые обращались за консультацией в нашу компанию, а в Таблице Б - даты когда они это делали и какого рода консультация была. Соединил я их по полю случайніх чисел sys(3)
...
Рейтинг: 0 / 0
нужен совет
    #32778599
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alex!

Соединил я их по полю случайн?х чисел sys(3)
Очень большая ошибка.

По запросу же - SELECT ... FROM A WHERE nID NOT IN (SELECT nID FROM B).
Пользоваться SET FILTER для показа данных я никому не советую.

P.S. Надеюсь что под Unique индексом ты имел в виду Candidate индекс? В
противном случае ты снова сильно заблуждаешься...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
нужен совет
    #32780337
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробней (доступно в 2-х словах) почему нельзя пользоваться sys(3) и как тогда привязать дочернюю таблицу если в родительской все поля например С(50). И где я заблуждаюсь поповоду индексов (читал хелп - так как по мне уникальный индекс тоже нормально)
...
Рейтинг: 0 / 0
нужен совет
    #32780670
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По порядку.

Впихнуть фильтр, в принципе, можно (в твоем случае, просто наложить фильтр на таблицу B), но!

-) Наложение фильтров на таблицы, связанные по RELATION - это очень не тривиальная задача. Есть масса тонкостей и глюков. Не всегда получается предсказуемый резльтат. Особенно это касается наличия связи по SET SKIP.

-) Выражение фильтра рассчитывается при каждом переходе на очередную строку. Поэтому, чем сложнее фильтр, тем медленнее будет осуществляться перемещение по записям.

-) "Аппетит приходит во время еды". Скорее всего, в ближайшее время пользователи захотят еще какой-нибудь фильтр добавить. Кончится это тем, что вся твоя конструкция "рухнет" под тяжестью взаимо-зависимых фильтров

Поэтому замени фильтр на выборку по Select-SQL - это более универсальное решение. Возможно, будет относительно медленное открытие (собственно выборка), но просмотр уже безо всяких тормозов.


По остальным вопросам, я бы советовал почитать статьи здесь

http://www.foxclub.ru/kb/index.php?sid=114698&aktion=anzeigen&rubrik=004

Вторая часть по ключевым полям, третья - по индексам.

Вкратце.

-) Надеюсь ты в курсе, что индекс типа UNIQUE не запрещает ввод одинаковых значений. Он просто из многих одинаковых значений отображает только одно. Т.е. это своеобразный фильтр, наложенный на таблицу.

-) В общем случае, функция SYS(3) не может обеспечить уникальность значения (Почему? Отдельный вопрос. Просто прими как данность). Т.е. прежде чем присвоить значение ключу созданному через SYS(3) необходимо убедиться, что такого значения уже нет в таблице. Или использовать индексы типа CANDIDAT или PRIMARY для исключения таких ситуаций.

-) Каждая таблица должна иметь ключевое поле, формируемое как суррогатный ключ (что это такое читай в статье по ссылке). Для связи с родительской таблицей в подчиненной таблице создается "внешний ключ", т.е. поле, содержащее значение ключевого поля родительской таблицы
...
Рейтинг: 0 / 0
нужен совет
    #32780904
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Alex Sheff!

Можно - читай теорию реляционных БД. Для связи таблиц используется пара -
первичный ключ+внешний ключ. Присвоением первичных ключей занимается сама
база по какому-то алгоритму, обеспечивающему уникальность получаемых
значений (обычно используют вспомогательную таблицу где хранят последний
использованный код, а при вставке записей - наращивают его). ни sys(3) ни
sys(2015) ни тем более rand() не обеспечивают уникальности получаемых
значений. А потому их нельзя использовать для PK, ну и соответственно они не
могут наличествовать в FK.
где я заблуждаюсь поповоду индексов (читал хелп - так как по мне
уникальный индекс тоже нормально)
В фоксе UNIQUE - это не уникальный индекс. Уникальный - это CANDIDATE.
UNIQUE это разновидность фильтрованного индекса - он не запрещает вводить
дубли, а просто скрывает их (исключая из обработки).

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
нужен совет
    #32781073
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начет Unicue я извиняюсь, у меня Candidate :) (это называется 1-пишем 2-в уме)
Почитал я и понял - надо делать Select по условия из Таблици А, потом из Б.
Спасибо всем
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / нужен совет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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