|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Нужна помощь, в связывании таблиц
Доброго времени суток, уважаемые форумчане. Интересует такой вопрос: есть три таблицы,созданные с помощью Database Desktop. Нужно связать эти таблицы между собой. Предположительно, поля для первой таблицы:
1.автоинкримент. 2.Код склада. 3.Код товара. Второй: 1.Код склада. 2.Директор склада. 3.Телефон. Третьей: 1.Код товара. 2.Наименование товара. 3.Цена. Непосредственно, связь между двумя первыми таблицами я сделал, через код склада, все функционирует нормально, как теперь связать по наименованию товара первую и третью таблицу? P.s.Все делал с помощью ttable. |
#2
|
||||
|
||||
Так-же как и первую со второй связали через поля [Код товара]
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Проблема в том, что в свойство мастер соурс компонента т.тэйбл можно указать только один родительский набор данных, следовательно установить только одну связь. Можно ли как-то решить эту проблему? Заранее спасибо.
|
#4
|
||||
|
||||
Так у вас и будет по одному.
Вторая табля - мастер для первой, а первая мастер для третьей. Вы бы их имена-то дали для ориентировки. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Спасибо большое. По логике все правильно. Меня просто смутило - то, что в теории справочники вроде как должны быть главными, т.е. от них должны зависеть другие таблицы, а тут выходит наооборот.
И сразу вопрос, а если бы мне нужно было связать одну таблицу с двумя мастерами? Такое вообще возможно? |
#6
|
||||
|
||||
Да, но не автоматом. Через запросы. Вообще встроеная реализация Мастер-детайл очень тормозная. Не увлекайтесь ей.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
|||
|
|||
Надеюсь, не утомил еще)
В общем,а могу я как-то эти связи программно отключить? Чтобы по нажатию кнопки можно было показать все содержимое всех таблиц, а не частично, как это происходит, когда таблицы связаны? Вообще, в результате, я должен сформировать некое подобие ведомости, определенного типа, из полей различных таблиц и с подведение итогов, к примеру по складу, и всего. Подскажите пожалуйчта, с помощью чего это можно реализовать? |
#8
|
||||
|
||||
Конечно. Примерно так:
Отключение: Код:
Table1.MasterSource := nil; Код:
Table1.MasterSource := DataSource1; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
|||
|
|||
Спасибо за помощь.
В ходе выполнения работы возник следующий вопрос: есть таблица main с полями 1.код склада 2.код цеха 3.количество так же таблица spr1 с полями 1.код склада 2.телефон Таблицы связаны по коду складаю Нужно получить отчет следующего типа: код склада____ телефон____ код цеха_____колв-во___ сумма кол-в по складу ___ сумма кол-в по складам__ Как я понимаю,это надо сделать по c помощью sql запросов,я поставил tquery,связал с базой данных и соответсвенно с bdgrid'ом. Как должен выглядеть запрос чтобы в таблице получить комбинацию из полей двух связных таблиц? И как можно вставить после завершения записей по каждому складу строку о сумме по текущем складу? |
#10
|
|||
|
|||
Так,с получением общей таблицы - вопрос отпал.По преженему остается открытым вопрос, о вставке строки после того, как закончатся записи по определенному складу,в которой будет содержатся сумма кол-в по этому складу.
|
#11
|
||||
|
||||
Если надо вставить непосредственно в грид, то это не так просто. Стандартные средства не предусматривают группировку и сумирование.
Обойти это можно с помощью запроса на объединение, но это несколько некрасивое решение, но если вас устроит то вот где-то так: Код:
select id,Caption,Price from Goods union select -1,'Итого',Sum(Price) from Goods order by id desc Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
Хм,видимо что-то неправильно понял,пока не удалось)
Вот мой код запроса,сливающий две таблицы в одну.Соответственно на следующей строчке в bdgrid хочу получить итог - общую сумму по полю Колво Код:
select (КодСклада/1) as N, КодСклада, Телефон, КодЦеха, Колво from spr1 left outer join mainfile on spr1.КодСклада = mainfile.КодСклада union |
#13
|
||||
|
||||
Так попробуйте:
Код:
select (КодСклада/1) as N, КодСклада, Телефон, КодЦеха, Колво from spr1 left outer join mainfile on spr1.КодСклада = mainfile.КодСклада union select null,null,null,'Итого:',Sum(Колво) from spr1 left outer join mainfile on spr1.КодСклада = mainfile.КодСклада Не понял, зачем (КодСклада/1) as N ? И еще один момент. Я для того что-бы строка с итогом попала вниз, сортирую по коду записи, предварительно присваивая итогу -1, т.е. заведомо минимальное значение. У вас есть в таблице аналогичное поле? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 14.12.2009 в 19:53. |
#14
|
|||
|
|||
(КодСклада/1) as N - хах,это я просто тестировал возможность присвоения имени столбцу.
Еще раз огромное спасибо за помощь |