Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75

Как сделать, чтобы отображались не цифры, а названия городов

29.03.2012, 11:48. Показов 4819. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Глупый вопрос: пишу я, например, программу для работы с БД (ADO, MS Access).
Создаю в Access две таблицы: первая/главная (по полям) - Ключ, ФИО, город проживания.
Вторая таблица - Ключ, город. Связываю эти таблицы "один-ко-многим". Кидаю на форму компонент DBGrid + остальные, в колонке город проживания вижу индекс города из второй таблицы. Как сделать, чтобы отображались не цифры, а названия городов собственно? Только через ADOQuery? Или еще как?
За ранее спасибо. Микропроект в приложении.
Вложения
Тип файла: rar TestProj.rar (19.8 Кб, 23 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2012, 11:48
Ответы с готовыми решениями:

Как сделать, чтобы через базу данных отображались картинки в проекте Delphi?
Пишу программу "Тестирование ПДД" (курсовой проект). Необходимо, сделать так, чтобы при нажатии на запись, вопросы будут считываться из БД,...

Можно ли сделать, чтобы свойства созданного мной класса как-то отображались в инспекторе объектов на делфи?
Можно ли сделать, чтобы свойства созданного мной класса как-то отображались в инспекторе объектов на делфи?

Сделать чтобы должности отображались не числом, а названием
Как сделать чтобы должности отображались не числовой (1,2), а название где автомеханик или программист.

33
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
29.03.2012, 12:12
Вторичный ключ.
Как бы создать такой перекрестный запрос

inner join, left join.

учи SQL
1
70 / 70 / 13
Регистрация: 21.12.2011
Сообщений: 188
29.03.2012, 12:15
Можно прописывать запросы в AdoQuery в Delphi. Можно создавать запросы с помощью конструктора в MS Access и привязывать эти запросы к DBGrid. Вот пример второго варианта. Первый вариант наверное более гибкий и предпочтительнее. Код запроса inner join в MS Access .
Вложения
Тип файла: rar TestProj_.rar (340.1 Кб, 27 просмотров)
1
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
30.03.2012, 05:34  [ТС]
Цитата Сообщение от steel_tiger Посмотреть сообщение
учи SQL
Это понятно, запросы писал/пишу, но не сложные . Вопрос немного другой был: сделать это можно только посредством запросов? Другие "махинации" отсутствуют? (пример: компонент TDBLookupCombobox, там есть возможность указать отображаемое поле)

Добавлено через 31 минуту
Напишите, пожалуйста, запрос применимо к моему вложению выше.
0
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
30.03.2012, 09:28
Geksod, а не пошел бы ты во фриланс?!
Хочешь чтоб помогли? - напиши запрос сам, а мы поможем найти ошибку!
А что касается
Цитата Сообщение от Geksod Посмотреть сообщение
сделать это можно только посредством запросов? Другие "махинации" отсутствуют?
Пикинь! Когда пишут
Цитата Сообщение от Geksod Посмотреть сообщение
программу для работы с БД
то пользуются запросами!
0
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
30.03.2012, 10:45  [ТС]
Не нужно мне во фриланс, я просто ради любопытства делаю.
Вот, что у меня получилось, но все равно при выборке - в таблице идентификаторы, вместо нужной мне информации:
Delphi
1
2
SELECT * FROM User_Table
INNER JOIN Table_Of_Town ON User_Table.Gorod_Projivaniya = Table_Of_Town.id_Town
0
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
30.03.2012, 13:16
))))))))))))))))))))

Добавлено через 22 секунды
1) двойной тыц по ADOQuery1

Добавлено через 1 минуту
2) правый тыц по окошку (вылетит после действия 1) со списком столбцов.

Добавлено через 46 секунд
3) и финальный тыц по строчке "Add all fields"
0
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
02.04.2012, 06:05  [ТС]
А кроме этого:
Цитата Сообщение от steel_tiger Посмотреть сообщение
))))))))))))))))))))
Можно реальной помощи? Где затыка? Укажите пальцем, пожалуйста.

Добавлено через 10 минут
Все эти "тыц'ы" не помогают.
0
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
02.04.2012, 09:35
я тебе дал реальную помощь, проверенную на твоих же исходниках...
А если у тебя все равно не получается - то исключительно из-за радиуса кривизны рук...

Добавлено через 1 минуту
Цитата Сообщение от Geksod Посмотреть сообщение
Укажите пальцем, пожалуйста
Цитата Сообщение от steel_tiger Посмотреть сообщение
"Add all fields"
куда точнее указывать?!
0
24 / 24 / 7
Регистрация: 01.11.2011
Сообщений: 53
02.04.2012, 13:14
Можно сделать так:
SQL
1
2
3
4
5
6
SELECT Gorod_Projivaniya, 
       field2,
       ...,
       field100,
       (SELECT TownName FROM Table_Of_Town T WHERE T.id_Town = U.Gorod_Projivaniya) AS NameOfTown 
