![]() |
|
![]() ![]() ![]() |
|
Plavozont |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 14.4.2008 Репутация: нет Всего: нет |
У меня такой ситуэйшн: я беру ADOQuery, подцепленый к базе, делаю ему append, заполняю поля значениями(программным путём) и делаю post. Кажется всё элементарно, всё что мне нужно - это чтобы во время post'а срабатывала какая-нибудь процедура-обработчик события OnPostError, OnChange а лучше всего OnValidate! Как её назначить ? То, что я нашёл поиском в яндексе неработает, а в справочной системе Delphi считают, что тут всё так очевидно, что и объяснять не стоит...
А вообще проблема в том, что я из одной аксэссовской базы с помощью ADOQuery1 перегоняю данные в другую базу с помощью ADOQuery2, и в некоторых таблицах базы есть поля, обязательные для заполнения(свойство Required которых равно true). И вот то есть когда проверяешь чему равно ADOQuery1.Fields[n].Required оно говорит FALSE, не обязательное значит, а когда делаешь POST он ругается, допустим что поле "адрес.город" не может содержать значение Null так как свойство Required имеет значение TRUE... С начала думал он просто бредит, а потом в справке прочитал: If a field is created with the Fields editor, this property is set based on the underlying table. Applications that set Required to true for fields that must have values (for example, a password or part number), but for which the underlying table does not require the field, must write an OnValidate event handler to enforce the property. Слабый перевод: Если поле создано редактором полей, то это свойство назначено на основе таблицы имеющей больший приоритет. В приложениях, которые устанавливают свойству Required значение true для полей, которые должны содержать хоть какое-то значение(на пример, поле с паролем или с "шифром компонента"), но для которых более приоритетная таблица не требует поле, нужно прописывать событие OnValidate чтобы принудительнуть это свойство. Думаю они не ведали что писали, только я теперь ошибочно полагаю, что если проверить чему равно свойство Required из процедуры-обработчика события OnValidate, он мне наконец-то скажет правду, но я не умею назначать процедуры-обработчики... И ещё маленький вопрос... если можно... чтобы шариться по таблицам базы через ADOQuery (а у меня к нему подцеплен DBGrid) я сначала выполняю SQL запрос, который загружает отдельную таблицу из базы в DBGrid а потом через Fields[n] и через RecNo шарюсь по содержимому таблицы. Только вот SQL запрос выполняется долго, и бесконечное переключение между таблицами занимает целую вечность, можно ли как-то осуществлять доступ к таблицам проще, например просто брать и писать: "ADOQuery1.Tables[m].Fields[n]..."... --------------------
Fortunately, the circumstances under which those words are useful run out at a relatively low level of multiplicity. |
|||
|
||||
morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: нет Всего: 8 |
Делай выборку из таблицы по условию, а не гоняй все данные туда-сюда! А вобще, не знаю как в аксэссе, в MSQL сервере можно создавать такие штуки, как вьювы (Views). С помощью них можно вытягивать данные из нескольких таблиц, причем не все, а те, которые тебе необходимы. Ну а дальше, путем условий и сортировок можно получить только нужные данные. И нечего гонять целые таблицы! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |