|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.07.2018, 15:50 | #1 |
Регистрация: 25.04.2018
Сообщений: 4
|
Вывод отдельных полей из таблицы
Пишу что-то вроде словаря. Есть таблица с полями "Слово" "Произношение" "Перевод" и поле с картинкой. К этим полям привязаны DBEdit'ы, DBMemo и DBImage. Если использовать DBGrid и вручную перемещаться по записям, все связанные компоненты работают, но надо сделать без DBGrid и перемещаться по таблице программно.
Надо все записи из поля "Слово" добавить в ListBox или ListView, а при выделении итема, по индексу/номеру записи вывести в компоненты уже полную инфу. Количество записей я нашел - ADOTable1.RecordCount, а как мне получить все записи из конкретного поля? И можно ли по индексу/номеру записи считать данные из всех полей и каким методом? |
23.07.2018, 16:03 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
если использовать обычные LsitBox / ListView - то при заполнении данными сохранять и ключевое поле (например, Integer в свойство TListItem.Tag )
потом, в событии выбора брать этот ключ и по нему получать данные из датасета. |
23.07.2018, 17:48 | #3 |
Регистрация: 25.04.2018
Сообщений: 4
|
есть индексное поле-счетчик Index специально для того чтобы можно было по номеру записи обращаться к данным имеющим одинаковое значение. Я нашел два метода один для поиска, другой для перехода между записями:
поиск всех записей и добавление в ListBox - procedure TForm1.Button1Click(Sender: TObject); var i:Integer; res:Variant; begin i:=ADOTable1.RecordCount; for i := 1 to ADOTable1.RecordCount do begin res:=ADOTable1.Lookup('Index',IntTo Str(i),'Word'); if not VarIsNull(res) then begin ListBox1.Items.Add(VarToStr(res)); end else ShowMessage('Error'); end; end; поиск и "установка курсора" на запись для вывода данных в компоненты, привязанные к полям таблицы. Список не сортированный, поэтому номер итема+1 будет индексным номером записи - procedure TForm1.ListBox1Click(Sender: TObject); begin if ListBox1.ItemIndex<>-1 then begin if not AdoTable1.Locate('Index',IntToStr(L istBox1.ItemIndex+1),[]) then ShowMessage('Не найдено.'); end; end; Правильно ли использовать эти методы либо это кривая затея и есть способ лучше? |
23.07.2018, 17:54 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
23.07.2018, 19:40 | #5 | |
Участник клуба
Регистрация: 10.08.2010
Сообщений: 1,392
|
Цитата:
-- На пример как на Русском языке обращение к мужчине и женщине (Он - Она) а на некоторый языке нету такого. Для этого я бы на Tab_1 оставил поля (id=PK, Слово) и на Tab_2 (id, Перевод, Произношение, FK) связь между ними один ко многим Заменил бы AdoTable на AdoQuery и работал через SQL-запрос
E_MAIL: rijgvina7@yahoo.com
|
|
23.07.2018, 21:15 | #6 |
Регистрация: 25.04.2018
Сообщений: 4
|
Да есть, именно для доступа по номеру записи к данным одинаковыми значениями.
Теперь вопрос - корректно ли мое решение или есть способ лучше, с SQL например? Если встраивать функцию быстрого поиска наверное SQL грамотнее использовать будет? Последний раз редактировалось Skyhawk; 23.07.2018 в 21:18. |
24.07.2018, 00:00 | #7 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Если у Вас на всё одна таблица - достаточно просто использовать Filter, не привлекая SQL
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
24.07.2018, 00:36 | #8 |
Регистрация: 25.04.2018
Сообщений: 4
|
Спасибо всем.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Консолидация отдельных полей отдельных файлов на один лист | Paramount | Microsoft Office Excel | 15 | 30.01.2013 17:41 |
Вывод значений полей таблицы в текстовые поля | Умагаджи | SQL, базы данных | 2 | 27.08.2012 22:58 |
Очищение отдельных Edit полей. | Mrsqler | Общие вопросы Delphi | 9 | 25.03.2012 19:29 |
Access ограничить значение поля таблицы значениями полей другой таблицы | Сергей089 | Microsoft Office Access | 10 | 08.12.2010 02:22 |
Как выводить значения отдельных полей таблицы при выборе записи в DBGrid | Sinker | БД в Delphi | 9 | 25.03.2009 12:28 |