Отправляет email-рассылки с помощью сервиса Sendsay

Работа с MS Access

  Все выпуски  

Работа с MS Access : (022)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Работа с MS Access

Ведущий рассылки Виктор Познев; Сайт проекта: http://msa.km.ru
 

Выпуск 022

СЕГОДНЯ В НОМЕРЕ

  1. Чайнику в помощь
  2. Справочник товара
  3. Новости раздела "FORUM+"
  4. Последняя десятка =о)
  5. Красивое представление количества записей
  6. Передача значений из формы в форму
  7. Новости MSA.KM.RU
  8. Новые темы форума.

 

Чайнику в помощь

 

Справочник товара

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

Первым делом немного изменим названия таблиц справочника товара. Таблицу "Товар" переименуем в "Тов", а таблицу "ТоварныеГруппы" - в "ТовГр". Если Вам не понятно зачем это делается, то советую почитать первые статьи по этой теме. Пока некоторые будут читать их, мы поедем дальше:)

Итак, после того как мы сделали таблицы по товару и создали связи между ними, можно приступать к созданию самого справочника. Как и справочник курсов валют, он будет состоять из двух форм - главной и подчиненной. Главная форма представляет собой простую форму, источником записей для которой является таблица "ТовГр", т.е. товарные группы. Надеюсь выражения "источником записей", "простую форму", которые я здесь употребил, уже не просто пустые абстрактные понятия. На главную форму повесим пару кнопок для перехода по записям. Их нам, без проблем, создаст "мастер кнопок".

На следующем шаге, сделаем подчиненную форму, у которой для свойства "Режим по умолчанию" выберем значение "Таблица". Источником записей этой формы, естественно, будет таблица "Тов".

Сейчас нам остается открыть в конструкторе главную форму по товарным группам и перетянуть на нее мышкой подчиненную табличную форму. После такого перетягивания, самые главные свойства подчиненной формы создадутся автоматически.

Для того, что бы еще лучше понять зачем нам нужны подчиненные формы, я приведу цитаты из справочной системы самого Access, коими он просто завален (правда, когда нужно найти что-то конкретное частенько именно этого и не находишь:)

Подчиненная форма - это форма, находящаяся внутри другой формы. Первичная форма называется главной формой, а форма внутри формы называется подчиненной формой. Комбинацию «форма/подчиненная форма» часто называют также иерархической формой или комбинацией «родительской» и «дочерней» форм.
Подчиненная форма удобна для вывода данных из таблиц или запросов, связанных с отношением «один-ко-многим». Например, можно создать форму с подчиненной формой для вывода данных из таблицы «Типы» и из таблицы «Товары». Данные в таблице «Типы» находятся на стороне «один» отношения. Данные в таблице «Товары» находятся на стороне «многие» отношения -- каждый тип может иметь несколько товаров.

Главная форма и подчиненная форма в этом типе форм связаны таким образом, что в подчиненной форме выводятся только те записи, которые связаны с текущей записью в главной форме. Например, когда главная форма отображает тип «Напитки», подчиненная форма отображает только те товары, которые входят в тип «Напитки».
При использовании формы с подчиненной формой для ввода новых записей текущая запись в главной форме сохраняется при входе в подчиненную форму. Это гарантирует, что записи из таблицы на стороне «многие» будут иметь связанную запись в таблице на стороне «один». Это также автоматически сохраняет каждую запись, добавляемую в подчиненную форму.

Подчиненная форма может быть выведена в режиме таблицы, как на предшествующей иллюстрации, или она может быть выведена как простая или ленточная форма. Главная форма может быть выведена только как простая форма. Для рассмотрения примеров разных типов подчиненных форм нажмите кнопку .
Главная форма может содержать любое число подчиненных форм, если каждая подчиненная форма помещается в главную форму. Имеется также возможность создавать подчиненные формы двух уровней вложенности. Это означает, что можно иметь подчиненную форму внутри главной формы, а другую подчиненную форму внутри этой подчиненной формы. Например, можно иметь главную форму, в которой выводятся данные о клиентах, подчиненную форму, выводящую данные о заказах и другую подчиненную форму, которая отображает то, что заказано.

Вернемся к нашим баранам.
В результате проведения выше описанных действий, мы получаем следующую картину:

Интуитивно хочется добавить внизу формы общую сумму по полю "На нач (шт)" по всей группе. Для этого в подчиненной форме добавляем свободное поле, для которого в свойство "Данные" вводим формулу: =Sum([НачШт]).

Так же, в главную форму добавим свободное поле, для которого зададим такую формулу (скорее даже не формулу, а ссылку): =[Товар_].[Form]![ПромежуточнаяШт] , где Товар_ - это имя подчиненной формы; ПромежуточнаяШт - это имя нашего расчетного поля в этой подчиненной форме.

Повесим на главную форму еще выпадающий список товарных групп для быстрого поиска и перехода на нужную группу (как в форме "Клиенты") и сделаем простенький отчет по товару.

На этом наша работа по созданию инструментов для ведения справочника товаров завершена. Если у Вас возникнут вопросы по ходу изучения, то задавайте их на нашем форуме. Желаю успехов!

Новости раздела "FORUM+"

 

Последняя десятка =о)

 

14 июля 2001 г.
В рубрике Forms обновление. Добавлено: Подсветка записи в ленточной форме №2 .
Краткая аннотация: Хорошо, когда при вводе и просмотре значение поля меняет свой цвет в зависимости от поставленных условий


14 июля 2001 г.
В рубрике Files обновление. Добавлено: Копирование и удаление каталога.
Краткая аннотация: Пока только удаление каталога и его дерева... Чуть позже добавлю и копирование ...


14 июля 2001 г.
В рубрике DB - защита обновление. Добавлено: Открыть форму, скрыть базу.
Краткая аннотация: Запуск только одной формы без главного окошка СУБД "Microsoft Access"


14 июля 2001 г.
В рубрике Report обновление. Добавлено: как подсчитать число группировок?.
Краткая аннотация: no comment


14 июля 2001 г.
В рубрике Общие обновление. Добавлено: Заставка Access.
Краткая аннотация: При открытии Аксесса будет появлятся не стандартная заставка Аксесса, а любой другой нами установленный *.BMP файл.


14 июля 2001 г.
В рубрике Files обновление. Добавлено: Размер и дата последнего изменения файла.
Краткая аннотация: no comment


14 июля 2001 г.
В рубрике Forms обновление. Добавлено: Убрать слово "Ошибка" .
Краткая аннотация: Когда программист знает, что значений для вычисляемомого поля в форме не будет. Как избавиться от слова "Ошибка"?


14 июля 2001 г.
В рубрике Forms обновление. Добавлено: VBA & конструктор формы.
Краткая аннотация: Как можно программно переименовывать на форме в подчиненной таблице заголовки названий выводимых столбцов.


14 июля 2001 г.
В рубрике Table,SQL,Query обновление. Добавлено: Таблицу в массив №1.
Краткая аннотация: Хелп из Аксесса + отсебятина :) Занести в строку значение поля с предыдущей строки. Как один из вариантов (не самый лучший, скорее как демонстрация)


6 июля 2001 г.
В рубрике Table,SQL,Query обновление. Добавлено: Определить текущую запись в таблице.
Краткая аннотация: Да, именно не в форме а в таблице...


 

Красивое представление количества записей

Mike & Владимир


Лиза
17.05.2001


От: Лиза 17.05.2001 17:57:13
Красивое представление количества записей в таблице
Есть форма (красивая):)) Как сделать так, чтобы количество записей,
имеющихся в таблице и представленных в форме (особенно это важно в форме,
являющейся результатом работы фильтра) было показано не просто внизу,
как это обычно делается,а как-нибудь поэстетичнее в форме, чтоб бросалось в
глаза? Наверняка же это очень просто.



Quick_yak
17.05.2001


От: Quick_yak 17.05.2001 18:09:47
Re:Красивое представление количества записей в таблице
Создаешь элемент Эл в форме
При нажатии кнопки вводишь процедуру:


Dim rstSrc As Recordset
Set rstSrc = Me("подчиненная форма Основные фонды").Form.RecordsetClone
If rstSrc.RecordCount < 1 Then 'Нет записей в форме
MsgBox "В исходной форме отсутствуют " & Chr(10) & Chr(13) & "строки для вывода в отчете" _
& Chr(10) & Chr(13) & "(возможно надо удалить фильтр)", vbInformation, "Ошибка"
Exit Sub
End If '.RecordCount < 1
With rstSrc
.MoveLast
.MoveFirst
End With



Эл.Value = rstSrc.RecordCount



Лиза
17.05.2001


