Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 как правильно задавать ResyncCommand  [new]
Ольга_Т
Member

Откуда: Москва
Сообщений: 629
Объясните мне, пожалуйста, как правильно прописать в форме ResyncCommand!
У меня на событии открытия формы после установки ADO-источника написано :
Me.SuppPriceComposition.Form.ResyncCommand = "SuppPriceCompositionP"
Me.SuppPriceComposition.Form.InputParameters = "@SuppPriceID int=[Form]![SuppPriceID], @DisLevel money =1, @CheckExcludei nt =0"

(То есть имя процедуры, возвратившей рекордсет-источник и список ее параметров)

При присвоении InputParameters - время от времени ругается, что SQL неправильный и не содержит разных слов типа "DELETE", "UPDATE", "SELECT", и никак не влияет на наличие или отсутствие глюков.
Чего-то я не понимаю?
28 апр 04, 19:42    [655682]     Ответить | Цитировать Сообщить модератору
 Re: как правильно задавать ResyncCommand  [new]
Jem
Member

Откуда:
Сообщений: 735
Вам нужно две хранимки, одна с параметрами, используется для передачи данных в форму, вот именно для используют InputParametrs,
а вторая для синхронизации, чтобы Access сам обновлял набор записей формы.
28 апр 04, 19:50    [655700]     Ответить | Цитировать Сообщить модератору
 Re: как правильно задавать ResyncCommand  [new]
Ольга_Т
Member

Откуда: Москва
Сообщений: 629
Я не понимаю, как аксесс сможет выполнить процедуру без параметров, разве что создавать временную на каждый чих и задавать значения, вклеивая их в текст. Нельзя ли чуть поподробнее, и на примере?
28 апр 04, 20:28    [655743]     Ответить | Цитировать Сообщить модератору
 Re: как правильно задавать ResyncCommand  [new]
Jem
Member

Откуда:
Сообщений: 735
В конструкторе форму выбирете в источнике данных вашу хранимку.
В InputParametrs введите:
@SuppPriceID=[Form]![SuppPriceID]!ИмяполяГдеЛежитЗначение, @DisLevel =1, @CheckExclude =0
Типы данных здесь не нужны.
В UniqueTable введите имя таблицы для которой разрешенно редавтирование, самая крайняя со стороны многи в ХП.
В строке синхронизации впишете. эээ
ну в примере
В поле формы Me.IdClient кладем значение для параметра хранимски
CREATE PROCEDURE prOrder

@IdClient int
AS
SELECT C.Name, O.Summa from tblClient C inner join tblOrder O
ON C.IdClient=O.IdClient
WHERE O.IdClient=@IdClient

UniqueTable=tblOrder
InputParametrs=@IdClient=[Forms]![MyForm]!IdClient
ResyncCommand=prOrder_sync ?

Create procedure prOrder_sync
@IdOrder int
AS
SELECT C.Name, O.Summa from tblClient C inner join tblOrder O
ON C.IdClient=O.IdClient
WHERE O.IdOrder=@IdOrder


То есть команда синхронизации это есть хранимка которая обновляет запись редактируемой таблицы по ее ключевому полю.
Т.е. вам надо создать такую хранимку и поместить ее в строку синхронизации.
А с параметрами Access справиться, а если чего не так (ошибка типов или еще чего) сервак вернет ошибку.
28 апр 04, 20:45    [655753]     Ответить | Цитировать Сообщить модератору
 Re: как правильно задавать ResyncCommand  [new]
Ольга_Т
Member

Откуда: Москва
Сообщений: 629
Я все-таки не врубаюсь.
Что, процедура синхронизации будет шарашить клиентов без разбора? Или процедура синхронизации потусторонним чутьем знает о процедуре-источнике?
30 апр 04, 12:37    [659387]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить