powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Где связные таблицы ?
12 сообщений из 12, страница 1 из 1
Где связные таблицы ?
    #32501092
Remans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется несколько таблиц связанных через Set Relation

Я пишу
Create Report Myrep From MainTable
Modify Report Myrep

Затем
Menu->Report->Insert Controls-Field
Вызываю Expression Builder, и там, где, как мне казалось, должны стоять поля всех связных таблиц, стоят только поля из таблицы MainTable.
А где же остальные, те которые связаные ?
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32501238
Наверно, базы данных не хватает...
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32502130
Remans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А есть ли какая-нибудьь команда которая закидывает все открытае таблицы в базу данных ?
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32502191
Есть Project Manager.
Создайте в нём базу и включите в неё таблицы, затем установите в ней связи (Relation) между таблицами. Тогда Builder всё увидит и сделает правильно.
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32502684
Remans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня немного другое.
Есть ListBox, в него загружается таблица, в которой имеются поля содержащие в себе : имена загружаемых отчетов, имена таблиц участвующих в связях с данной и, соответственно, имена полей по которым осуществляется связь. Поль-ль кликает на один из эл-тов ListBox'a - устанавливаются связи с таблицами и загружается сответствующий отчет для редактирования
Modify Report Myrep.

Как мне быть в этом случае, чтобы при редактировании отчета были видны все связи?
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32503510
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас неправильное понимание того, что такое связи в FoxPro. Почитайте здесь

http://www.foxclub.ru/kb/index.php?sid=35321&aktion=artikel&rubrik=004&id=103&lang=ru

Раздел "Связи и отношения между таблицами"

Для отчетов вам надо:

1) Обязательно настроить связи один-ко-многим
2) Установить главную таблицу

Это все можно сделать в DataEnvironment отчета. Ну, или программно, если очень надо.
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32503947
Remans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.foxclub.ru/kb/index.php?sid=35321&aktion=artikel&rubrik=004&id=103&lang=ru В принципе, в противовес "постоянной связи" этот вид связи следовало бы назвать "временная связь". В том смысле, что данный тип связи устанавливается "по требованию". Т.е. вот надо мне в этом месте организовать связь, я тут же ее и организовываю, используя команду SET RELATION

http://www.foxclub.ru/kb/index.php?sid=35321&aktion=artikel&rubrik=004&id=103&lang=ruЕсли таблицы имеют связь вида один-ко-многим, то для печати в отчете этих "многих" обязательно следует использовать команду SET SKIP TO

Может я чего-то недопонимаю, но именно эту связь я и имею в виду
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32504074
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что Вы подразумеваете под фразой

Как мне быть в этом случае, чтобы при редактировании отчета были видны все связи?

Что значит "видны"?
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32504118
Remans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "видны"?
Имеется несколько таблиц связанных через Set Relation

Я пишу
Create Report Myrep From MainTable
Modify Report Myrep

Затем
Menu->Report->Insert Controls-Field
Вызываю Expression Builder, и там, где, как мне казалось, должны стоять поля всех связных таблиц, стоят только поля из таблицы MainTable.
А где же остальные, те которые связаные ?


Или, если просто отредактировать уже имеющийся отчет то таблиц вообще не будет.
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32504284
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы-источники появляются в построителе выражений только если они включены в DataEnvironment отчета. Но Quick Report на это не рассчитан. Он берет только одну таблицу-источник в свой DataEnvironment.

Если бы отчет был объектом, то можно было бы программно добавить нужное количество курсоров как-то так:

rep.DataEnvironment.AddObject("Tab1","Cursor")

Однако созданный таким образом отчет - это НЕ объект. Поэтому остается использовать "хакерские" трюки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE REPORT MyReport.frx FROM Tab1
USE MyReport.frx IN  0 
LOCAL lcPropertis
lcPropertis = 'Alias = "Tab2"' +chr( 13 )+chr( 10 )+;
'Database = MyBase.dbc'+chr( 13 )+chr( 10 )+;
'CursorSource = "Tab2"'+chr( 13 )+chr( 10 )+;
'Name = "Cursor2"'

INSERT INTO MyReport (Platform, ObjType, Name, Expr) ;
VALUES ("WINDOWS", 26 ,"cursor",m.lcPropertis)

USE IN MyReport
MODIFY REPORT MyReport.frx


По аналогии добавь объект Relation в DataEnvironment отчета. Какие именно значения нужны можешь посмотреть сначала вручную добавив нужные объекты в DataEnvironment отчета, а потом посмотрев содержимое полученного файла (отчет - это обычная таблица DBF, просто с измененным расширением)
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32510706
Remans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To ВладимирМ
По аналогии с тем, что Вы мне говорили, пишу:
...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Create report Myreport.frx FROM Tab1
USE MyReport.frx IN  0 
LOCAL lcPropertis
lcPropertis = 'Alias = "Tab2"' +chr( 13 )+chr( 10 )+;
'CursorSource = "Tab2"'+chr( 13 )+chr( 10 )+;
'Name = "Cursor2"'
  INSERT INTO MyReport (Platform, ObjType, Name, Expr) ;
  VALUES ("WINDOWS", 26 ,"cursor",m.lcPropertis)

LOCAL lcPropertis
lcPropertis = 'Alias = "Tab3"' +chr( 13 )+chr( 10 )+;
'CursorSource = "Tab3"'+chr( 13 )+chr( 10 )+;
'Name = "Cursor3"'
  INSERT INTO MyReport (Platform, ObjType, Name, Expr) ;
  VALUES ("WINDOWS", 26 ,"cursor",m.lcPropertis)

lcPropertis = 'ParentAlias = "Tab2"' +chr( 13 )+chr( 10 )+;
'RelationalExpr = "kod2"' +chr( 13 )+chr( 10 )+;
'ChildAlias = "Tab1"' +chr( 13 )+chr( 10 )+;
'ChildOrder = "kod1"' +chr( 13 )+chr( 10 )+;
'Name = "Relation1"'
  INSERT INTO myrep (Platform, ObjType, Name, Expr) ;
  VALUES ("WINDOWS", 26 ,"relation",m.lcPropertis)

lcPropertis = 'ParentAlias = "Tab3"' +chr( 13 )+chr( 10 )+;
'RelationalExpr = "kod3"' +chr( 13 )+chr( 10 )+;
'ChildAlias = "Tab2"' +chr( 13 )+chr( 10 )+;
'ChildOrder = "kod2"' +chr( 13 )+chr( 10 )+;
'Name = "Relation2"'
  INSERT INTO myrep (Platform, ObjType, Name, Expr) ;
  VALUES ("WINDOWS", 26 ,"relation",m.lcPropertis)

USE IN MyReport
MODIFY REPORT MyReport.frx

Fox выдает мне ошибку на MODIFY REPORT:
The ChildOrder property of a relation object in the data environment is no longer valid. The relation is being removed (Error 1478)
"Due to data environment changes, the relation of a ChildOrder property has been removed."
...
Рейтинг: 0 / 0
Где связные таблицы ?
    #32510774
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, тут уже мог бы и сам догадаться. :)

Это сообщение об ошибке говорит о том, что в качестве ChildOrder ты указал несуществующее имя индексного тэга структурного индексного файла соответствующей таблицы.

Убедись в том, что для таблицы Tab1 есть структурный индексный файл и в этом файле есть тэг с именем kod1.

Соответственно, для таблицы Tab2 есть структурный индексный файл и в этом файле есть тэг с именем kod2.

Что такое структурный индексный файл и тэг объяснять надо?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Где связные таблицы ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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