От: Лиза 17.05.2001 18:25:56
Re:Красивое представление количества записей в таблице
У меня при этом ничего не происходит, учитывая что
я все под свой вариант переделала:(



Владимир
18.05.2001


От: Владимир 18.05.2001 8:10:54
Re:Красивое представление количества записей в таблице
Достаточно Элегантно выглядит


Me.caption=Me.caption & ", Кол.записей = " & rst.recordcount




Владимир
18.05.2001


От: Владимир 18.05.2001 18:16:35
Re:Красивое представление количества записей в таблице
Уточнение, если кто заметил ...& str(rst.recordset)



Mike
18.05.2001


От: Mike 18.05.2001 11:08:25
Re:Красивое представление количества записей в таблице
наверное, не очень правильно цеплять всю эту красивую процедуру на FormOpen, поскольку данные не будут обновляться при добавлении и/или удалении записей. тогда уже надо цеплять на событие перехода к новой записи. только это уже будут конкретные тормоза (особенно если базу куда-нибуть в сетку выложить :)



Marat
19.05.2001


От: Marat 19.05.2001 0:14:21
Miku i Vladimiru
Da, pricepitt mojno kuda hochesh, mojno i na Caption, na knopku, na caption, voobcshe-to simpatichnaya ideya. Ogranichenie v osnovnom na fantaziyu. Na Form_Open ya by postavil, chtoby bylo prochse. Dlya obnovleniya vpolne mojno ispollzovatt Timer. Kajdyi chas skajem, ili 10 min. Na to i programmirovanie, che hotim to i delaem.

 


 

Передача значений из формы в форму

Vladimir & Silich


Vadik RV
18.05.2001


От: Vadik RV 18.05.2001 6:29:47
Передача значений из формы в форму и т.д.
Проблема такая, есть значит у меня много форм в которых в почти в каждой есть поле Дата и одна форма с календарем. Как сделать так чтобы при выборе даты ее значение писалось в поля формы. И чтобы календарь я мог вызвать из любой формы кнопкой или каким другим событием?



Владимир
18.05.2001


От: Владимир 18.05.2001 8:17:18
Re:Передача значений из формы в форму и т.д.
Делаешь форму типа "всплывающее окно".
После выбора, изменения данных - свернуть.
В рез-те она всегда доступна и можно использовать любые поля из нее.
Если надо - разворачиваешь и меняешь данные.
(Неплохо выкрутился - Прим.GS:)



silich
18.05.2001


От: silich 18.05.2001 12:35:24
можно так
1.допустим у тебя есть форма - календарь
2.при вызове из формы (в которую хочешь вписать дату из календаря) передаёшь в форму-календарь параметры ИмяВызывающей формы и ИмяКонтрола в который нужно дату вписать (Screen.ActiveForm и Screen.ActiveControl)
3. При выборе даты вписываешь значение по переданному адресу :))
4. Не забудь (для приличия ;) проверить - открыта ли у тебя форма - приемник ;))
(Если прошлый совет недолет - здесь, возможно - перелет для новичка- Прим.GS =о)



GardenStone
18.05.2001


От: GardenStone 18.05.2001 17:34:13
Вызовом функции. Для всех форм
Мне представляется удачным следующий способ:

1. Делаешь форму с календарем
2. Делаешь Функцию InpDate


Function InpDate () As Date

' параметр acDialog останавливает функцию до закрытия формы
DoCmd.OpenForm "Форма_с_календарем", acNormal, , , , acDialog
'Когда в форме будет установлена дата, при
'закрытии передадим значение функции
InpDate = Form![значенин календаря]
End Function



' очевидно, что после выбора даты, форму надо закрыть
' будет это сделано автоматически, или через кнопу "Close" - не принц.

3 В любой форме вызываешь функцию:
Me![Поле_дата] = InpDate
No comment



Vadik RV
21.05.2001


От: Vadik RV 21.05.2001 3:46:18
Re:Передача значений из формы в форму и т.д.
Всем большое спасибо!
Натолкнуло на мысль и сделал вот как, не знаю насколько правильно, так как программировать только начинаю. Назначил в общем модуле две переменных, одна as TextBox другая as Variant в вызываюшей форме присваиваю значение TextBox имя нужного контрола и открываю календарь, а в календаре на событие Click контролу задаю значение календаря. Тогда можно и вручную дату вгонять и с помощью календаря.
(Но все-таки через переменные модуля:)- уже неплохо - Прим.GS =o)

 

Новости MSA.KM.RU

  • Сейчас происходит переорганизация всего субпортала. Вот его новое название: "Технологии программирования".
    Выпуск рассылки прекращен не будет. Тема "MS Access" займет свое достойное место наряду с новыми темами, которые мы сейчас готовим.

    Эта переорганизация затянется на некоторое время, так что заранее приносим свои извинения за возможные сбои в работе субпортала.

    Большое спасибо нашим постоянным читателям, мы постораемся оправдать все Ваши надежды.
    Заходите почаще к нам на огонек:)

 

Новые темы форума

 

   Значение типа Like"*"   (1)

   а можно в 97-ом вызвать событие, например   (2)
   ADODB.recordset   (0)
   Жесткая форма отчета....   (1)
   и шо з цим робыть?   (2)
   Удаление записи из связанных таблиц из формы   (2)
   Как открыть форму, расположенную в другой базе (база в данный момент запущена) ?   (2)
   Какие разделители использует ADODB?   (1)
   Постраничные итоги!   (4)
   Dayu otchet po stranomu povedeniy subreports.   (3)
   Как записать в поле номер записи?   (1)
   Подскажите. А то уже голову разбил о стену :-)   (9)
  Научите получать ключ(счетчик) последней записи, а?   (1)
   Научите получать и работать с только одной записью, пожалуйста :)   (2)
   Русификация сообщений об ошибках   (1)
   ...

Разбор матча смотри в FORUM+.


Архив Рассылки

 
Рассылка 'Работа с MS Access'

При перепечатке или любом другом публичном использовании материалов ссылка обязательна.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное