![]() |
|
![]() ![]() ![]() |
|
salik |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Здравствуйте уважаемые эксперты.
Помогите разобраться как построить связь один ко многим на простом примере. Есть запрос, назовем его sel1
И запрос sel2
Проверил, по отдельности эти запросы работают без ошибок. Дальше настраиваю вторую таблицу заполняю mastersource, masterfield, indexfielname. С помощью компонента sqlMonitor видно, следующее
Если бы был второй запрос простой (без union), то (where id_table = 1) делфи дописал в конец и все было бы замечательно. А так постоянно ставит на это место и сами видите запрос становится ошибочным. |
||||||
|
|||||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
||||
|
||||
salik |
|
||||||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Попытаюсь объяснить более подробно с вставками кода.
Есть SimpleDataSet1 в котором CommandText
Есть SimpleDataSet2 в котором CommandText
Далее кликаю по Active
Когда же кликаю
Выходит ошибка. Смотрю в sqlMonitor какой же запрос он шлет на сервер. SqlMonitor показывает
А правильный запрос должен быть таким
|
||||||||||||||
|
|||||||||||||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Попытаюсь понять что вы хотели: есть некая таблица table в которой в поле id_table хранятся целочисленные значения. Вы хотите сделать вывод следующих данных: если id_table =1 то вывести "1 | 'какой-то текст1'" если id_table = 2 то вывести "2 | 'какой-то текст2'" и так далее.
Я правильно понял, нет? |
|||
|
||||
salik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Вы меня совершенно правильно поняли. Хранимая процедура на срвере генерирует динамический запрос, структуру которого я описал в примере. Заострять внимание на вычисляемых полях и откуда они берутся не стал, поэтму написал "какой-то текст" |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Не? |
|||
|
||||
salik |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Спасибо, что пытаетесь помочь. Делфи отправляет такой запрос
Как не бьюсь программа вставляет (where id_table = '1') после второго селекта. Если посылать такой запрос:
то получается
Я так понял это глюк компонента, он не понимает составные запросы. |
||||||||||
|
|||||||||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Я не использовал SimpleDataSet, всегда работал с Query и проблем не возникало. Попробуйте через него.
|
|||
|
||||
salik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Я использую технологию доступа к данным dbExpress, в компоненте TSQLQuery с соответствующей вкладки нет такого свойства как MasterSourse. Это принципиально важно при формировании master-detail отчетов в FastReport. |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
полагаю если закомменить этот код то вставляться ничего в запрос не будет. |
|||
|
||||
salik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Тогда не будет работать вторая выборка по условию и будет выбрасывать весь набор данных. Принял решение получить набор записей в одном запросе, а красоту наведу с помощью скрипта FastReport. |
|||
|
||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
||||
|
||||
salik |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
[QUOTE=ТоляМБА,3.2.2015, 10:30]
Если организовать связь компонентов таким образом:
В момент вызова отчёта FastReport
будет происходить автоматический перебор записей первого уровня (MasterData), а в запрос второго уровня будет вносится автоматическая корректировка, в нашем случае это where id_table = 1, where id_table = 2 и так далее. Это подставляются значения поля (MasterFields) из главной выборки. Можно написать запрос с помощью параметра, значения которого контролирует сам программист, тогда логику подстановки нужно описать в скрипте или процедуре. Это сообщение отредактировал(а) salik - 3.2.2015, 10:05 |
||||||
|
|||||||
ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
То что вы делали средствами делфи (объединяя 2 sql-запроса) я написал с помощью одного sql-запроса. Или есть ещё какие-то условия? Каком скрипте? |
|||
|
||||
salik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 28.1.2011 Репутация: нет Всего: 1 |
Не надо искать черную кошку в черной комнате, если ее там нет. Со связью таблиц главная и подчиненная я разобрался, спасибо. Помощь в написании запроса не требуется. Тема закрыта, вопрос решен. Еще раз спасибо за участие. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |