Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Про ADOQuery, Свойство Required врёт 
:(
    Опции темы
Plavozont
Дата 8.8.2008, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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.
PM MAIL   Вверх
morpheyushka
Дата 8.8.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: нет
Всего: 8



Цитата(Plavozont @  8.8.2008,  07:00 Найти цитируемый пост)
И ещё маленький вопрос... если можно... чтобы шариться по таблицам базы через ADOQuery (а у меня к нему подцеплен DBGrid) я сначала выполняю SQL запрос, который загружает отдельную таблицу из базы в DBGrid а потом через Fields[n] и через RecNo шарюсь по содержимому таблицы. Только вот SQL запрос выполняется долго, и бесконечное переключение между таблицами занимает целую вечность, можно ли как-то осуществлять доступ к таблицам проще, например просто брать и писать: "ADOQuery1.Tables[m].Fields[n]..."... 


Делай выборку из таблицы по условию, а не гоняй все данные туда-сюда!
А вобще, не знаю как в аксэссе, в MSQL сервере можно создавать такие штуки, как вьювы (Views). С помощью них можно вытягивать данные из нескольких таблиц, причем не все, а те, которые тебе необходимы. Ну а дальше, путем условий и сортировок можно получить только нужные данные. И нечего гонять целые таблицы! smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.