|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
||||||
Как получить id выделенной записи в DBGrid?05.07.2015, 17:21. Показов 7840. Ответов 22
Метки нет (Все метки)
Перепробовал всё! Почему вот это не работает?
0
|
||||||
| 05.07.2015, 17:21 | |
|
Ответы с готовыми решениями:
22
Как вывести отчет по выделенной записи в DBGrid? Как вывести отчет по выделенной записи в DBGrid? Как получить номер записи выбранной в DBGrid |
|
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|
| 05.07.2015, 17:45 | |
|
Что ты понимаешь под "id выделенной записи"?
1
|
|
|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
|
| 05.07.2015, 18:00 [ТС] | |
|
northener, аналог-itemindex в ListBox
0
|
|
|
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|
| 05.07.2015, 19:17 | |
|
1
|
|
|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
|
| 05.07.2015, 19:18 [ТС] | |
|
northener, неужели нельзя узнать index выбранной записи? Для чего же тогда этот dbgrid1.Columns.Items.Index?
0
|
|
|
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|||
| 05.07.2015, 19:25 | |||
|
Зачем это тебе нужно?
1
|
|||
|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
|
| 05.07.2015, 22:19 [ТС] | |
|
northener, видите ли, в чем дело.. При клике на какую-либо строчку содержимое всех полей отображается в Edit'ах для удобного изменения. Когда я делаю какое-либо действие, например, изменение, а потом хочу увидеть результат, я делаю запрос SQL.Text:='select * from pupil'; Open; и у меня сразу обновляется DBGrid. Но строчка, которая была выделена для изменения, уже не выделена, а выделена оказывается первая строчка. А пользователь по невнимательности может продолжить изменять старую строчку, потом нажмет кнопку изменить, а изменения сделаются в первой строчке(а в Edit'ах так и останется старая инфа, так как не было клика на строчку). Надеюсь понятно объяснил, вот скриншоты:
После нажатия кнопки "вывести все": Так вот я хочу запомнить номер выделенной строки до нажатия на кнопку, а затем после выполнения процедуры выделить программно заново эту строку.
0
|
|
|
|
|
| 05.07.2015, 23:15 | |
|
как всегда
не надо помогать делать то что не надо делать если требуется не просто выводить данные в DBGrid но еще и редактировать их, смотрите на ADODataset (подозреваю, что речь, как всегда, про ADO) там должен быть метод Refresh для обновления одной записи. Но все в ADO работает странно, может и Refresh быть не торт. тогда универсальный метод: перед Close/Open нужно запомнить, на какой записи вы стоите (надеюсь, вы в курсе, что такое ключевые поля), и после Open сделать Locate на неё P.S.1 плохая практика тянуть все поля таблицы через select * указывайте конкретный список P.S.2 Значение SQL.Text никуда не девается, не надо каждый раз его заполнять, если запрос не изменялся. Просто Open. P.S.3 Для редактирования полей обычно применяется DBEdit а не Edit, если уж вас не устраивает редактирование прямо в гриде
1
|
|
|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
|
| 05.07.2015, 23:19 [ТС] | |
|
krapotkin, программу пишу не для настоящего предприятия, поэтому о таких вещах не хотелось задумываться, просто интересно стало про Index.
P.S. а как потом применять изменения, если редактировать в гриде сразу?
0
|
|
|
|
|
| 05.07.2015, 23:25 | |
|
грид работает с датасетом
в датасете прописываются все 4 вида SQL запросов select update delete insert а еще отдельно Refresh - select для обновления только одной записи кроме написания запросов, больше от программиста ничего не требуется
1
|
|
|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
|
| 05.07.2015, 23:26 [ТС] | |
|
krapotkin,
А что в Locate передавать кроме ключевого поля? Зачем вторые два параметра? Не хотелось пока просто разбираться с DataSet'ом
0
|
|
|
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|||
| 06.07.2015, 01:00 | |||
|
Добавлено через 4 минуты
1
|
|||
|
|
||||||
| 06.07.2015, 10:40 | ||||||
|
northener,
в TDataset есть метод Refresh - там задается именно SQL обновления одной записи наследники TDataset должны реализовывать его самостоятельно IBX FIB отлично с этим справляются про ADO - не знаю, но на уровне DBGrid получается поддержка Refresh "из коробки" в качестве SQL там обычно тот же Select с добавлением чего-то типа
1
|
||||||
|
33 / 33 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
|
|
| 06.07.2015, 10:52 [ТС] | |
|
northener, хорошая идея
0
|
|
|
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|||
| 07.07.2015, 02:53 | |||
![]()
1
|
|||
|
103 / 91 / 32
Регистрация: 30.05.2015
Сообщений: 594
|
|
| 08.07.2015, 12:40 | |
|
dataset.fieldbyname('id').asInteger
0
|
|
|
1 / 1 / 0
Регистрация: 13.03.2016
Сообщений: 5
|
||||||
| 20.04.2018, 10:02 | ||||||
|
Да простит бог за ниже изложенное:
Ищет в DBGride позицию из Едита (id.Text) и останавливается. Другого решения нет, ибо как и писали выше Грид - это просто сетка.
0
|
||||||
|
1 / 1 / 0
Регистрация: 13.03.2016
Сообщений: 5
|
||
| 20.04.2018, 10:29 | ||
|
Человеку надо было выделить редактируемый элемент после обновления грида. При чем тут SQL запрос и фильтр?
0
|
||
| 20.04.2018, 10:29 | |
|
Помогаю со студенческими работами здесь
20
Как оставлять фокус на выделенной ячейке DBGrid
Как получить имя столбца выделенной ячейки? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|