powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Идеология построения форм
38 сообщений из 38, показаны все 2 страниц
Идеология построения форм
    #32008607
AlexUnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чаще всего вопросы использования Access пересекаются с вопросами использования SQL Server - интересно, куда кидать question в этом случае?
В общем, у меня есть справочник товаров. Его необходимо соотнести со справочником марок товаров. Структура первого справочника разработана не мной, поэтому всякая возможность его изменения отпадает Второй справочник содержит идентификатор, наименование марки и немного другой информации. Проблема еще и в том, что товар может принадлежать нескольким различным маркам (например, шина автомобиля, пригодная нескольким видам авто). Для исключения связей "многие ко многим" введена промежуточная таблица, содержащая идентификаторы товара и идентификаторы марки. Таблицы размещены на SQL Server7. Заполнение должно быть в Access2000.
На данный момент у меня реализована форма, имеющая в себе три таблицы - в первой (верхней) находится справочник товаров, вторая (середина формы) содержит список марок, третья (нижняя) выводит содержащиеся в выбранном списке товары. Выбор товаров из верхней таблицы осуществляется их выделением левой кнопкой мыши с использованием клавиш SHIFT (для непрерывного выделения), CTRL (для выделения отдельных позиций). Затем выбранные позиции переносятся в нижнюю таблицу. Доступ к данным реализован через ODBC.
Эта форма хороша только если позиций товара немного (для облегчения работы внесена кнопка фильтрации по группам товаров)...
Быть может, я пошел по неверному пути при разработке структуры справочника (я был ограничен имеющейся структурой). Или можно сделать более удобную форму??? Мне было бы очень интересно услышать различные мнения по поводу идеологии построения форм в Access.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32008829
cube
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я придерживаюсь такой идеологии:

1. Форма содержит только "свободные" поля. Прямиком в таблицу НИЧЕГО НЕ ВВОДИТСЯ.
2. Записи основной таблицы (хранящей записи с объектами) отображаются в виде списка типа ListBox, служащего для навигации.
3. При активизации очередной записи в списке в соответствующих полях типа Edit отображаются поля текущей записи (некоторые из них могут быть заблокированы).
4. Значения полей могут быть изменены.
5. По кнопке Add "собирается" новая запись из значений в эдитах и выполнятеся запрос INSERT
6. По кнопке Change текущая запись обновляется значениями эдитов
7. Если в таблице исп. внешние ключи, то для таких полей создаются соотв. листбоксы, в которых отображаются отфильтрованные данные (либо неотфильтрованные для возможности выбора). Каждый листбокс содержит кнопку [...], по которой открывается форма для соотв. подчиненной таблицы.
8. При необходимости содержимое полей используется для поиска (различные LIKE - запросы). Результаты поиска отображаются в дополнительном листбоксе. При перемещении по нему, в основной таблице активизируются "найденные" записи.

