![]() |
|
|
![]()
|
|
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
Добрый вечер,коллеги.Снова возникла проблема.Решаемая,но через не очень цензурную сущность.В общем,с помощью ADOQuery я выгружаю в грид набор данных.Потом другим запросом изменяю данные в базе, с которыми связан первый запрос.Соответственно надо обновить его.Однако обновление ВСЕХ записей-слишком накладно.Как обновить только нужную мне запись(зная значение ключевого поля записи/ей)?Впервые столкнулся,помогите,пожалуйста.
Единственное что я вижу-"наклеивать" сверху новое значение из базы для нужной записи в первом ADOQuery. Это сообщение отредактировал(а) Lunatikus - 29.10.2007, 16:51 -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
А DataSet.Refresh не помогает?
В BDE, IBX, FIBPlus компонентах Refresh обновляет только текущую запись, в ADO не помню. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
выдает ошибку "недостаточно сведений о ключе".Т.е. у меня выборка из таблицы слиянием с другими таблицами.И этих полей недостаточно чтобы однозначно идентифицировать запись и обновить ее.А добавлять ключевые поля к выборке кжадой таблицы,Участвующей в результирующем запросе-накладно,да и не уверен,что это изменит что-то.К тому же это если в гриде прям вводить значение и при сдвиге по записям автоматически вызывается рефреш.Но у меня ввод значения через edit.Более того,оно уже введено и в базе есть.проблема в том,что пользователю надо подтверждение,что значение изменилось.Если бы я использовал StringGrid,было бы проще с методом drawcolumncell.Однако в DBGride он не позволяет считать данные текущей записи(для обновления грида) другого поля.Либо я чего-то не знаю.
-------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Интересная ситуация получается, ведь и удалить запись из такой выборки не получится.
Обычно в select одна таблица главная, из которой делается выбор, а все остальные, по связям и т.д. просто расширение информации главной. Так что мешает добавить одно поле ПК этой главной таблицы? -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
Если пользуешься ADOQuery то тебе поможет:
UPDATE имя_таблицы SET имя_поля=значение WHERE условие_выборки |
|||
|
||||
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
mrbrooks, да нет, изменить я изменяю одну запись, мне надо отобразить в гриде это изменение без перезапуска ADOQuery.
Deniz, а у меня и так выводится ПК в главной таблице.Проблема в том,что меняю я данные из таблиц,которые приклдеиваются к главной.Мне что,приклеивать и ПК этих таблиц? И поможет ли это точно? -------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Интересно вот что
можно подробнее -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
Т.е. я в гриде меняю значение полей из таблиц,присоединяемых LEFT JOIN'ом. Меняю с помощью отдельного запроса с UPDATE'ом. В этом проблем нет. Но мне надо отобразить это изменение в гриде.Т.е. не перезапуская весь запрос по новой.Повторюсь.С StringGridoм это было бы просто-он позволяет менять значение в любой ячейке,зная ее координаты.У меня же DBGrid и я не знаю, как можно в нужную мне ячейку занести новый результат. Я все больше склоняюсь к тому,что придется переделывать под StringGrid.Есть только несколько причин,по которым я не хочу на него переходить,одна из которых-невозможность пользователем менять ширину колонки мышкой.А если писать отдельный обработчик для этого,то там также появляется множество вопросов.
-------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Lunatikus, попробовал на тестовом примере у себя. В ADO Refresh перечитывает все записи, так что тоже не поможет.
Сори, больше ничем помочь не смогу. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Lunatikus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 29.6.2007 Репутация: 1 Всего: 6 |
Эх,ладно, время поджимает,так что придется как всегда через...
-------------------- TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games). сайт гильдии |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |