powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формирование ОТЧЕТА??????!!!!!
12 сообщений из 12, страница 1 из 1
Формирование ОТЧЕТА??????!!!!!
    #36047904
xX_Clubber_Xx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, у меня такой вопрос:
При построении отчета делается выборка из нескольких таблиц, затем создаются две временные Table1 и Table2, при простом запуске формы и печати отчета все работает нормально, таблицы создаются, отчет просматривается. НО! когда создается экзешник и вызывается та же форма уже из проги все вроде бы работает, за исключением одного момента, при вызове отчета вываливается следующая ошибка: "Возможность поддерживается только для таблиц .DBC" хотя сами таблицы на диске создаются, но к самой базе они не подключаются и выподает следующее окно прикрепленный рисунок...
Вот код:
Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
PROCEDURE CreateTempTable
CREATE TABLE ('DATA\Table1');
   (IDtable1 i PRIMARY KEY AUTOINC,A i, B V( 40 ), C i, D i, E i, F V( 100 ), G V( 50 ), H V( 100 ),;
    I V( 100 ), J V( 50 ), K V( 150 ), L V( 100 ), M V( 25 ), N V( 25 ), O V( 50 ), P i)

CREATE TABLE ('DATA\Table2');
   (IDtable i AUTOINC, IDtable1 i, A C( 30 ), B i, C i, D i, E i,;
    FOREIGN KEY IDtable1 TAG IDtable1 REFERENCES Table1)

SELECT Edition.editionid, Edition.tirag, Edition.kolspolos, Edition.sqpolos, Period.period, Format.format, Ascent.ascent,;
  Publishinghouse.housename, Publishinghouse.site,Publishinghouse.adres, Contactface.fullname,;
  Contactface.workphone, Contactface.personalphone, Contactface.email;
 FROM data!ascent ;
    INNER JOIN data!edition ON  Ascent.ascentid = Edition.ascentid ;
    INNER JOIN data!period  ON  Period.periodid = Edition.periodid ;
    INNER JOIN data!format  ON  Format.formatid = Edition.formatid ;
    INNER JOIN data!publishinghouse ON  Publishinghouse.publhouseid = Edition.publhouseid ;
    INNER JOIN data!contactface ON  Contactface.faceid = Publishinghouse.faceid;
 WHERE  Edition.name = press_name INTO CURSOR cursPress

SELECT Descmodule.squaremodule FROM data!descmodule INNER JOIN data!tabmodule ;
ON  Descmodule.descid = Tabmodule.descid WHERE  Tabmodule.editionid = cursPress.editionid;
ORDER BY Descmodule.squaremodule INTO CURSOR id_edition
min_modul = id_edition.squaremodule
SCAN
	min_modul = MIN(min_modul, id_edition.squaremodule)
ENDSCAN

INSERT INTO Table1(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P);
	VALUES (cursPress.editionid, press_name, cursPress.tirag, cursPress.kolspolos, cursPress.sqpolos, ;
			cursPress.period, cursPress.format, cursPress.ascent, cursPress.housename, ;
			cursPress.site, cursPress.adres, cursPress.fullname, cursPress.workphone, ;
			cursPress.personalphone, cursPress.email, min_modul)

SELECT Modules.modul, Descmodule.height, Descmodule.width,; && описание модулей
  Descmodule.squaremodule, Descmodule.cost;
 FROM data!edition ;
    INNER JOIN data!tabmodule  ON  Edition.editionid = Tabmodule.editionid ;
    INNER JOIN data!descmodule ON  Descmodule.descid = Tabmodule.descid ;
    INNER JOIN data!modules    ON  Modules.modulid = Tabmodule.modulid;
 WHERE  Edition.name = press_name INTO CURSOR cursPress2
FOR i= 1  TO RECCOUNT("cursPress2")
	SELECT cursPress2
	SCAN RECORD i
		INSERT INTO Table2(IDtable1, A, B, C, D, E);
		VALUES(Table1.IDtable1,cursPress2.modul, cursPress2.height, cursPress2.width, cursPress2.squaremodule, cursPress2.cost)
	ENDSCAN
ENDFOR

