Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 391
от 01.09.2007, 17:05

Администратор:Gh0stik
В рассылке:Подписчиков: 317, Экспертов: 28
В номере:Вопросов: 1, Ответов: 1


Вопрос № 99860: Уважаемые эксперты, необходима Ваша помощь. У меня возникли две проблемы при работе с базой данных. Я работаю с MS Access, используя компоненты ADO. В одном из окон программы есть DBGrid, в котором отображается списки жителей (Фамилия, Имя, ...

Вопрос № 99.860
Уважаемые эксперты, необходима Ваша помощь. У меня возникли две проблемы при работе с базой данных.
Я работаю с MS Access, используя компоненты ADO. В одном из окон программы есть DBGrid, в котором
отображается списки жителей (Фамилия, Имя, Отчество, Населенный пункт, Улица...).
Вот SQL запрос:
SELECT * FROM PersonalTable
WHERE relation=1
ORDER BY name

Собственно, здесь два поля settlement, street, которые являются числовыми, заменил их на lookup- поля.
Проблема №1: Мне необходимо сортировать по ВСЕМ полям, но как сделать сортировку по lookup - полям??

Я уже думал заменить запрос вот таким:
PersonalTable.name, name2, street PersonalTable INNER JOIN StreetTable ON PersonalTable.street=StreetTable.key1 BY StreetTable.name ASC

но INNER объединяет на сколько я знаю ДВЕ таблицы, а мне необходимо включить также и поле населенный пункт, а это уже три таблицы.

Посоветуйте, как избежать данной проблемы, КАК сделать сортировку по lookup - полям или как их избежать?

Проблема №2 также связанная с этими полями. Есть другая таблица, в которой отображаются данные из другого запроса. В зависимости от определенных условий данный запрос может приобретать полностью разный вид.
И там также могут случаться числовые поля, которые нужно заменять значениями из других таблиц. Как
такое сделать? Я пробовал динамически создавать такие поля, но постоянно возникают ошибки. В нете
нашел многих примеров как делать такую замену, но ничего не выходит.

Посоветуйте, что делать. Ожидаю от Вас каких-нибудь размышлений, советов, примеров.
Заранее благодарный за помощь.
Отправлен: 27.08.2007, 16:49
Вопрос задал: Bohdan (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Виктор Пырлик
Здравствуйте, Bohdan!

Не вижу сложностей...
На пример, использовать так:

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var s:string;
begin
s := 'ASC';
if DBGrid1.SelectedField.Tag = 0 then
s := 'DESC';
ADOTable1.Sort := Format('%s %s',[Column.Field.DisplayName,s]);
DBGrid1.SelectedField.Tag := not DBGrid1.SelectedField.Tag;
end;

В данном случае, идет сортировка по событию щелчка на заголовке поля (любого) DBGrid1 и запоминается флаг сортировки в свойстве Tag.

по поводу запроса - кто вам сказал про такое ограничение? Пожалуйста, делайте вложения сколько вам угодно (в разумных приделах)
для Access:

SELECT t1.name, t2.state, t3.city, t4.zip
FROM t4 INNER JOIN
(
t3 INNER JOIN
(
t2 INNER JOIN t1 ON t2.id = t1.id
)
ON t3.id = t1.id
)
ON t4.id = t1.id;

для MS SQL

SELECT t1.id, t1.state, t2.city, t3.zip, t4.name
FROM t1 INNER JOIN
t2 ON t1.id = t2.id INNER JOIN
t3 ON t1.id = t3.id INNER JOIN
t4 ON t1.id = t4.id


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 27.08.2007, 17:35
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное