Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Визуальное отображение данных на форме. Нужен совет и возможно помощь
 
 автор: Скорп   (30.07.2008 в 11:04)   личное сообщение
 
 

в 2-х словах о своих тараканах

программа у меня по сопровождению полиграфических заказов
Практически все формы у меня ленточные (кроме форм ввода данных). По двойному клику на том или ином поле section(2) становится .visible=true и выскакивает та или иная подчиненная форма.
Все было хорошо до недавнего времени, пока заказы были одиночные (ну например напечатать только листовки и все...или только сделать нумерацию на листовках...или только сфальцевать листовки( сфальцевать - значит лист А4 формата согнуть пополам) и т.д.)

Формировались отдельные заказы, в ленточной форме они идут каждая запись под своим номером и всех все устраивало.

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

Пока что у меня на форме все эти 3 операции идут отдельно, и чтобы как-то понимать, что это все относится к одному заказу, их нумеруют 568-1, 568-2, 568-3 и т.д.
не очень удобно, т.к. есть заказы, в которых набирается порядка 10 операций (напечатать, заламинировать обложку, подрезать, отправить все это в листоподборку, потом подобранные листы оттащить на машину, которая по корешку делает склейку этих листов..в итоге мы получаем книжку)

и пользователи стали меня мучить: а нельзя ли сделать так, чтобы этот комплексный заказ в форме был одной строкой, но при необходимости, его можно было раскрыть и увидеть, что там внутри!?

вот..не совсем вкратце получилось, сорри други..
шо робить?
штудировать TreeView?

насколько удобны они (TreeView) для пользователей?
используете ли вы их своих программах.

или может подскажете иное решение для меня
ибо, если все же вы все в один голос начнете грить, что только TreeView меня спасет, тогда я вас замучаю или сам застрелюсь
не дайте погибнуть в самом расцвете сил

  Ответить  
 
 автор: ДрЮня   (30.07.2008 в 11:58)   личное сообщение
 
 

ну, например, так:
http://www.by-pass.narod.ru/prjVB/sila/orders.htm

правда считай все переделывать заново, имхо

  Ответить  
 
 автор: Lukas   (30.07.2008 в 12:31)   личное сообщение
 
 

Наверное было бы правильно разделить таблицу на две связанные:
1. Данные, относящиеся к заказу.
2. Данные, относящиеся к работам по заказу.
Пользователь видит данные заказа, а если его интересуют подробности, выводим связанные записи из таблицы работ.

  Ответить  
 
 автор: Скорп   (30.07.2008 в 16:23)   личное сообщение
 
 

ДрЮня спасибо
кое- какие идеи я возьму на вооружение

  Ответить  
 
 автор: FORMAT   (30.07.2008 в 12:34)   личное сообщение
 
 

Можно добавить в таблицу, где хранятся заказы еще одно поле - номер операции в заказе
И хранится информация будет по принципу 568 заказ - обощенное название ( или номер ) заказа а признаки 1,2.3. - соответственно подзаказы в заказе.
Таким образом в таблице будет несколько заказов с номером 568 , но разными порядковыми номерами подзаказов.
В ленточную форму выводится только обобщенный заказ - 568. При клике по нему открывается подчиненная форма в которой выводится 568 заказ и все его подзаказы.

ЗЫ Только я бы делал не исчезающую подчиненную форму, а отдельную форму, выезжающую слева. После просмотра на выезжающей форме по клику на к.л.контрол она бы съезжала влево. ( т.е. визуально ленточная форма не закрывается). Но это чисто дизайнерские прибамбасы. ( Они не обязательны )

  Ответить  
 
 автор: Скорп   (30.07.2008 в 16:34)   личное сообщение
 
 

Lukas, FORMAT
да, вы правы...стоит подумать именно в этом направлении

2 FORMAT

ЗЫ Только я бы делал не исчезающую подчиненную форму, а отдельную форму,
выезжающую слева. После просмотра на выезжающей форме по клику на к.л.контрол
она бы съезжала влево. ( т.е. визуально ленточная форма не закрывается).
Но это чисто дизайнерские прибамбасы. ( Они не обязательны )

мне понравился этот момент
без него мне наверное не обойтись, как не обойтись и без исчезающих подчиненных форм
ведь мне нужно на выезжающей форме увидеть не только, из каких пунктов состоит мой комплексный заказ, но и посмотреть, на какой стадии тот или иной пункт находится

где мне подглядеть на счет этого дизайнерского приема?
(или какого либо похожего..)
спасибо..

  Ответить  
 
 автор: FORMAT   (30.07.2008 в 16:40)   личное сообщение
