Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi и базы данных
Войти
Регистрация
Восстановить пароль
 
nattive
5 / 3 / 2
Регистрация: 21.03.2013
Сообщений: 104
#1

DBGrid & DoubleClick - Delphi БД

30.12.2013, 21:05. Просмотров 1101. Ответов 9
Метки нет (Все метки)

Доброго времени суток!

Подскажите как реализовать идею: есть таблица DBGrid, в которую укороченный набор данных поступает запросом из справочника "агенты", как сделать так, чтобы при двойном щелчке мыши в новой открывающейся форме были полные данные из справочника "агенты", так сказать форма для внесения изменений.

Спасибо всем большое!
http://www.cyberforum.ru/delphi-database/thread894550.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2013, 21:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос DBGrid & DoubleClick (Delphi БД):

DBGrid & MsgBox
Подскажите плз... Есть DBGrig в котором поля Фамилия, ТелНом, и тд......

Запросы: для выбранного в DBGrid сотрудника отобразить информацию в другом DBGrid
Добрый вечер! Вот какой вопрос необходимо для выбранного сотрудника в DBGrid...

Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid?
У меня есть 3 таблицы - Компании, Адреса и Квартиры. Компании содержит поля -...

Как можно посчитать разницу столбцов DBGrid и вывести в другой столбец другого DBGrid?
Я знаю как посчитать разницу в одном и том же DBGrid. Но, дело в том, что мне...

Фиксирование нужных столбцов DBGrid или скрыть относительно позиции гор. скролла DBGrid'a необходимые столбцы
Добрый день! Можно ли в компоненте DBGrid сделать фиксированными определенные...

