|
|
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
Hello, Есть таблица в которой содержаться изделия и таблица с номенклатурой документов (изделия, ко-во, etc) которые ссылаются на эти изделия. В таблице с изделиями содержиться порядка 100'000 записей. В год добавляется по ~20'000 тысяч записей. Необходимо сделать редактор номенклатуры документов. В списке номенклатуры нельзя сделать combobox из-за огромного количества записей в таблице с изделиями. Я пока сделал следующим образом: Список номенклатуры это отключенный рекордсет в котором можно задавать количество, etc добавленных изделий. Изделия добавляются при помощи специального фильтра (можно несколько записей сразу). Может как-нибудь можно попроще сделать? Интересно услышать от опытных програмеров какбы они это сделали. Project -> ADE + Access 2003 + SQL Server 2003 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 18:35 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
ИМХО Access XP (ADP) + MS SQL 2000 Я никогда не делаю combobox на источнике который вернет более чем x*100 записей. Для выбора всяких кодов из присоединенных таблиц (т.е. справочников) нарисована универсальная форма (так и называется выбор из справочника) с модулем класса. Форма настраивается на любой справочник, и может возвращать значения в любое поле любой формы. Имеет поле для поиска. На форме ставится кнопка, поле для ввода значения и закрытое поле для подсвечивания расшифровки значения справочника. Для аналогии можно посмотреть как реализована справка в новых продуктах Microsoft. Открыл справку: если без контекста то разделы не выводятся, в поле поиска набрал текст, нажал кнопку - получил список разделов; если открыл справку с контекстом, то справка сразу окрывается со списком необходимых разделов. Примерно также у меня реализована форма выбор из справочника. Насколько мне известно Senin Viktor делал примерно тоже самое, но с использованием какого-то ActiveX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 18:53 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
Проблема в том что combo box был в под-форме (datasheet). У меня сейчас примерно тоже самое. Только вот смущает то что у меня часто получаются формы с отключенными recordset'ами. То глючит обновление вида то связи таблиц то еще чего-то. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 19:31 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
http://www.hiprog.com/forum/forum.asp?action=show&id=6&messid=45040&fullview=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 19:47 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
Блин, а при чем здесь философия? И при чем здесь аксес? Вопрос, в общем-то, классический для клиент-серверных технологий: Как переслать клиенту 100000 записей? и ответ на него классический: Клиенту не нужны 100000 записей В форме отображать название. Для выбора товара - использовать деревья, классификаторы, фильтрацию по названию, все что угодно, но не комбобокс со 100000 записей, ибо это бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 20:31 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
Может не очень точно выразился. У меня данные вносятся в datasheet. Выбор изделия через отфильтрованный combo box в datasheet невозможен, так как если какая-то запись из datasheet не попадет в список отфильтрованных значений то на ее месте будет пустота. Я сделал это через отключенный recordset и диалог добавления изделий. И все работает удобно быстро и просто для пользователя. Но: У меня довольно много таких случаев (с отключенными recordset'ами) и может я что-то недопонимаю или немного не правильно использую (я в Access совсем зеленый). Вот к этому и относиться вопрос по философии (так как каждый язык, api, etc подразумевает свой собственный стиль, подход, архитектуру, etc). И ни кто не будет спорить если сказать что с использованием ADO и OCI один и тот же проект будет написан поразному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 02:38 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
где взял SQL Server 2003 ???? дашь скачать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 10:44 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
2 Pavel Krupets Во-первых. Сначала данные у тебя отображаются в datasheet. Для отображения данных комбобокс не нужен. Достаточно обычного текстового поля с наименованием. Значение этого поля приходят с сервера как разультат джойна состава с номенклатурным справочником. Во-вторых. Datasheet у тебя используется для ввода данных, причем ввод осуществляется через комбобокс с 100000 записей. Не могу поверить, чтобы пользователю это было удобно. Из этого предположения (что пользователю неудобно ползать по списку с 100000 записей) и рассуждаю дальше. Для эффективной работы необходимо эти 100000 записей разбить на группы, сделать деревянный просматривальщик, ввести признаки товаров, сделать возможность фильтрации по этим признакам. По возможности стремиться к тому, чтобы пользователю приходилось выбирать максимум из сотни товаров. В этой сотне еще сделать быстрый поиск по первым буквам и/или фильтрацию по части наименования. Очевидно, что такую конструкцию не запихнуть ни в комбобокс, ни в два комбобокса. Разумным выглядить решение в виде popup-формочки, в которой пользователь выбирает все что ему нужно, туда же можно выводить, например, текущие складские остатки, описание для выбранного товара, да и кучу всего. Пользователь выбирает товар, по дабл-клику или чему-нибудь еще выбранный товар заносится в документ, а пользователь выбирает следующий товар. Выбарные товары отображаются в составе документа в обычных полях, а не полях со списком. В-третьих. Недавно проскакивало решение с комбобоксом. Latuk пытался минимизировать сетевой трафик. Предлагал пересылать с сервера на клиент не наименования товаров, а их ID-шники. А наименования получать на клиенте да-да, с помощью комбобокса на отсоединенном рекордсете. НО! Это была попытка именно минимизации сетевого траффика, и этот комбобокс не предназначался для выбора товара . (Собственно, у Latuk'а и возник вопрос - как убрать стрелочку у комбобокса, и вообще запретить ему раскрываться). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 16:09 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
2Лох Позорный Я еще в самом первом сообщении написал что нет у меня комбобокса а есть специальная форма фильтр в которой пользователь вводит раззные данные по которым он хочет получить изделия. После чего из отфильтрованных изделий отбирает необходимые и добавляет. Так как в номенклатуре есть два поля обязательных к заполнению используется отключенный recordset (изделия вставляются туда с этими олями = NULL). В уже отобранных и добавленных изделиях пользователь может редактировать только два поля все отсальные текстовые и locked. Вопрос больше о том что у меня довольно часто используются отключенные рекордсеты и я думаю что это немного не правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 16:35 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
Я еще в самом первом сообщении написал Ну извиняй, торможу видать :) есть специальная форма фильтр в которой пользователь вводит раззные данные по которым он хочет получить изделия. После чего из отфильтрованных изделий отбирает необходимые и добавляет Пока не вижу ни необходимости пересылать на клиента 100000 записей, ни необходимости держать отключенный рекордсет. Так как в номенклатуре есть два поля обязательных к заполнению используется отключенный recordset (изделия вставляются туда с этими олями = NULL). Номенклатура - это состав документа? Зачем здесь отключенный рекордсет? Выбрал изделие - жамкнул кнопку - добавил запись в состав документа. Пока все и без отключенных рекордсетов работает. Вопрос больше о том что у меня довольно часто используются отключенные рекордсеты и я думаю что это немного не правильно. Вот и я не могу понять - зачем они у тебя используются? Внимательно прочитав твои посты понял, что вроде бы твоя реализация совпадает с моим видением, но только у меня ничего не отключается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 16:47 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
Чего не понял - пробую протелепячить Отключенный рекордсет у тебя используется: В спецформочке для ввода новых записей (в состав документа aka номенклатура)? Т.е. ты сначала на клиент шлешь весь набор изделий, и уже на клиенте фильтруешь, сортируешь и т.п. в соответствии с пользовательскими действиями? Если так - то (имхо) это не есть правильно. или же Отключенный рекордсет у тебя используется: Для добавления в состав документа (aka номенклатура) сразу нескольких записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 16:57 |
|
||
|
Вопросы по философии программирования в Access
|
|||
|---|---|---|---|
|
#18+
У меня в отключенном recordset'е находяться только выбранные записи. В фильтре только отфильтрованные я ни когда не читаю всех записей (в фильтре есть против этого защита). В отключенный рекордсет добавляются по N записей из фильтра и так как у всех этих записей есть 2 поля NOT NULL то подключенный рекордсет нельзя использовать (пользователи против значений = 0). После добавления пользователи редактируют эти поля (изменять изделия не могут, их можно удалить и через фильтр добавить новые). Добавлять по 1 записи нельзя, так как это жутко не удобно (часто добавляются изделия в чем то-похожие) Еще один случай это редактирование через view с istead of тригерами. Если использовать подключенные recordset то выдает сообщение что данные были изменены другим пользователем (оменить/скопировать/повторить), хотя данные записывабюся в базу. Тут что-то говорили про ХП но толком ни чего не объяснили. Может форму на ХП основывать? Только как это сделать (in out параметры как будут работать, как определить момент чтения записи, или они имели ввиду руками вызывать при загрузке ХП load_something а при сохранении save_something, тогда это тоже что и через view) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2003, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32358638&tid=1677532]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 434ms |

| 0 / 0 |