FROM User_Table U
1
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
02.04.2012, 13:40
_taddy, с его запросом с поста №6 все нормально. просто в ADOQuery1 остались поля от первого запроса...
я это попытался объяснить но безуспешно ))))
1
 Аватар для N@tali
781 / 462 / 85
Регистрация: 20.02.2010
Сообщений: 974
02.04.2012, 18:53
Вот если я вас правильно поняла... то так... создаете запрос в аксессе и подключаете его и все
Вложения
Тип файла: rar TestProj1.rar (23.8 Кб, 17 просмотров)
1
 Аватар для N@tali
781 / 462 / 85
Регистрация: 20.02.2010
Сообщений: 974
02.04.2012, 19:05
steel_tiger,
Цитата Сообщение от steel_tiger Посмотреть сообщение
Geksod, а не пошел бы ты во фриланс?!
Цитата Сообщение от steel_tiger Посмотреть сообщение
А если у тебя все равно не получается - то исключительно из-за радиуса кривизны рук...

Не по теме:

Не обязательно умничать и ёрничать.... вас же не попросили всю прогу написать, чего вы его во фриланс отправляете?

У человека вопрос элементарный... я думаю что форум создан чтобы помогать, а не унижать человека

1
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
03.04.2012, 09:09
N@tali, я человеку сказал в чем проблема,
Цитата Сообщение от steel_tiger Посмотреть сообщение
ADOQuery1 остались поля от первого запроса
а если он (и Вы заодно) не поняли о чем речь... ну уж извините...
еще немного поучитесь и все поймете
1
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
04.04.2012, 12:28  [ТС]
Цитата Сообщение от steel_tiger Посмотреть сообщение
1) двойной тыц по ADOQuery1
Добавлено через 1 минуту
2) правый тыц по окошку (вылетит после действия 1) со списком столбцов.
Добавлено через 46 секунд
3) и финальный тыц по строчке "Add all fields"
Спасибо, так работает. Но тогда возникает другой вопрос: если запрос я в программе меняю динамически, и количество "запрашиваемых" данных (читай количество столбцов) постоянно меняется, как сделать программно "Add all fields"? Городить гору TADOQuery нет желания, хочется обойтись одним.

Добавлено через 2 минуты
Цитата Сообщение от N@tali Посмотреть сообщение
создаете запрос в аксессе и подключаете его и все
Все замечательно, но хочется средствами Delphi все это сделать Это принципиально

Добавлено через 1 минуту
Цитата Сообщение от steel_tiger Посмотреть сообщение
еще немного поучитесь и все поймете
Так для этого тут вопросы и задают. Издеваться каждый может, кидать громкие реплики, т.к. сам знатоком является, вспомните себя ранее, на стадии обучения
0
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
04.04.2012, 14:25
1)
Цитата Сообщение от Geksod Посмотреть сообщение
Издеваться каждый может
- а я Вам не помог?
2)
Цитата Сообщение от Geksod Посмотреть сообщение
вспомните себя ранее
- потому и смеялся ))))))))
3)
Цитата Сообщение от Geksod Посмотреть сообщение
количество "запрашиваемых" данных (читай количество столбцов) постоянно меняется
после двойного тыца, вместо добавления просто грохни все поля и будет тебе счастье!
4)
Цитата Сообщение от Geksod Посмотреть сообщение
хочется обойтись одним
- а вот это не советую...
Заработаешь плохую привычку... почему плохую?
ну подумай:
ты устроился на работу...
тебе дают программу, в которой надцать форм и на каждой по три грида,
и говорят: в третьем, пятом и двадцатом гриде - информация неверно выводится! Исправь!
Ты открываешь код... а ко всем гридам подключен один датасет!
Ну и теперь представь: как ты будешь материться в процессе двухнедельного
поиска нужного запроса?!
1
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
05.04.2012, 08:21  [ТС]
Цитата Сообщение от steel_tiger Посмотреть сообщение
- а я Вам не помог?
Вы мне помогли но после нескольких шуточных фраз (ну да ладно)
Цитата Сообщение от steel_tiger Посмотреть сообщение
после двойного тыца, вместо добавления просто грохни все поля и будет тебе счастье!
Это понятно, но есть столбцы, которые не обязательно видеть пользователю, такие, как столбцы с идентификаторами, или ключевые. Получается их просто после выполнения конкретного запроса необходимо делать невидимыми программно?
Цитата Сообщение от steel_tiger Посмотреть сообщение
- а вот это не советую...
Заработаешь плохую привычку...
Т.е. подытожим:
- подключением различных TADOQuery к одному TDataSource пренебрегаем?.
- количество TADOQuery и TDataSource в режим "эконом" не переводим?

