Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2016, 08:36   #1
ДарьяСт
Пользователь
 
Регистрация: 21.04.2016
Сообщений: 19
По умолчанию Перевод значений в DBGrid

У меня есть таблица, которая выводит код отдела, код хранения и код типа. Нужно каким то образом перевести код в значение этого кода, если значения находятся в других таблицах... Допустим, код отдела - 4, а значение должно быть ОТИ.... Как это можно осуществить?
Изображения
Тип файла: jpg 876.jpg (20.7 Кб, 93 просмотров)
Тип файла: jpg 20.jpg (57.1 Кб, 122 просмотров)
ДарьяСт вне форума Ответить с цитированием
Старый 21.04.2016, 09:28   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

ПУТЬ ПЕРВЫЙ "дорабатываем" Access.
Цитата:
У меня есть таблица, которая выводит код отдела, код хранения и код типа.
теперь нужен ЗАПРОС в котором будут объединены данные ДВУХ и более таблиц.
Цитата:
если значения находятся в других таблицах...
1. конструктор запросов. (простой запрос если не ощибаюсь)
2. добавить "исходную" таблицу
3. добавить таблицы из КОТОРЫХ надо "подставлять" значения.
4. установить связи между таблицами(в запросе), если по какой-то причине они не получились сами(из схемы данных).
5. отобрать для "показа" нужные поля из имеющихся таблиц.
6. сохранить этот запрос и в Delphi вместо исходной таблицы использовать ЭТОТ запрос.

ПУТЬ ВТОРОЙ Delphi переход от табличного доступа(ADOTable) к нормальному SQL (ADOQuery, ADODataSet).
1-5. выполнить пп.1-5 из предыдущего пути
6. в конструкторе перейти к показу SQL и скопиировать ЭТО в поле для редакции SQL cоответствующего компонента.

ПУТЬ ТРЕТИЙ. Только Delphi.
Опять же забыть про ADOTable и взять ADOQuery(или ADODataSet).
и написать SQL собственноручно (без подсказок и вар.1, 2).

Код:
select t1.имя1, t1.имя2,  --что будем показывать из исходной таблицы
          t2.имя4, t2.имя5  --а такие данные мы берем из "другой" таблицы

from t1 --исходная таблица
LEFT JOIN t2 --дополнительная таблица откуда НАДО "подставлять" данные
                   ON  --и КАК подставлять
                         t1.<код чего-то там{типа документа например}>  = t2.<номер типа>

LEFT JOIN t3 ON t1.код3 =t3.номер  -- аналогично можно "прицепить" и остальные таблицы
P.S. Access (2000-2003) для таких запросов требует скобок (нечто вроде такого)
s
Код:
elect ....
from ( t1 LEFT JOIN ( t2 LEFT JOIN t3 ON t3... =t1.... ) ON t2... =t1... )
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.04.2016 в 09:32.
evg_m вне форума Ответить с цитированием
Старый 21.04.2016, 17:09   #3
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от ДарьяСт Посмотреть сообщение
У меня есть таблица, которая выводит код отдела, код хранения и код типа. Нужно каким то образом перевести код в значение этого кода, если значения находятся в других таблицах... Допустим, код отдела - 4, а значение должно быть ОТИ.... Как это можно осуществить?
Самый простой и универсальный вариант - LOOKUP-овское поле.
1. Добавляем в список полей датасета (Table1, Query1 или что у вас там привязано к DBGrid) новое поле, например, "OtdelName". Для этого - даблклик по датасету и откроется список его полей... Правой кнопкой мышки по списку и выбираем "New Field". В поле "Name" пишем "OtdelName".
2. Выбираем тип поля = String.
3. Отмечаем FieldType = Lookup.
4. Выбираем из списка полей вашего датасета поле, которое содержит код отдела, пусть это OtdKod.
5. Выбираем из списка датасетов вашу таблицу, в которой кодам отделов сопоставлены их наименования, пусть это таблица TableOtdel.
6. Теперь в списке полей этой таблицы выбираем LookUp Keys - ключевое поле с кодом отдела, пусть Kod.
7. ... и поле, которое мы хотим видеть (Result Field), т.е. поле с наименованием отдела, пусть Otdel.
8. Жмем ОК.
Все! Теперь добавляем в DBGrid вместо поля кода отдела наше новое поле
"OtdelName" и любуемся результатом...
Изображения
Тип файла: png Снимок1.png (10.5 Кб, 94 просмотров)

Последний раз редактировалось kropotkina-alice; 21.04.2016 в 17:12.
kropotkina-alice вне форума Ответить с цитированием
Старый 22.04.2016, 07:33   #4
ДарьяСт
Пользователь
 
Регистрация: 21.04.2016
Сообщений: 19
По умолчанию kropotkina-alice

А будет ли это поле соответствовать другим данным?
Изображения
Тип файла: jpg 999.jpg (45.5 Кб, 90 просмотров)
ДарьяСт вне форума Ответить с цитированием
Старый 22.04.2016, 19:20   #5
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от ДарьяСт Посмотреть сообщение
А будет ли это поле соответствовать другим данным?

А вы полагаете, что я дала вам пример для одного-единственного значения???
kropotkina-alice вне форума Ответить с цитированием
Старый 25.04.2016, 07:08   #6
ДарьяСт
Пользователь
 
Регистрация: 21.04.2016
Сообщений: 19
По умолчанию

Спасибо Вам большое
ДарьяСт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод значений выведенных формулами в обычные цифры dmonco Microsoft Office Excel 2 24.03.2012 03:59
перевод значений DeDoK Общие вопросы Delphi 5 15.08.2010 08:36
Фильтрация числовых значений в DBgrid girz БД в Delphi 14 12.05.2009 16:52
Перевод значений DeDoK Общие вопросы Delphi 3 19.05.2008 08:39
Выборка значений ячеек DBGrid Македонский БД в Delphi 3 05.12.2007 07:10