powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Форма
3 сообщений из 3, страница 1 из 1
Форма
    #32223044
новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж коли Фокс про клуб на "ремонте"
Можно здесь подоставать профессионалов
(Будем поправлять статистику использования СУБД на этом сайте)
Прочтите пожалуста топик незаконченного вопроса, уже 3 дня бьюсь, ничего не получается
Форма
новичек   28-07-2003 09:03
Подскажите пожалуйста
Есть форма
В окружении 2 таблицы
на ней 2 грида
1-клиенты -грид
2-заказы-грид
То есть визуализируются заказы одного клиента
Как сделать(надо чтобы при передаче определенного параметра и
клик отдельной кнопки) чтобы
при обработке этой кнопки клика("показать все заказы")
соответственно были видны все заказы, и другая кнопка-"отменить"
не отсылайте к SQL-всь механизм в проекте работает на
открытии таблиц в окружении-не хочется все ручками делать.
В доступной литературе не нашел
Спасибо




[Ответить]


я так понял, что между ними уже есть реляция +
Hel!Riser   28-07-2003 09:09
тада на кнопке Показать фсе заказы просто делай SET RELATION OFF, а чтоб снова откатица к заказам клиентам - SET RELATION TO ... INTO Заказ ADDITIVE





[Ответить]


Не катит
новичек   28-07-2003 09:53
Просто не дает синтаксис сделать
SET RELATION OFF-Фокс ругается
попробовал указать таблицу
SET RELATION OFF INTO klients
THISFORM.Refresh()
THISFORM.Grid1.SetFocus
не помогает
Указать рабочую область
gg=SELECT()
MESSAGEBOX(gg)
SET RELATION OFF INTO klients
не помогает
И как это восстановить(если получиться разрушить :-)))
Так правильно я понимаю?????
1)Таблица klients--поля id_kl,и так далее
Индекс id_kl
2)Таблица zakas-поля id_zakas,iden_kl и так далее
Индекс id_zakas,iden_kl
Отношение id_kl=iden_kl
SET RELATION TO id_kl INTO iden_kl ADDITIVE





[Ответить]


тада так +
Hel!Riser   28-07-2003 10:01
SELECT Klients
SET RELATION OFF INTO Zakaz && тут разбили связь с заказаом
ну после этого можно сделать GO TOP IN Zakaz или типа того, чтоб указатель ушел
на восстановить также -
SELECT Klients
SET RELATION TO id_kl INTO Zakaz ADDITIVE && а сортир в заказе по тегу iden_kl




[Ответить]


не катит2
новичек   28-07-2003 10:29
Боюсь показаться нескромным...
но:
SELECT Klients
SET RELATION OFF INTO Zakaz && тут разбили связь с заказом
GO TOP IN Zakaz
THISFORM.Refresh()
THISFORM.Grid1.SetFocus
на гриде остаются заказы только того клиента, на котором убили
связь,что там фильтр чтоли ставиться?
Не забудьте, у меня окружение формы с таблицами, а вьюшки.
И второе
Если пару раз откликать "отмена", то опять куча ошибок
Что надо проверить перед восстановлением?
SELECT Klients
SET RELATION TO id_kl INTO Zakaz ADDITIVE




[Ответить]


RE: не катит2
Hel!Riser   28-07-2003 11:03
> Если пару раз откликать "отмена", то опять куча ошибок
> Что надо проверить перед восстановлением?
> SELECT Klients
> SET RELATION TO id_kl INTO Zakaz ADDITIVE
если ошибка про реляцию, и от Клиентов кроме связи с Заказом нет больше связей, то просто SET RELATION TO id_kl INTO Zakaz (без ADDI)
по первому - пробуй рефрешить гриды явно ссылаясь на них






Все дефолтное на гридах- кроме размеров гридов и источников
RecordSourceType, RecordSource грида(:-))))

Грид1-это клиенты
THISFORM.Grid2.LinkMaster=""
THISFORM.Grid2.ChildOrder=""
THISFORM.Grid2.RelationalExpr=""
(Эта тройнай комбинация в разных сочетениях и поотному пробовалась)

