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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2) более часто связи определяются в SQL SELECT в предикатах JOIN, WHERE, HAVING и пр. Определить, что с чем и как связано, возможно только визуально (по коду программы или результатам запроса).
...
Рейтинг: 0 / 0
27.06.2010, 12:58
    #36710150
H001
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связи таблиц в контейнере БД
Связей явно вообще может не быть. Все связи у разработчика. И Именно так и делают чтобы явно скрыть что с чем связано. Потому как любая система без поддежки - не система.
...
Рейтинг: 0 / 0
27.06.2010, 21:04
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Связи таблиц в контейнере БД / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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