|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
Всем доброе утро!Кто знает ответьте, пожалуйста, на вопрос. Есть две таблицы между которыми установлена связь в базе данных с помощью индексов по ключевому полю. Вторая таблица является дочерней к первой. В первой форме существует грид для первой таблицы. На второй форме размещается вторая(дочерняя) таблица. При вызове второй формы грид для дочерней таблицы должен показывать только записи,связанные с родительской записью. Для этого в Data Envir.. я использую два курсора для обоих таблиц в форме два. Все идет замечательно, т.е. если я прокручиваю грид-список в первой форме, то в гриде второй формы также показываются связанные записи. Но проблема в том, что когда первоначально я открываю форму два, то она показывает все записи, но стоит вернуться к форме один и прокрутить список или добавить в гриде на форме два новую запись, как все делается так как надо, т.е. показываются только связанные записи. Что-то я видимо опустил, может при инициализации второй формы надо сделать переход по GOTO на запись родительской таблицы, или что-то еще??? Помогите с этим вопросом... И еще к тому же. Как лучше сделать, чтобы caption второй формы показывал содержимое нужного поля родительской таблицы , ее текущей записи и при прокрутки в гриде соответственно менялся. Всем заранее спасибо за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 08:52 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
А во что установлена свойсво DataSession посмотри? Думаю нужно поставить либо на всех формах в Default, либо при инициализации второй формы устанавливать ее значение DataSesionID в значение родительской формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 10:52 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
Спасибо! Я дома вечером посмотрю... Если не получиться, то еще буду присать вопросы... Хорошо если только в этом беда... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 13:46 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
А на счет заголовка формы-2 (См. детальный вопрос выше...)???? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 13:56 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
В переменную My_Caption записываешь значение нужных полей и присваиваешь Second_Form.Caption = My_Caption ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 14:59 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
А будет работать смена заголовка, если сделать так: Форма2.Caption=Таблица1.Поле1 и прописать это в Refresh формы1 ????? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 16:24 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
В принципе, в этой ситуации проще проверить самому, я только дал идею (давно не занимался Фоксом, пишу исключительно по памяти). А что, обе формы видны одновременно? Нельзя что-ль оба грида разместить на одной форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:11 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
>>Что-то я видимо опустил, может при инициализации второй формы надо сделать переход по GOTO на запись родительской таблицы, или что-то еще??? Да, именно это и надо сделать. Более того, необходимо сделать переход в рабочую область родительской таблицы. Т.е. событие Init дочерней формы должно выглядеть примерно так: LPARAMETERS tnParentID, tcCaption select TabParent LOCATE FOR ID=m.tnParentID ThisForm.Caption=m.tcCaption Из описания я так понял, что дочерняя форма НЕ модальная. В этом случае проще всего сделать ее открытие следующим образом: PUBLIC goChildForm DO FORM MyChildForm.scx NAME goChildForm LINKED Тогда в AfterRowColChange родительской формы так прямо и пишешь goChildForm.Caption=Таблица1.Поле1 Ну тут есть некоторые особенности, а также другие варианты, но думаю, пока хватит и этого ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2003, 17:24 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
Здравстуйте! Конечно можно сделать два грида на одной форме, но задача такова, что грид для таблицы-2 нужен не постоянно, так как показывает информацию, меняющуюся относительно редко. Я думаю, может быть объединить обе формы в форм-сет и управлять ими как с одним объектом... Единственное что в этом случае, как обе формы теперь объединить и сделать у них единый Data Envir... Спасибо всем за ответы !!! Может есть еще какие-то варианты... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2003, 08:30 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
Привет,ВладимирМ! Эти два варианта нужно использовать вместе или один из них? Вариант-1 " LPARAMETERS tnParentID, tcCaption select TabParent LOCATE FOR ID=m.tnParentID ThisForm.Caption=m.tcCaption " ДА! - дочерняя форма НЕ модальная. Вариант-2 " PUBLIC goChildForm DO FORM MyChildForm.scx NAME goChildForm LINKED Тогда в AfterRowColChange родительской формы так прямо и пишешь goChildForm.Caption=Таблица1.Поле1 " И что означает LINKED ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2003, 08:55 |
|
Настройка связи между таблицами
|
|||
---|---|---|---|
#18+
Если вопрос все еще актуален, то: -) Приведенные методы вовсе не противоречат друг другу, т.е. можно использовать оба способа одновременно или один из них. Дело вкуса и личных предпочтений. -) Ключевое слово LINKED в команде DO FORM означает, что удаление переменной goChildForm автоматически приведет к удалению формы, ссылка на которую записана в эту переменную. Если слова LINKED нет, то удаление переменной никак не повлияет на саму форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2003, 18:25 |
|
|
start [/forum/topic.php?fid=41&msg=32196781&tid=1598146]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 142ms |
0 / 0 |