THISFORM.Grid1.Refresh()
THISFORM.Grid2.Refresh()
THISFORM.Refresh()
THISFORM.Grid1.SetFocus
не помогает

на гриде2
свойства
THISFORM.Grid2.LinkMaster=
THISFORM.Grid2.ChildOrder=
THISFORM.Grid2.RelationalExpr=
дефолтные

Что-то пободать в DataEnvi???-так там большинство "для чтения"
ничего не получается
Помогите пожалуйста
...
Рейтинг: 0 / 0
Форма
    #32223117
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чистом виде эта идея не заработает и связано это с "глубоким внутренним миром" грайда.

Предлагаю два варианта на выбор:
1) Создать класс ordergrid на базе grid-a уже настроенного на отображение order-ов. Тогда смена варинтов просмотра запишется следующим образом:

Код: 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.
cmdallorder::click

thisform.lockscreen = .t.
thisform.removeobject('grdorder')
select client 
set relation off into order
select order
go top
thisform.addobject('grdorder', 'ordergrid')
thisform.grdorder.move( 0 ,  300 ,  400 ,  200 ) && координаты конечно свои подставишь
thisform.grdorder.visible = .t.
thisform.lockscreen = .f.

cmdclientorder::click
*
local lnIndex
* проверка факта существования связи между client и order
* дабы избежать сообщения об ошибке со стороны фокса
select client 
* предположим, что у таблицы client несколько реляций
for lnIndex =  1  to  255 
	if empty(relation(m.lnIndex))
		* не нашли - продолжаем
	endif
	if upper(target(m.lnIndex)) =  "ORDER" 
		* нашли - выходим
		return		
	endif
endfor
* установка соединения
thisform.lockscreen = .t.
select order
set order to clientid
select client 
set relation to clientid into order additive
goto record (recno())
thisform.lockscreen = .f.


2) Добавить в среду еще одну таблицу заказов под другим алиасом, добавить еще один грайд, который будет отображать все заказы. Поместить грайд, отображающие заказы клиента и грайд отображающий все заказы на разные страницы PageFrame-а. Тогда можно переключаться между ними, либо программно меняя ActivePage предварительно скрыв закладки (Tabs = .f.), либо оставить его (pageframe) как есть в качестве выбора между вариантами просмотра.

Удачи.

ps:

есть еще "вариант" связанный с перестройкой грида, но он не совершенен: (1) теряются настройки за счет перестройки, (2) если у клиента не было заказов, то мне так и не удалось заставить его отображать записи заказов при переключении на просмотр всех):

Код: plaintext
1.
2.
thisform.ordergrid.recordsource =  ""
...
thisform.ordergrid.recordsource = " order"
...
Рейтинг: 0 / 0
Форма
    #32223189
новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое Анатолий, будем пробовать

Вот у меня возникла следующая мысль
Вообще механизм работы следующий у меня в проекте
-это таблицы в среде окружения форм
Форма с данными клиентов, на ней кнока заказы
При клике на "заказы" открывается форма
заказов,передается параметр фильтра(для данного клиента)-
заказы клиента
Если параметр не передан, то фильтра нет
Еще передается параметр возможности редактирования "заказов"
в зависимости от кода юзера.
Да и очень мудреный механизм расккраски колумнов грида
в зависимости от состовляющих заказа.
Вообще хитро все
Хочется на форме "заказы" иметь возможность:
-редактирования,добавления итд.
-показать заказы за
1)определенное число, месяц, год
2)период времени
3)всех клиентов и заказы каждого клиента в отдельности
(с учетом сохранения работы по пунктам 1,2)

Вообщем весь этот механизм работает на FILTER
Как бы фильтр-это "по-старому",приходиться
заводить много свойст определения базового фильтра, наложения друг на друга по .AND. итд
Геморойно, да и скорость...

Вот все пишут сделай на вьюшках:
-современно
-возможность переноса на другую платформу выше
-скорость
-загрузка сети меньше
итд

Как подсоветуют знающие люди, что лучше
Наверно вьюшки, но как реализовать вот это место:
-показать заказы за
1)определенное число, месяц, год
2)период времени
3)всех клиентов и заказы каждого клиента в отдельности
Вообщем подтолкните на мысль
Спасибо заранее
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Форма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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