Вот таким вот образом, Лом... (с).
Похожая стратегия реализована в 1С.
И еще: такую систему я отработал, когда пришлось совмещать работу оператора (работать с базой) и программиста. Такое построение форм оказалось наиболее безопасным (в плане контроля вводимых данных) и удобным для меня.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Идеология построения форм
    #32259123
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то мало мнений по такому хорошему вопросу...
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259148
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот человек говорит "Форма содержит только "свободные" поля. Прямиком в таблицу НИЧЕГО НЕ ВВОДИТСЯ."
То есть, как я понял, для ввода данных связанные формы он предлагает не использовать. А у меня таких много...Если он прав, придется переделывать :-(
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259156
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня таких много...Если он прав, придется переделывать :-(

А ЛП сегодня сказал, что у него все формы имеют обработку OnOpen. А у меня в программе, с которой я сейчас работаю, трети форм совершенно параллельно, что они открылись... :( И что же - мне тоже переделывать? :((

Ну и что же, как способ, это может быть и неплохо. Но закона такого пока нет. Где то так удобнее, возможно, а где-то и по старинке можно... :)
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259159
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое-то говно всплыло

Что-то мало мнений по такому хорошему вопросу...
Да потому что херня полная понаписана.

Первый пост - бред. Человек обрадовался и всем расказал про связанное выделение в листбоксе + таблицу для связи многие-ко-многим (причем для "исключения связей многие ко многим" )
Да, еще "доступ к данным через ODBC"

Второй пост - бред. Бред с точки зрения аксеса. На VB ему программировать - только там такие формы можно лепить. Да и то если полениться нормальные контролы найти.

Интересно, почему такая несправдливость? Поднять говнотопик просто, а скрыть его нафиг с глаз долой - несколько лет должно пройти и то найдутся умельцы, которые его отроют
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259160
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А зачем его скрывать? Пусть будет как в жизни.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259870
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный
А все ж если по существу. У меня есть форма (вводная) основанная на запросе, в котором несколько сотен тысяч строк. По-вашему хорошо вводить туда данные с помощью связанных с данными контролов?
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259887
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да хоть с помощью рукописного текста, сканера и распознавалки данные вводи.
Какая нахер разница сколько в запросе тысяч строк? Если форма только для ввода - "Ввод данных"="Да" в конструкторе поставь. И на всякий случай в базовый запрос "Where False" добавь.
Имея афигетельный контрол под названием "аксесовская форма, связанная с данными" писать самому формы, несвязынные с данными чтобы потом значения из свободных контролов переписать опять таки в базовый набор - маразм.
Любой маразм может быть иногда востребован, но "придерживаться такой идеологии" - дурость.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259915
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный,
А не накладно ли ради добавления одной строки такую огромную таблицу через сеть прокачивать?
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259926
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перепопытка номер два

Какая нахер разница сколько в запросе тысяч строк? Если форма только для ввода - "Ввод данных"="Да" в конструкторе поставь. И на всякий случай в базовый запрос "Where False" добавь.

На всякий случай объясню. Если "Where False", то записей 0. Глюпому аксесовскому интерпретатору это понятно, и ничего он никуда не качает. Это должно спасти в случае, если "Ввод данных"="Да" не возымеет такого эффекта (хотя по идее должно).
...
Рейтинг: 0 / 0
Идеология построения форм
    #32259981
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный,
Насчет этого я понял, просто беда этой несчастной формы (делал которую, к счастью, не я) в том, что она используется не только для ввода, но и для просмотра. И каждый раз, когда надо показать одну строчку, по сети летит огромная таблица...А один раз кто-то случайно тронул колесико у мыши, и такое началось, что даже сказать страшно.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260022
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это уже совсем другой вопрос.
Если тебе нужно просматривать ВСЕ записи (ну и редактировать их) - то по другому ты никак и не сделаешь. И несвязанные контролы тебе не помогут.
Только скорее всего все записи не нужны. В лучшем (худшем) случае можно сделать пользовательский фильтр. Т.е. делаешь, к примеру, поле - "Показывать документы за ххх дней". По обновлению этого поля изменяешь базовый набор записей (как - уже зависит от версии аксеса, мдб/адп и т.п.) и обновляешь форму. Всего-то и делов.
И будет у тебя на экране только то, что нужно, и по сети огромные объемы не будут прокачиваться, и наступит полное щастье.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260036
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос "Select * from BigTable Where ...",
насколько мне известно, сперва все таблицу прокачает, а уже потом покажет результат, даже если он выражается всего одной строкой.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260039
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Varan:

Значит, надо делать Pass-Through. Тогда Where отработает на сервере.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260043
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но это только если сервер не Аксесс. Аксесс и так должен понимать.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260049
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владдимир Саныч, "Значит, надо делать Pass-Through."
Что это такое? Под ADP?
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260052
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Запрос "Select * from BigTable Where ...", насколько мне известно, сперва все таблицу прокачает, а уже потом покажет результат, даже если он выражается всего одной строкой.

это зависит от того что ты используешь...
если MDB то вообще прокачивается весь файл .
если ADP то только отобранный результат запроса
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260053
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тогда View.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260058
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК, mdb
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260069
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если MDB то вообще прокачивается весь файл .
Ну здрасте приехали

Весь файл уж точно никогда не прокачивается.
Select * From Table Where что-то - прокачивает таблицу или нет -зависит именно от что-то.
Если выборка по индексам - как вариант (не всегда) прокачаются только индексы, а уж потом выкачаются нужные тебе три записи из миллиона. Поэтому грамотно индексируй.
Select * Where False не качает данных. Я это не проверял прямо щас, но буду очень сильно удивлен если это не так.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260077
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный
Чего тогда возвратит запрос "Select * From BigTable Where false" Если он "не качает" данные?
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260079
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Догадайся с трех раз. Если не догадаешься - это станет твоим домашним заданием.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260090
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный,
ничего не возвращает, проверил. Но, по-моему, более правильно добалять запись через insrt into и несвязанные контролы, чем через такой запрос и связанные контролы...
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260111
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но, по-моему, более правильно добалять запись через insrt into и несвязанные контролы, чем через такой запрос и связанные контролы...

А по-моему неправильно

Если вернуться к исходному названию топика, то у меня идеология следующая:
- имеется форма поиска - простая форма без источника на ней параметры поиска, несколько кнопок и подчиненная форма с источником по указанным параметрам, обновление данных по кнопке, подчиненная форма только на просмотр, но не редактирование.
- имеется форма ввода/редактирования одной записи, открывается по кнопке либо на существующую запись в подчиненной форме (см. выше), либо на новую запись по кнопке главной формы.

Внешне примерно как в адресной книге в Outlook (с учетом особенностей, описанных выше).
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260117
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
incold,
"Если вернуться к исходному названию топика"
Меня проблемы автора топика не очень волнуют. В данный момент меня волнует следующее :
- Как правильно добавить запись в большую таблицу
1. Связанный с данными контрол
2. Несвязанный с данными контрол.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260125
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот ведь непонятливый какой
Добавить - лучше запросом.
Узнать что именно добавить - через форму и контролы.
Узнать что именно добавить и добавить - или несвязанная форма и запрос, или связанная форма. Второй вариант - то же самое по сути но работы меньше.
Хочешь делать работу, которую за тебя разработчики аксеса уже проделали - делай. На фига только тебе тогда аксес - загадка. Программируй на VB и не парься.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260142
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как это проблемы автора топика не волнуют?!
Твоя проблема - это "те же яйца, только в профиль"!!!
(прошу прощения не сдержался)

ЛП уже полдня тебе пытается объяснить, что создание несвязных контролов, для добавления/редактирования данных - это дублирование того, что уже сделано в аксесс.

Повторяю:
Для работы с большими таблицами две формы: одна ленточная - поиск без редактирования, вторая простая - на одну запись редактирование или добавление.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260153
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще, что значит "Проблемы автора топика не волнуют"?
Нафига тогда поднимал топик двухгодичной давности?
...
Рейтинг: 0 / 0
Идеология построения форм
    #32260156
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный,
А он у меня мысль пробудил.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32262220
Michael Vasilev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Признаюсь, я тоже рисую для ввода несвязанные формы.
В ADP не пробовал, а с MDB когда то занимался связаннымы формами и возник вопрос отмены. Если пользователь что то вносил, вносил форму, а потом нужно это все отменить. Пример: заносится новая накладная и пользователь передумал ее сохранять? Например клиент деньги забыл. Насколько я в то время разобрался в связанной форме записи заносятся сразу в таблицу. А как потом отменять? Ваять запрос?
А когда несвязанные, то тогда четко контролируется сохранение чего либо в базе через кнопочку "Сохранить".
Или я просто не в курсе, как четко работают связанные формы на ввод?
...
Рейтинг: 0 / 0
Идеология построения форм
    #32262281
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Michael Vasilev
Одну запись вводить - кнопку Esc нажал, все и откатилось.
Кучу записей вводить (типа состава документа) - во-первых, как ты это будешь делать с случае несвязанных форм, во-вторых это и со связанными решается.
В случае 2000-го аксеса и выше - вешаешь форму на открытый тобой рекордсет, начинаешь транзакцию и в нужный момент говоришь либо Commit, либо Rollback. Всего то и делов.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32262330
Michael Vasilev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С одной записью попробовал, ESC работает. Вариант имеет право быть. Придется правда вешать обработчики на закрытие формы внезапное, что бы запись не сохранялась и думаю если питание пропадет, то запись тоже сохраниться.
Хотя несвязанная как то надежнее (мой субъективный взгляд, а может привычка просто), там не при каких обстоятельствах данные не запишутся в таблицу без моего ведома.

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

Только что попробовал со связанными. Главная связанная форма типа заголовок накладной на ввод данный, а подчиненная ленточная наименования. Когда я перехожу на подчиненную в гланой запись сохраняется и уже ESC не откатывается. Или ее тоже нужно на транзакцию цеплять?
Вешать форму на рекордсет и открывать транзакцию - хорошая мысль.
А как там будет с блокировками? Поделись опытом. Если пользователи имеют свойство оставлять не добитую накладную, к примеру, и уходить на обед. Сразу оговорюсь, что типы блокировок я знаю. Только вот нет опыта работы с большим >10 количеством юзеров.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32262378
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и думаю если питание пропадет, то запись тоже сохраниться
И совершенно зря так думаешь.
Закрытие формы - да, вызовет сохранение. И не только закрытие. Правильно было бы ловить BeforeUpdate у формы, и отменять если что не так.

Про временные таблицы ты сам сказал. В 97-м так и делаю. Потому как Me.Recordset у формы отсутствует.

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

А как там будет с блокировками?
Ровно так же, как если ты сделаешь BeginTrans: rst.Edit: ... : rst.Update и уйдешь курить не сделав Commit. Т.е. блокировки будут висеть до наступления Commit'а.
У Гетца есть пример реализации таймаута. Когда начинаешь редактирование - запускается таймер, который через некоторое время выдаст тебе предупреждение, а потом и отменит все твои изменения (нефиг жрать). Блокировки снимутся.

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

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

З.Ы. А вообще весь этот гемор из за того, что отсутствует доступ к внутреннему аксесовскому workspace'у, в котором и работают все формы. Иначе достаточно было бы просто делать BeginTrans и Commit/Rollback для этого workspace'а. Ну, нет так нет. Хорошо что хоть дали возможность подсовывать форме рекордсет, открытый в подконтрольном тебе workspace'е (connection'е)
...
Рейтинг: 0 / 0
Идеология построения форм
    #32262916
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Vasilev
То, что Вы рассказываете о своей манере изготовления вводных форм (локальные темп-таблицы и.т.п..), напоминает мне то, что я тут недавно прочитал про ADO.net. Там никаких рекордсетов вообще нет, а есть dataset и dataadapter. И так все сделано, что в момент ввода подключения к базе вообще нет, оно возникает только когда это нужно...(прошу прощения, если коряво чего сказал, я в этом еще не особенно разобрался, да и не пробовал сам это использовать...)
...
Рейтинг: 0 / 0
Идеология построения форм
    #32304616
bindu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я рад, что существуют идеологи типа Cube.

Игнорируя всю несущественную критику, обращаюсь напрямую:

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

bindu@laborant.ru
...
Рейтинг: 0 / 0
Идеология построения форм
    #32305370
Самовар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И мне тоже пожалуста.
Данный вопрос меня тоже давно озадачивает, хотя я склоняюсь к мысли что связанные контролы 1-ускоряют разработку клиента, 2-не нужно заботиться целостности, преобразовании типов.
Пакетные транзакции в табличной части документа по типу 1С (записать/провести) имеют больше минусов чем плюсов.Представьте сидел оператор выбивал накладную полдня на 500 позиций клиенту по телефону, а в конце выясняется что товара осталось только на 100 позиций остальное пока он набивал документ другие операторы растащили. Такие вопросы должны решаться путем использования различных статусов у документа записан/зарезервирован/собран/отгружен/ и т.п.
...
Рейтинг: 0 / 0
Идеология построения форм
    #32305372
Самовар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите забыл свое мыло ikc_vector@mail.ru
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Идеология построения форм
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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