REPORT FORM ('REPORTS\InfoPress') PREVIEW

SELECT Table2
USE
DROP TABLE Table2

SELECT Table1
USE
DROP TABLE Table1

ENDPROC
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36047978
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xX_Clubber_Xx,

1. А что вам мешает использовать временные курсоры, заместо временных таблиц?

2. И объясните мне смысл этой конструкции:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FOR i= 1  TO RECCOUNT("cursPress2")
	SELECT cursPress2
	SCAN RECORD i
		INSERT INTO Table2(IDtable1, A, B, C, D, E);
		VALUES(Table1.IDtable1,cursPress2.modul, cursPress2.height, cursPress2.width, cursPress2.squaremodule, cursPress2.cost)
	ENDSCAN
ENDFOR
Как-нибудь так не работает?
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT cursPress2
SCAN
	INSERT INTO Table2(IDtable1, A, B, C, D, E);
	VALUES(Table1.IDtable1,cursPress2.modul, cursPress2.height, cursPress2.width, cursPress2.squaremodule, cursPress2.cost)
	SELECT cursPress2
ENDSCAN
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36047980
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте опцию FREE в команду CREATE TABLE.

Код: plaintext
CREATE TABLE ('DATA\Table1') FREE (...)

А вообще, не надо создавать таблицы. Создавайте курсоры (временные таблицы). Синтаксис практичоски тот же самый, только вместо ключевого слова TABLE используется ключевое слово CURSOR

Код: plaintext
CREATE CURSOR curReport (...)
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36047992
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xX_Clubber_Xx,

И еще... А зачем так сложно?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT Descmodule.squaremodule FROM data!descmodule INNER JOIN data!tabmodule ;
ON  Descmodule.descid = Tabmodule.descid WHERE  Tabmodule.editionid = cursPress.editionid;
ORDER BY Descmodule.squaremodule INTO CURSOR id_edition
min_modul = id_edition.squaremodule
SCAN
	min_modul = MIN(min_modul, id_edition.squaremodule)
ENDSCAN

Может быть что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
SELECT MIN(Descmodule.squaremodule) FROM data!descmodule INNER JOIN data!tabmodule ;
ON  Descmodule.descid = Tabmodule.descid WHERE  Tabmodule.editionid = cursPress.editionid;
ORDER BY Descmodule.squaremodule INTO ARRAY laResult

min_modul = laResult[ 1 ]
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048007
xX_Clubber_Xx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как потом курсор скормить отчету???
чтобы получить такую шляпу:
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048019
xX_Clubber_Xx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я не гений в Foxe, я его тока учу
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048033
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xX_Clubber_Xxа как потом курсор скормить отчету Просто назвать курсоры так же, как временные таблицы назывались, и всё - даже менять ничего в отчёте не придётся (если там DE нету).
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048035
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xX_Clubber_Xxа как потом курсор скормить отчету???
Точно также, как и таблицу. Просто не надо включать курсор в DataEnvironment отчета (да это и невозможно). В DataEnvironment отчета вообще ничего не должно быть. Та таблица (курсор), которая будет открыта в текущей рабочей области и станет источником данных для отчета

Код: plaintext
1.
2.
select curReport
REPORT FORM MyReport.frx
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048036
xX_Clubber_Xx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что такое DE???? (ссори за тупость я не понимаю)
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048079
xX_Clubber_Xx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Правда я терь не понимаю, почему он продублировал одну и ту же запись столько раз, тогда как он должен был вывести 4-и разных записи!!!!
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048094
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xX_Clubber_XxСпасибо! Правда я терь не понимаю, почему он продублировал одну и ту же запись столько раз, тогда как он должен был вывести 4-и разных записи!!!!
Просто вы строите отчет по одной рабочей области, а перед REPORT FORM выбрана другая рабочая область.
SELECT нужная_рабочая_область
REPORT FORM
...
Рейтинг: 0 / 0
Формирование ОТЧЕТА??????!!!!!
    #36048142
xX_Clubber_Xx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем большое спс!!! Я во всем разобрался, все работает!!! Еще раз огромное СПС!!! )))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формирование ОТЧЕТА??????!!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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