powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Связи таблиц в контейнере БД
11 сообщений из 11, страница 1 из 1
Связи таблиц в контейнере БД
    #36708990
_usa_))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Существует ли возможность каким либо другим способом, нежели разбор результатов LIST DATABASE узнать структуру связей между таблицами (какие ключи куда смотрят) ?
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709017
50копеек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это тебе не Оракл. Сам ,сам, по декларотивному описанию. Ну или через утилиту
"c:\Program Files\Microsoft Visual FoxPro 9\Tools\Gendbc\gendbc.prg" (если на С: установлен) разгребай связи ручками.
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709127
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
50копеек,

То бишь все-таки нет.... Разборщик результатов LIST DATABASE я уже написал, думал что лучше есть... Чтож, пасиба, попробуем
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709164
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от того, какая информация нужна

ADBOBJECTS() - список объектов одного из 4 типов: CONNECTION, RELATION, TABLE, VIEW

HELP VFP9Двумерный массив создается, когда Вы определяете RELATION для cSetting . Каждая строка в двумерном массиве соответствует отношению в базе данных. Первый столбец в строке массива содержит имя дочерней таблицы, а второй столбец в строке массива содержит имя родительской таблицы. Третий столбец содержит имя индексного тэга для дочерней таблицы, и четвертый столбец содержит имя индексного тэга для родительской таблицы.

Пятый столбец в строке массива содержит информацию ссылочной целостности. Этот столбец пуст, если отношение не имеет никаких правил ссылочной целостности. Если отношения действительно имеют правила ссылочной целостности, столбец содержит символы, соответствующие типу правил ссылочной целостности для модификаций, удалений, и вставок.

Первый символ указывает тип правила модификации, второй символ указывает тип правила удаления, и третий символ указывает тип правила вставки.

Возможные значения для модификаций и удалений - "C" для каскада, "R" для ограничения, и "I" для игнорирования. Возможные значения для вставок - "R" для ограничения, и "I" для игнорирования. Например, если отношение имеет каскадную модификацию, ограничение удаления, и игнорирование вставки в соответствии с правилами ссылочной целостности, то столбец содержат "CRI".

Обрати внимание, что постоянные связи контейнера базы данных организуются между индексными тегами, а не между полями. Поэтому, если надо копнуть глубже и узнать именно поля, то следует анализировать уже таблицы ATAGINFO()

Вообще, очень много полезных функция по сбросу различных структур в массивы. Все такие функции начинаются с буквы A.
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709181
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_usa_))День добрый!

Существует ли возможность каким либо другим способом, нежели разбор результатов LIST DATABASE узнать структуру связей между таблицами (какие ключи куда смотрят) ?
Глупый вопрос.
MODIFY PROJECT
MODIFY DATABASE
Эти пробовал набирать? )))))))
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709932
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugenkru10,

Дык надо чтоб программа разбирала, то есть дал путь к контейнеру БД, - получил всю структуру: таблицы поля связи индексы и т.д.
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709933
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Огромное пасиба! Уж больно большой парсер получился, да еще локали...
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36709973
Eugenkru10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_usa__83_Eugenkru10,

Дык надо чтоб программа разбирала, то есть дал путь к контейнеру БД, - получил всю структуру: таблицы поля связи индексы и т.д.
Оно даром не нужно чтоб программа эти связи разбирала ))))
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36710117
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_,

Связи между таблицами в Фоксе образуются не только через SET RELATION.

1) даже образованные таким образом связи при необходимости могут переопределены той же командой (в зависимости от необходимости) с направленностью до наоборот;

2) более часто связи определяются в SQL SELECT в предикатах JOIN, WHERE, HAVING и пр. Определить, что с чем и как связано, возможно только визуально (по коду программы или результатам запроса).
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36710150
H001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Связей явно вообще может не быть. Все связи у разработчика. И Именно так и делают чтобы явно скрыть что с чем связано. Потому как любая система без поддежки - не система.
...
Рейтинг: 0 / 0
Связи таблиц в контейнере БД
    #36710392
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постоянные связи в контейнере базы данных - это чисто дизайнерская "примочка". Используется только и исключительно при проектировании каких-либо объектов. В работающем приложении, как правило, не используются никак. Т.е. никак, никоим образом, не влияет на работу тех объектов, которые как раз и были созданы при помощи постоянных связей.

_usa__83_

Если не удалось найти какие-либо функции для определения структуры базы данных, то можно вспомнить, что контейнер базы данных - это обычная DBF-таблица у которой всего-лишь изменен один бит в 28 байте. Как следствие, ее можно открыть как обычную таблицу и анализировать содержимое. Примерно так

Код: plaintext
1.
2.
3.
USE MyBase.dbc IN  0  AGAIN
select MyBase
BROWSE NOWAIT

Здесь обязательно надо указать расширение DBC и опцию AGAIN, поскольку контейнер базы данных, скорее всего, уже открыт командой OPEN DATABASE. Вот чтобы не возникло конфликта с ранее использованной рабочей областью и нужна опция AGAIN.

Далее посмотри на структуру хранения данных и все поймешь. Там обычная древовидная структура ID-ParentID.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Связи таблиц в контейнере БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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