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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2012, 20:37   #1
Tolkach2
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию Delphi: Извлечение названий таблиц, объедиенных SQL запросом в одну.

Здравствуйте,

Я только начинающий и столкнулся со следующей проблемой.

допустим есть такой SQL запрос:

SELECT books.id, notebook.*, pencils.id, album.id
FROM books, notebook, pencils, album

Результат выполнения (MS SQL Server 2003) мы видим ниже



из результата, отображенного на картинке, сразу не возможно без визуального обращения к SQL запросу определить к какой таблице относится колонка id !!!

Вопрос: Каким образом возможно (без изменения выше указанного SQL запроса) вывести в наименование колонки dbgrid не только само название колонки, указанное в SQL запросе, но и наименование таблицы из которой взята эта колонка (колонки)?
Tolkach2 вне форума Ответить с цитированием
Старый 17.03.2012, 20:41   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Select books.id as Books_id, ......
vovk вне форума Ответить с цитированием
Старый 17.03.2012, 20:49   #3
Tolkach2
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
Select books.id as Books_id, ......

Как я указывал в первом посте "Без изменения SQL запроса ".
иначе мне придется переписывать более 300 SQL запросов уже используемых в работе сервера
Tolkach2 вне форума Ответить с цитированием
Старый 17.03.2012, 20:56   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Результат то в DbGrid-е отображаете? В нем прописать колонки вручную и дать им нужные названия. Но это по времени еще дольше, чем модифицировать запросы. Других способов нет
PS названия колонкам можно конечно и программно реализовать, но думаю вам это еще больше не понравится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.03.2012 в 21:00.
Аватар вне форума Ответить с цитированием
Старый 17.03.2012, 21:30   #5
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

как я понял в гриде могут отображаться разные запросы, если так то задавать колонки грида вручную смысла нет, объяснить приложению чем поле в датасете с именем id из таблицы books отличается от поля в датасете с именем id из любой другой таблицы вы не сможете, (это на счёт программного) так что меняйте запросы..
ЗЫ
Хотя погорячился Аватар прав, программно можно, если после вызова каждого запроса писать что то вроде этого Dataset.FieldByName('ID').DisplayLa bel:='ИД Books';

Последний раз редактировалось vovk; 17.03.2012 в 21:36.
vovk вне форума Ответить с цитированием
Старый 17.03.2012, 21:42   #6
Tolkach2
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Результат то в DbGrid-е отображаете? В нем прописать колонки вручную и дать им нужные названия. Но это по времени еще дольше, чем модифицировать запросы. Других способов нет
PS названия колонкам можно конечно и программно реализовать, но думаю вам это еще больше не понравится
Действительно Результат в DbGrid-е отображаю. При этом данные в него попадают из Query, т.е DbGrid может выводить разные по структуре таблицы, а следовательно, жестко в dbgrid прописывать названия колонок нет смысла.

Можно было бы программно проводить проверку самого SQL запроса, находить в нем select и от него двигаться до первой точки потом отсчитывать назад неизвестное количество символов до пробела или запятой, запоминать в буфер, а потом column title dbgrida передавать, и т.д до конца всего sql запроса....
Но это километровый код......
Tolkach2 вне форума Ответить с цитированием
Старый 17.03.2012, 21:51   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Не такой уж километровый, одной процедурой можно обойтись, но учитывать всё придётся, и если запрос будет вида
Select id,... без указания таблицы только потому, что id содержится только в 1 из связных таблиц, то облом

Последний раз редактировалось vovk; 17.03.2012 в 21:54.
vovk вне форума Ответить с цитированием
Старый 17.03.2012, 21:59   #8
Tolkach2
 
Регистрация: 21.12.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
Не такой уж километровый, одной процедурой можно обойтись, но учитывать всё придётся, и если запрос будет вида
Select id,... без указания таблицы только потому, что id содержится только в 1 из связных таблиц, то облом

поэтому и многим другим нюансам от этого способа я отказался а других не знаю......
Tolkach2 вне форума Ответить с цитированием
Старый 17.03.2012, 22:04   #9
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Можно было бы программно проводить проверку самого SQL запроса
Если вы можете проводить проверку самого запроса, то и изменить его, проименовав выбранные поля, не вижу проблемы... я бы даже сказал, что это попроще будет...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 17.03.2012, 22:04   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дубово конечно, но можно держать в проге для каждого запроса позиционную таблицу названий колонок. Ну а вообще все это чушь - лучшего способа чем подправить тексты запросов нет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.03.2012 в 22:07.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с sql запросом в Delphi CRASH040 БД в Delphi 8 25.05.2011 19:49
ПРоблема с SQL запросом в Delphi ZBEP БД в Delphi 4 23.05.2011 19:17
макрос добавления названий для таблиц darklumen Microsoft Office Word 8 16.11.2010 23:00
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Поломал голову над SQL запросом из 5-ти таблиц. Возможно ли это? semnily SQL, базы данных 1 06.04.2009 12:24