Еще один вопрос назрел: в Access'е в "Схеме данных" связи между таблицами можно не создавать? Или наоборот НУЖНО это делать? Ведь запрос SQL все связи, как бы это сказать, "сам построит"?
Получается в момент добавления новой записи в одну таблицу БД, необходимо "ручками" прописывать цифровой идентификатор нужного мне поля из другой таблицы, если я не хочу пользоваться "Lookup-фишками" TDBGrid'а?

Добавлено через 2 часа 49 минут
Цитата Сообщение от Geksod Посмотреть сообщение
Это понятно, но есть столбцы, которые не обязательно видеть пользователю, такие, как столбцы с идентификаторами, или ключевые.
Глупость написал: мы же в запросе и указываем названия отображаемых столбцов.
0
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
05.04.2012, 09:15  [ТС]
Назрел следующий вопрос:
В структуре данных (рис. 1), все понятно с запросом:
SQL
1
2
3
SELECT User_Table.FIO, Table_Of_Town.Nazvanie_Goroda
FROM User_Table
INNER JOIN Table_Of_Town ON User_Table.Gorod_Projivaniya = Table_Of_Town.id_Town
А как будет выглядеть запрос в запросе (что ли?) если мы добавим еще одну связь к уже связанной таблице (рис. 2)
Миниатюры
Как сделать, чтобы отображались не цифры, а названия городов   Как сделать, чтобы отображались не цифры, а названия городов  
0
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
05.04.2012, 09:30
SQL
1
2
3
4
SELECT User_Table.FIO, Table_Of_Town.Nazvanie_Goroda, streets.Name_Streets
FROM User_Table
INNER JOIN Table_Of_Town ON User_Table.Gorod_Projivaniya = Table_Of_Town.id_Town
INNER JOIN streets ON streets.id_streets = Table_Of_Town.street
Добавлено через 4 минуты
А что касается
Цитата Сообщение от Geksod Посмотреть сообщение
связи между таблицами можно не создавать?
это не обязательное условие, но очень необходимое!
И дело тут не в выполнении запросов (они то как раз от этого не зависят),
а в целостности данных.
к примеру, связь между User_Table и Table_Of_Town нужна для того, чтобы
ты не мог в таблицу User_Table в поле Gorod_Projivaniya вставить значение,
которого нет в таблице Table_Of_Town.

Добавлено через 6 минут
а вообще, у тебя немного неправильно структура сделана ))))
последний запрос вернет тебе фамилию-город-улицу столько раз, сколько улиц у тебя в городе.
как бэ умножит результат первого запроса на количество улиц.
да и вообще: при твоей архитектуре абсолютно нереально узнать на какой улице живет юзер.
а все потому, что связи строить нужно в обратном порядке.
если у тебя есть город, улица, дом, житель, то должно быть так:
таблица жителя ссылается на дом, дом на улицу, улица на город.
то есть от меньшего к большему.
1
5 / 5 / 2
Регистрация: 27.08.2011
Сообщений: 75
05.04.2012, 10:00  [ТС]
Цитата Сообщение от steel_tiger Посмотреть сообщение
то есть от меньшего к большему.
Если я Вас правильно понял, то получаем структуру (подразумеваем, что дом может принадлежать только одной улице, улица - только одному городу):

Ну и получаем запрос (выводим результат так, как мы привыкли его видеть все-таки, т.е. ФИО, Город, Улица, Дом ):
SQL
1
2
3
4
SELECT User_Table.FIO, Table_Of_Town.Nazvanie_Goroda, Streets.Name_Streets, Table_House.Number_House
FROM ((Table_House INNER JOIN User_Table ON Table_House.id_House = User_Table.House)
INNER JOIN Streets ON Table_House.id_House = Streets.id_Streets)
INNER JOIN Table_Of_Town ON Streets.id_Streets = Table_Of_Town.id_Town
Миниатюры
Как сделать, чтобы отображались не цифры, а названия городов  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.04.2012, 10:00
Помогаю со студенческими работами здесь

Необходимо чтобы названия из файла отображались списком в ComboBox
доброго времени суток! помогите пожалуйста новичку с задачей. задача такова: есть ComboBox, Edit и текстовый файл следующего...

Как сделать, чтобы в заголовках отображались даты, а в полях результаты? Можно ли так сделать?
Как сделать чтобы в заголовках отображались даты а в полях результаты можно ли так сделать?

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

Как сделать чтобы в календаре отображались праздники
Всем привет))) Не могу разобраться с WEB- приложением. Очень нужна помощь. Есть приложение "Календарь", хочу сделать так чтобы...

Как сделать чтобы картинки не отображались в низ?
Исполняемый файл: function myavatars($userid){ $result = mysql_query("SELECT * FROM `avatars` WHERE `uid` = '$userid'"); ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru