#database #delphi #dbgrid
Вопрос:
Таким образом, у меня есть база данных (доступ) с 4 связанными таблицами, как показано на рисунке:
В Delphi у меня есть a TDBGrid
, который показывает данные из таблицы «результаты» (использование TADOTable
), как показано здесь:
Как вы можете видеть, в поле для идентификатора теста отображаются номера (идентификатор теста). Что я хочу, так это показать имя теста вместо этого номера. Или я могу добавить поле (в Delphi), в котором отображается имя теста, связанное с идентификатором (возможно, вычисляемое поле)?
Комментарии:
1. Это хорошее введение в доступ к данным базы данных из приложения Delphi: thoughtco.com/beginners-guide-to-delphi-1057714
2. Используйте a
TADOQuery
вместо aTADOTable
, затем вы можете использовать необходимые поля из обеих таблиц и связать их вместе, например, с помощью(n) (внутреннего) соединения3. спасибо всем вам за ваши ответы. Я новичок в delphi и программировании в целом. Я просто хотел, чтобы простой способ отображал данные в поле, которое связано с другим в другой таблице. Я пробовал использовать совместный запрос, но я понятия не имею, как сделать результат запроса select редактируемым. С уважением
Ответ №1:
Вам нужно поле поиска, определенное в компоненте TADOTable, которое отвечает за таблицу «Результаты». Определение поля поиска
Имейте в виду, что большие наборы данных могут привести к низкой производительности. Правильный способ-использовать выборки с объединениями в TADOQuery.
Комментарии:
1. Вот тебе и ответ. Я проведу свое исследование в поле поиска, как вы предложили. По поводу использования select с присоединенным quey я наткнулся на проблему: редактирование или удаление данных из результата запроса, как я понимаю, опубликованный результат только для чтения нет? если есть способ отредактировать данные, возвращаемые с помощью запроса select, пожалуйста, просветите меня. Спасибо и с наилучшими пожеланиями
2. Редактирование результатов выборок с объединениями не очень распространено, это возможно, но я не рекомендую этого делать. Если вам нужно отредактировать таблицу результатов — самый простой вариант-это поля поиска.
3. Спасибо. поля поиска-это то, что мне было нужно. Спасибо за помощь.
Ответ №2:
TDBGrid
есть OnDrawColumnCell
событие. Вы можете нарисовать любую ячейку по своему усмотрению, чтобы она выглядела так, как вы хотите.
Или вы можете просто получить доступ к TADOTable
TField
объекту » s » для ID_Test
поля и назначить обработчику его OnGetText
события, чтобы вернуть TField.DisplayText
значение поля таблицы Nom_Test
.
Комментарии:
1. Или вы могли бы изучить SQL и использовать соединение.
2. Спасибо вам за ваш ответ . Я попробую это сделать. С уважением