10 Кб.
 
 

В форме1 кликай мышом на красную полоску.
А "выезжающая" форма - это обычная форма и располагать на ней можно все,что угодно.

  Ответить  
 
 автор: Скорп   (30.07.2008 в 17:14)   личное сообщение
 
 

FORMAT спасибо!

  Ответить  
 
 автор: Скорп   (31.07.2008 в 23:16)   личное сообщение
 
 

короче, экспериментирую с выскакивающими формами

подскажите, как передать в запрос значение поля активной формы?
просто одна из выскакивающих форм часто используется и в других формах. Пока она была подчиненной, вопросов не было - основные и подчиненные поля были КодКлиента и все дела
а как быть в моем случае со всплывающими формами?
не городить же для каждой формы, откуда вызывается карточка клиента, свой запрос и свою всплывающую форму к этому запросу...

  Ответить  
 
 автор: Lukas   (31.07.2008 в 23:46)   личное сообщение
 
 

Forms![ИмяФормы]![ИмяПоля]
Можно задать значение с помощью кнопки меню "Построить" в режиме конструктора.

  Ответить  
 
 автор: Скорп   (01.08.2008 в 00:31)   личное сообщение
 
 

нее...это то я знаю
вопрос в другом

ведь при таком подходе Forms![ИмяФормы]![ИмяПоля] нужно городить 10 запросов, если выскакивающая форма используется при вызове и из других форм
Forms![ИмяФормы_1]![ИмяПоля]
Forms![ИмяФормы_2]![ИмяПоля]
Forms![ИмяФормы_3]![ИмяПоля]
и т.д.

О!
а может запрос один, но использовать синтаксис ИЛИ?

не..не прокатит
нужен вариант передачи значения поля именно из активной формы
можно ч-з Буфер Обмена, я даже сделал так, потом отказался

п.с. тянуть инет ч-з мобилу в 100 км от Москвы - полная Ж!!!(((

  Ответить  
 
 автор: Lukas   (01.08.2008 в 00:40)   личное сообщение
 
 

Может имеет смысл передавать значение в качестве аргумента при открытии формы, на открытие формы его обрабатывать, писать SQL строку и использовать в качестве источника строк или фильтра?
Можно также в процессе работы задавать значение фильтра формы и применять его. Я обычно повторно открываю форму (не закрывая уже открытую) с новыми параметрами фильтра, она обновляется.
п.с. Аналогично, SkyLink.

  Ответить  
 
 автор: Lukas   (01.08.2008 в 01:00)   личное сообщение
 
 

К теме, если в выезжающую форму, предложенную FORMAT ом, добавить пару публичных процедур:
Public Sub Спрятать()
If Not Спрятана Then TimerInterval = Интервал
End Sub

Public Sub Показать()
If Спрятана Then TimerInterval = Интервал
End Sub

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

Forms("Форма1").Спрятать
Forms("Форма1").Показать

  Ответить  
 
 автор: Скорп   (01.08.2008 в 01:32)   личное сообщение
 
 

короче, сделал таким образом
на основной ленточной форме по даблклику на названии фирмы
DoCmd.OpenForm "Данные_Клиентов", acNormal, , " КодКлиента = " & Me.КодКлиента
форму сделал "Всплывающее окно"

еще вопросик к спецам, про позиционирование этой формы

на открытии у меня:

Option Compare Database
Option Explicit

Private Declare Function MoveWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function GetCursorPos Lib "user32.dll" (lpPoint As POINT_TYPE) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hWnd As Long, lpRect As Rect) As Long

Private Type POINT_TYPE
x As Long
y As Long
End Type

Private Type Rect
left As Long
top As Long
right As Long
bottom As Long
End Type

Private Sub Form_Open(Cancel As Integer)
Dim coord As POINT_TYPE ' координаты курсора
Dim retval As Long ' возвращаемое значение
Dim r As Rect ' размеры окна
retval = GetCursorPos(coord) ' считываем позицию курсора
retval = GetWindowRect(Me.hWnd, r) ' считываем размеры текущего окна
' Перемещаем окно формы по позиции курсора
retval = MoveWindow(Me.hWnd, coord.x, coord.y, r.right - r.left, r.bottom - r.top, 1)
End Sub

все вроде хорошо, кроме одного: если мы эту форму вызываем из главной, и поле главной формы находится внизу экрана, то и всплывающая форма оказывается за границами экрана..

можно ее как-то автоматически позиционировать, чтобы она всегда была в границах экрана?

п.с. МТС :-)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList