Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.03.2005, 08:34
|
|||
|---|---|---|---|
|
|||
Связывание таблиц |
|||
|
#18+
Здравствуйте! Подскажите пожалуйста как правильно связать таблицы в VFP8? Hужна программа, что-то типа телефонного справочника. Имеются три таблицы: 1)Организация(код организации, название организации, адресс) 2)Отдел(код организации, код отдела, название отдела) 3)Работники(код отдела, код работника, фамилия, телефон) К примеру на форме будет три "Grid_а". В первом выделяем организацию, во втором видим отделы имеющиеся в этой организации а в третьем работников из этого отдела. Таблица "Организиция" получается главной, в ней делаю индекс по полю "код", но тогда возникает ошибка при добавлении новой строки. Как правльно это все сделать? И как лучше заполнять поля "код" в таблицах при заполнении справочников, с помощью автоматичекого увеличения или нет? Вроде бы вопросы не сложные, но у меня в голове получается какая-то путаница. Если можно подскажите пожалуста по шагам как это можно и нужно делать. Может кто знает где в Интернете есть докумнтация про это, тогда напишите пожалуйста "URL". Заранее Вас благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2005, 08:40
|
|||
|---|---|---|---|
Связывание таблиц |
|||
|
#18+
Это уже хоть как-то работает? Конкретнее вопрос можно.... У Вас проблемы с автоинкрементом поля код, или установкой релейшинов? Или еще что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2005, 10:46
|
|||
|---|---|---|---|
|
|||
Связывание таблиц |
|||
|
#18+
Думаю примерно такая структура: organization.dbf Id_orgKod_orgName_orgAdress0001А1АО Цыбул ул. Ленина д.10 кв.100002А2ЗАО Йцукен ул. Иванова0003А3ИТД Тундра ул. Петрова0004А4ООО Поддержка ул. Сидорова department.dbf Id_depfId_orgKod_orgKod_depName_dep00010001A11отдел гл. технолога00020001A12бухгалтерия00030002A23плановый00040002A24отдел труда Personal.dbf Id_perfId_depKod_depKod_perSurNameTelefon0001000111000Арбузов44-100002000111001Барабанов44-890003000111010Вилкин44-520004000222000Грибов44-01 Если записи в твоих полях код организации->Kod_org, код отдела->Kod_dep, код работника->Kod_per уникальны, то добавленные мною поля не нужны Если у тебя база *.dbc, то в этом случае по полям Id_org, Id_dep, Id_per созданы индексы Primary, а по полям fId_org, fId_dep -> Regular, для создания отношений. Я создаю(временно), чтобы пользоваться стандартными средствами и вытекающей от сюда простотой создания Queries и т.д. Если хочешь эти таблицы оставить свободными, то эти отношения тобой должны подразумеваться... Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.03.2005, 14:34
|
|||
|---|---|---|---|
|
|||
Связывание таблиц |
|||
|
#18+
Grumax_userДумаю примерно такая структура: organization.dbf Id_orgKod_orgName_orgAdress0001А1АО Цыбул ул. Ленина д.10 кв.100002А2ЗАО Йцукен ул. Иванова0003А3ИТД Тундра ул. Петрова0004А4ООО Поддержка ул. Сидорова department.dbf Id_depfId_orgKod_orgKod_depName_dep00010001A11отдел гл. технолога00020001A12бухгалтерия00030002A23плановый00040002A24отдел труда Personal.dbf Id_perfId_depKod_depKod_perSurNameTelefon0001000111000Арбузов44-100002000111001Барабанов44-890003000111010Вилкин44-520004000222000Грибов44-01 Если записи в твоих полях код организации->Kod_org, код отдела->Kod_dep, код работника->Kod_per уникальны, то добавленные мною поля не нужны Если у тебя база *.dbc, то в этом случае по полям Id_org, Id_dep, Id_per созданы индексы Primary, а по полям fId_org, fId_dep -> Regular, для создания отношений. Я создаю(временно), чтобы пользоваться стандартными средствами и вытекающей от сюда простотой создания Queries и т.д. Если хочешь эти таблицы оставить свободными, то эти отношения тобой должны подразумеваться... Код: plaintext 1. 2. 3. 4. Спасибо Вам огромное за объяснение! Только вот как нужно заполнять поля Kod_org, Kod_dep, Kod_per, Id_org, Id_dep, Id_per а также fId_org, fId_dep ? К примеру я простой пользователь, и ввожу название организации, какой нибудь отдел и работников с ихними номерами телефонов, я же не должен заполнять эти поля сам. Да и ктому же они же должны заполняться правильно. Если в таблице “organization” код организации 0123, то и в таблице “department” код этой организации должен быть таким же. Может в таблицу “department” поле “Kod_org” просто копировать из таблицы “organization” и так же поступать и с талицей “Personal”, копировать в неё поле “Kod_Dep” из “department”, вот этот вопрос мне ни как не понятен. Объясните пожалуйста, как это нужно делать? Заранее Вас благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.03.2005, 02:48
|
|||
|---|---|---|---|
|
|||
Связывание таблиц |
|||
|
#18+
Hi Romazan! 1) Поиск тут и на foxclub.ru по теме NewID сильно поможет 2) Создавать связи на этапе заполнения должен твой код - т.е. сейчас у тебя видимо прописано где-то (в кнопке "добавить" в меню или ещё где) APPEND BLANK - так вот вместо этого пропиши там явное INSERT INTO department (Org_ID) VALUES (organization.Org_ID) - для Personal аналогично. Если этой базой никто и никогда кроме тебя (кроме вот этой конкретной твоей программы) пользоваться не будет, и ты не собираешься её никогда менять и улучшать (ну т.е. КРАЙНЕ редкий случай) то можно прописать в DefaultValue для поля department.Org_ID нечто типа IIF(USED("organization") AND VARTYPE(organization.Org_ID) = "C" AND !EOF("organization"), organization.Org_ID, .NULL.) - ну соответственно поменяй выражение под свои поля (и их тип). Тогда можно и по APPEND BLANK записи добавлять - сработает Default и заполнит поле тем значением, что было в текущей записи "вышестоящей" таблицы. Но повторюсь - это не есть красивое и правильное решение. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.03.2005, 11:50
|
|||
|---|---|---|---|
|
|||
Связывание таблиц |
|||
|
#18+
Igor Korolyov Hi Romazan! 1) Поиск тут и на foxclub.ru по теме NewID сильно поможет 2) Создавать связи на этапе заполнения должен твой код - т.е. сейчас у тебя видимо прописано где-то (в кнопке "добавить" в меню или ещё где) APPEND BLANK - так вот вместо этого пропиши там явное INSERT INTO department (Org_ID) VALUES (organization.Org_ID) - для Personal аналогично. Если этой базой никто и никогда кроме тебя (кроме вот этой конкретной твоей программы) пользоваться не будет, и ты не собираешься её никогда менять и улучшать (ну т.е. КРАЙНЕ редкий случай) то можно прописать в DefaultValue для поля department.Org_ID нечто типа IIF(USED("organization") AND VARTYPE(organization.Org_ID) = "C" AND !EOF("organization"), organization.Org_ID, .NULL.) - ну соответственно поменяй выражение под свои поля (и их тип). Тогда можно и по APPEND BLANK записи добавлять - сработает Default и заполнит поле тем значением, что было в текущей записи "вышестоящей" таблицы. Но повторюсь - это не есть красивое и правильное решение. Posted via ActualForum NNTP Server 1.1 А где там Поиск на foxclub.ru по теме NewID ? Все облазил, не нашел! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.03.2005, 23:50
|
|||
|---|---|---|---|
|
|||
Связывание таблиц |
|||
|
#18+
Сорри что не отвечал, инет на работе закончился :-(( Admin->@ Для начала RTFM Тут -> авторы Владимир Максимов, Сергей Чаговец, Игорь Ильин, Владислав Кулак, Пирожков Вадим...в особенности про Primary key Тут и Relation's Тут Прочитал? Тогда дальше :-)) На данный момент принимаем примерно такую структуру: Код: plaintext 1. 2. 3. 4. 5. В качестве Суррогатного ключа использовал поля Kod_org, Kod_dep, Kod_per, все типа Integer(AutoInc) ( Поправь! ). На практике же использую поле типа Character C(4), просто в 6-ке не было такого поля пришлось исхитряться :-) Как говорилось ранее Суррогатный ключ пользователь НЕ ВИДИТ и НЕ РЕДАКТИРУЕТ !!! и ты его НЕ РЕДАКТИРУЕШЬ Дальше примерный алгоритм работы пользователя: 1. Завести организацию. Код: plaintext 1. 2. 2. Завести отдел. Запоминаешь код организации на которую встал пользователь. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 3. Заводим персонал. Запоминаешь код отдела на котором стоит пользователь. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Сделаем выборку из нашей базы. Код: plaintext 1. 2. 3. 4. 5. 6. Допусти пользователь встал на "ОА Икра Красная", ты должен ему показать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ------------------------------------------------------------------------------------ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&tablet=1&tid=1594560]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 386ms |

| 0 / 0 |
