Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
Не могли бы вы поделиться своими соображениями по поводу эффективного решения проблемы редактирования данных. Получив данные с помощью TADOQuery q.SQL.Text := 'select * from table1 where field1 = ''bla-bla-bla''' Имею большое желание изменить неключевые поля некоторых записей. q.Edit; q['fieldn'] := 'bla'; q.Post; Редактирование возможно только при q.CursorLocation := clUseServer; Но, перенос курсора на сервер, как мне кажется, замедляет работу процедуры. Подскажите эффективные пути решения проблемы (редактирование данных). При q.CursorLocation := clUseClient; получаю ошибку OLEDB "Недостаточные или неполные сведения о ключевом поле ..." Как проинформировать TADOQuery о ключевых полях? В .NET есть понятие ModifySQL - шаблон запроса с помощью которого производятся изменения. Есть ли что-то подобное для TADOQuery? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 17:15 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
А что за база у Вас? Поведение ADO сильно различается для разных форматов. Например, делать clUseServer на MS SQL абсолютно бесполезно. Что бы мы не писали в настройках, все равно будет clUseClient и ctStaic. Применительно к MS SQL могу сказать, что такое сообщение может выскакивать, когда в запросе используется несколько таблиц. Что бы все делалось, как мне хочется, а не как ADO решило, я ставлю в BeforPost CancelUpdates и выполняю запрос, который выполняет требуемые действия. Разумеется, потом делается ReQuery и другие необходимые вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 21:04 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. База распределенная. Частично MSSQL, частично Access. Интересно, что ошибка выскочила именно при работе с MSSQL, при работе с одной единственной таблицей. Интересно, что вылечилась проблема именно указанием q.CursorLocation := clUseServer; Что скажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2003, 13:52 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
что же ты делаеш враг народа ктож так записи меняет в MSSQL update table1 set fieldn = 'bla' where ID = id техт запроса который надо запустить для смены значения поля fieldn у записи где поле ID равен id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 04:10 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
Я жутко возмущен!!!!!!!!! grigorii абсолютно прав. Для чего же тогда SQL придумали? Чтобы использовать только select? Нельзя полностью полагаться на Дельфю и думать, что она сама все разрулит!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 11:59 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
Ого. Уличили чуть ли не в сатанизме :) А как же использование готовых компонентов - краеугольный камень современных методологий разработки ПО? Товарищ, grigorii, а почему не имеет права на жизнь q.Edit; + q.Post? Код упрощается в два-три раза, плюс потенциальная возможность кеширования изменений и прочие вкусности от TDataSet. Другое дело, что у любого компонента есть пределы приминимости, в случае с TADOQuery, как мне кажется, не совсем очевидные. Поэтому и обратился с вопросом к общественности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 13:48 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
что же ты делаеш враг народа ктож так записи меняет в MSSQL update table1 set fieldn = 'bla' where ID = id техт запроса который надо запустить для смены значения поля fieldn у записи где поле ID равен id чудак, ты что-то сложнее телефонного справочника писал в своей жизни? :-D Или ты серьйозно предполагаешь, что человек занимающийся распределённой БД, да ещё существующей на двух платформах может не знать как апдейтнуть запись при помощи SQL? Это конечно очень пальцато - фигачить все правки в БД путём ручного построения sql-запросов, но зачем тогда куча толковых ребят писали все эти компоненты доступа к базам данных? Уж не для того ли, чтобы вы, уважаемые, ими пользовались, а не строчили по всякому поводу отдельную командочку на сервер? В задачах, где требуется многократный find по датасету и апдейт некоторых записей использовать компонент представляется очень удобным и, подозреваю, работать это будет быстрее, чем пары SELECT ...; UPDATE ...; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 14:00 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
2 acol: По моему здесь . Update Criteria может решить задачу. А может и нет - если нельзя определить однозначно модифицируемые записи. Проблема - в отсутствии primary key в table1. Если же в исходном запросе 'SELECT *...' используется join, то см. property 'Unique Table', и см. также в других местах (MSDN) recordset properties, там отдельный разговор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 15:23 |
|
||
|
Редактирование данных с помощью TADOQuery
|
|||
|---|---|---|---|
|
#18+
Спасибо за ссылку. Помогло. Изменил Update Criteria, подпачил тригера в соответствии с рекомендациями из статьи и смог перенести курсор на сторону клиента. Скорость работы несколько возросла. Похоже, что добиться приемлимой производительности от ADO можно только тонким тюнингом. Жаль, что нету хороших доков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 18:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32277728&tid=2116686]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
87ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 464ms |

| 0 / 0 |
