Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обновление нескольких записей набора данных, ADOQuery 
V
    Опции темы
Lunatikus
Дата 29.10.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



А DataSet.Refresh не помогает?
В BDE, IBX, FIBPlus компонентах Refresh обновляет только текущую запись, в ADO не помню.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Lunatikus
Дата 30.10.2007, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



выдает ошибку "недостаточно сведений о ключе".Т.е. у меня выборка из таблицы слиянием с другими таблицами.И этих полей недостаточно чтобы однозначно идентифицировать запись и обновить ее.А добавлять ключевые поля к выборке кжадой таблицы,Участвующей в результирующем запросе-накладно,да и не уверен,что это изменит что-то.К тому же это если в гриде прям вводить значение и при сдвиге по записям автоматически вызывается рефреш.Но у меня ввод значения через edit.Более того,оно уже введено и в базе есть.проблема в том,что пользователю надо подтверждение,что значение изменилось.Если бы я использовал StringGrid,было бы проще с методом drawcolumncell.Однако в DBGride он не позволяет считать данные текущей записи(для обновления грида) другого поля.Либо я чего-то не знаю.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Deniz
Дата 31.10.2007, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Интересная ситуация получается, ведь и удалить запись из такой выборки не получится.
Обычно в select одна таблица главная, из которой делается выбор, а все остальные, по связям и т.д. просто расширение информации главной.
Так что мешает добавить одно поле ПК этой главной таблицы?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
mrbrooks
Дата 31.10.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Если пользуешься ADOQuery  то тебе поможет:
UPDATE имя_таблицы SET имя_поля=значение WHERE условие_выборки
PM MAIL   Вверх
Lunatikus
Дата 1.11.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



mrbrooks, да нет, изменить я изменяю одну запись, мне надо отобразить в гриде это изменение без перезапуска ADOQuery.

Deniz, а у меня и так выводится ПК в главной таблице.Проблема в том,что меняю я данные из таблиц,которые приклдеиваются к главной.Мне что,приклеивать и ПК этих таблиц? И поможет ли это точно?


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Deniz
Дата 1.11.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Интересно вот что
Цитата(Lunatikus @  1.11.2007,  15:56 Найти цитируемый пост)
Проблема в том,что меняю я данные из таблиц,которые приклеиваются к главной

можно подробнее


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Lunatikus
Дата 2.11.2007, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



Т.е. я в гриде меняю значение полей из таблиц,присоединяемых LEFT JOIN'ом. Меняю с помощью отдельного запроса с UPDATE'ом. В этом проблем нет. Но мне надо отобразить это изменение в гриде.Т.е. не перезапуская весь запрос по новой.Повторюсь.С StringGridoм это было бы просто-он позволяет менять значение в любой ячейке,зная ее координаты.У меня же DBGrid и я не знаю, как можно в нужную мне ячейку занести новый результат. Я все больше склоняюсь к тому,что придется переделывать под StringGrid.Есть только несколько причин,по которым я не хочу на него переходить,одна из которых-невозможность пользователем менять ширину колонки мышкой.А если писать отдельный обработчик для этого,то там также появляется множество вопросов.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Deniz
Дата 2.11.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Lunatikus, попробовал на тестовом примере у себя. В ADO Refresh перечитывает все записи, так что тоже не поможет.
Сори, больше ничем помочь не смогу.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Lunatikus
Дата 2.11.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



Эх,ладно, время поджимает,так что придется как всегда через... smile  в общем,делаю StringGrid. Остальные проблемы по мере возникновения буду решать.Спасибо большое всем за поддержку!


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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