Форма и ХП

Чумаков А.
Дата: 27.05.2004 10:03:58
Access 2000, SQL 2000, adp
Была форма на основе ХП (заявка от клиента):

Alter Procedure Form_Demand
@DemID INT
As
SELECT dbo.Demands.*
FROM dbo.Demands
WHERE (DemandID=@DemID)

на форме было поле со списком (список строк на 8000), форма открывалась долго, т.к. данные для списка тянулсь (справочник грузов).
Зато можно было сначала поля формы все заполнить, а по кнопке "Записать" проверить правильность и присвоить уникальный номер заявки.

Для ускорения открытия формы, поле со списком заменил на обычное поле (выбранный груз), а источник записей для формы переделал в

Alter Procedure Form_Demand
@DemID INT
As
SELECT dbo.Demands.*, dbo.Cargo.Cargo AS CargoDem
FROM dbo.Demands LEFT OUTER JOIN
   dbo.Cargo ON dbo.Demands.Cargo = dbo.Cargo.IDCargo
WHERE (DemandID=@DemID)

Процесс (длительность) открытия всем очень понравилась, НО
для новой записи (пока она не сохранена) невозможно выбрать груз, т.к. насколько я понимаю нет еще ID у записи и ХП источника записи не может связать таблы. Пришлось изначально открывать уже добавленную запись с сгенерированным номером заявки. Все ничего, но с проверкой на правильность заполнения траблы.

Как сделать, чтобы проверка и генерация номера заявки происходили при ХП по 1 варианту, а груз можно было выбирать по 2, дабы открывалась быстрее ?
paparome
Дата: 27.05.2004 10:14:07
ничего не понял
точнее почти ничего :(

8000 грузов - многовато :(
может стоит разбить грузы на категории и выводить 2 комба:
- категория груза
- груз

в зависимости от выбора первого комба подменять RecordSource второго
Если хотя бы сделать 200 катеорий, то в каждой из них будет ~ по 400 грузов

ИМХО: и грузиться будет быстро (200 + 400 = всего 600), и людям будет проще груз искать (8000 - человек уже не воспринимает, если честно, то человек и 100 записей уже плохо воспринимает :( )
Чумаков А.
Дата: 27.05.2004 12:13:47
вопрос не про то.
При заведенной заявке форма открывается влет и заменить груз тоже можно.
Проблема с новой заявкой, если я открываю форму в режиме добавления записи, то пока запись не сохранена нет возможности выбрать Груз (т.к. поле со списком я убрал и заменил его вызовом формы со списком грузов (с фильтрами, граппами там и прочее), но при выборе нужного груза из 2-й формы я пишу

Forms![Demand]![CodeCargo]=Forms![ListCargo]![CodeCargo]

и Access не может отобразить в форме Demand названия груза в простом поле, т.к. запись в Demand еще не сохранена и у нее нет еще ID.
paparome
Дата: 27.05.2004 12:20:05
А запись добавить пере вашим
Forms![Demand]![CodeCargo]=Forms![ListCargo]![CodeCargo]
никак нельзя?

ну там, ISERT INTO какой-нить?
ну и форме рефрешь. (той которая вторая)

т.е. это я о чем
автор
но при выборе нужного груза из 2-й формы я пишу

вот при выборе груза и добавляйте новый груз (если надо).
Чумаков А.
Дата: 27.05.2004 12:41:30
сохранить запись нет проблем, но при этом заявка до конца еще не заполнена и проверить данные на правильность нет возможности, а если сохранить без проверки, то на других машинах в сети юзеры увидят заявку в справочнике заявок с неверными данными.
paparome
Дата: 27.05.2004 12:43:50
Так ты не заявку сохраняй, а груз.

или нет справочника грузов? - тогда я что-то не понимаю :(
Rivkin Dmitry
Дата: 27.05.2004 13:05:05
Попробуйте специально для комбо построить вьюху с индексом и посадите ее на соурс комбо. Проблема ведь только в том, чтобы как можно быстрее заполнить список, а для этого нужно быстроработающий запрос, а остальное оставьте, как в первом варианте
paparome
Дата: 27.05.2004 13:09:41
автор
Проблема ведь только в том, чтобы как можно быстрее заполнить список, а для этого нужно быстроработающий запрос


Запрос-то может и быстроработающий :)

Но не стоит забывать, что клиент этот запрос еще в комбик должен закидать
(и это самое "узкое" место в данной проблеме, а отнють не выборка на стороне сервера)
Чумаков А.
Дата: 27.05.2004 13:32:04
грузы мне добавлять в справочник грузов не нужно, нужно просто осуществлять выборку груза в заявке.
через поле со списком достаточно долго (даже со вьюхой), с применением связанных таблов в ХП (источник записей для формы заявки) все летает, но уже для существующей записи.

Проблема при вставке в новую (еще не сохраненную запись) груза из справочника.
Если запись сохранить перед вставкой груза, то все ОК, но мне так не нужно, т.к. необходиом проверить перед сохранением все поля заявки.
Rivkin Dmitry
Дата: 27.05.2004 13:36:48
Но не стоит забывать, что клиент этот запрос еще в комбик должен закидать
(и это самое "узкое" место в данной проблеме, а отнють не выборка на стороне сервера
Согласен, но 8000 записей при быстром запросе комбик должен проглотить мгновенно, он и больше проглотит. Зато форма откроется бысто. Проблемка может быть позже, когда при обращении к комбику он будет немного тянуть время, прежеде чем покажет лист. Но в этом смысле, конечно, актуально предложенеие поделить данные из него на групки...