9
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,465
30.12.2013, 23:45 #2
В "укороченном наборе" должны присутствовать значения идентификатора строк (в DBGrid эту колонку не показывать).
В открывающуюся форму передавать значение идентификатора редактируемой строки.
С помощью запроса, который формируется в другом датасете сделать выборку данных этой строки, используя переданное значение идентификатора.
После редактирования, модифицирующим запросом обновить данные
(можно тем же датасетом, которым были выбраны данные по строке).
Не забыть переоткрыть основной датасет, который поставляет "укороченный набор данных", чтобы в
DBGrid отобразились изменения.
0
northener
пофигист широкого профиля
3251 / 2303 / 628
Регистрация: 15.07.2013
Сообщений: 13,591
31.12.2013, 04:27 #3
Термин "идентификатор строки" способен только ещё больше запутать автора.
А вот термин "идентификатор записи" уже лучше.
0
nattive
5 / 3 / 2
Регистрация: 21.03.2013
Сообщений: 104
31.12.2013, 10:58  [ТС] #4
Цитата Сообщение от Скандербег Посмотреть сообщение
В "укороченном наборе" должны присутствовать значения идентификатора строк (в DBGrid эту колонку не показывать).
В открывающуюся форму передавать значение идентификатора редактируемой строки.
С помощью запроса, который формируется в другом датасете сделать выборку данных этой строки, используя переданное значение идентификатора.
После редактирования, модифицирующим запросом обновить данные
(можно тем же датасетом, которым были выбраны данные по строке).
Не забыть переоткрыть основной датасет, который поставляет "укороченный набор данных", чтобы в
DBGrid отобразились изменения.
DBGrid на форме содержит уникальное поле, так называемый код агента.
Не совсем понятно, что писать в обработчике событий OnDoubleClick: открытие новой формы и выполнение запроса?
тогда как в SQL запросе указать выбранный код из поля DBGrid, т.е. по которому кликнули дважды.
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,465
31.12.2013, 11:04 #5
Не совсем понятно, что писать в обработчике событий OnDoubleClick: открытие новой формы и выполнение запроса?
Именно так.
тогда как в SQL запросе указать выбранный код из поля DBGrid, т.е. по которому кликнули дважды.
Как и что указывать зависит от компонентов доступа, т.е. компонентов, которые делают выборку из БД для отображения данных в DBFrid,
0
nattive
5 / 3 / 2
Регистрация: 21.03.2013
Сообщений: 104
31.12.2013, 11:59  [ТС] #6
для выборки данных использую ADOConnection, ADOQuery, DataSource.
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,465
31.12.2013, 12:14 #7
В кратком изложении:
Для получения значений всех полей одной записи выполняется запрос вида:
Delphi
1
2
  ADOQuery2.SQL.Text := 'select * from table where ID = '+IntToStr(ADOQuery1['ID'];
ADOQuery2.Open;
Где ADOQuery1 - датасет, поставляющий данные в DBGrid ("укороченный набор").
ADOQuery2 - другой датасет, с помощью которого получаем значения для формы, где будет происходить редактирование. В дальнейшем и для записи изменений (запрос UPDATE).
ID - имя поля в таблице БД, которое мы называем идентификатором записи (или строки, кому как нравится). Заменить на реальное.
Это значение нужно сохранить в форме редактирования, чтобы потом использовать для обновления редактируемой записи.
table - имя таблицы БД, с которой работаем. Заменить на реальное.

После открытия датасета (ADOQuery2.Open) можно выбирать из него данные для компонентов на форме.
Delphi
1
2
3
4
  if not ADOQuery2.Eof then begin
  Edit1.Text := ADOQuery2['Field1'];
  //и т.д. и т.п.
end;
0
nattive
5 / 3 / 2
Регистрация: 21.03.2013
Сообщений: 104
31.12.2013, 12:40  [ТС] #8
Цитата Сообщение от Скандербег Посмотреть сообщение
В кратком изложении:
Для получения значений всех полей одной записи выполняется запрос вида:
Delphi
1
2
  ADOQuery2.SQL.Text := 'select * from table where ID = '+IntToStr(ADOQuery1['ID'];
ADOQuery2.Open;
Где ADOQuery1 - датасет, поставляющий данные в DBGrid ("укороченный набор").
ADOQuery2 - другой датасет, с помощью которого получаем значения для формы, где будет происходить редактирование. В дальнейшем и для записи изменений (запрос UPDATE).
ID - имя поля в таблице БД, которое мы называем идентификатором записи (или строки, кому как нравится). Заменить на реальное.
Это значение нужно сохранить в форме редактирования, чтобы потом использовать для обновления редактируемой записи.
table - имя таблицы БД, с которой работаем. Заменить на реальное.

После открытия датасета (ADOQuery2.Open) можно выбирать из него данные для компонентов на форме.
Delphi
1
2
3
4
  if not ADOQuery2.Eof then begin
  Edit1.Text := ADOQuery2['Field1'];
  //и т.д. и т.п.
end;
Спасибо большое! но наверное я немного не так выразился.
есть форма с DBGrid, в нее выгружаются данные запросом, т.е. список, содержащий поля (код агента и наименование агента). необходимо, чтобы кликая по строке "агент1" открывалась форма, в которой была бы подробная информация об агенте (запросом выгружаются данные из справочника).

трабл:
как кликая по строке DBGrid присвоить переменной значение поля (код агента) именно той строки, по которой кликаем.
дальше думаю: через значение этой переменной в новой форме выполнить запрос из справочника и вывести необходимые данные.
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,465
31.12.2013, 12:56 #9
как кликая по строке DBGrid присвоить переменной значение поля (код агента) именно той строки, по которой кликаем.
Когда кликают по строке в DBGrid (двойным щелчком, одинарным - неважно), то курсор в ADOQuery автоматом переходит на эту строку и из него можно брать данные:
Delphi
1
  MyVar := ADOQuery1['код агента'];
1
nattive
5 / 3 / 2
Регистрация: 21.03.2013
Сообщений: 104
03.01.2014, 11:52  [ТС] #10
Спасибо! Все работает!
0
03.01.2014, 11:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2014, 11:52
Привет! Вот еще темы с решениями:

Из dbGrid вывести выбранные строки в другой DbGrid
Мне надо вывести Из dbGrid вывести выбранные строки в другой DbGrid, например...

Перенос записей из одного DBGrid в другой DBGrid
Здравствуйте. Есть проблема! Ни как ни получается перенос записей Вот текст...

Связывание индикатора DBGrid со значениями в другом DBGrid
Доброго дня! Имеется два DBGrid с подключенными разными взаимосвязанными...

Из одного значения столбца DBGrid в другой DBGrid
Такая тема "Учета оборудования", сначала регистрируем компоненты (в разных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru