Форум LibreOffice по-русски

Автор Тема: Связь многие-ко-многим и формы в Libeoffice Base  (Прочитано 1126 раз)

dtox

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Здравствуйте!
Помогите в решении такой задачи.
Есть связь многие-ко-многим, реализуемая через промежуточную таблицу.
Подключение к mysql через ODBC

Имеются таблицы:

design – дизайны;
threads – каталог ниток;
design_threads – информация о нитках, которые используются в дизайне (их может быть несколько) или дизайнах, в которых используются нитки.

Дамп базы с табличками:
-- phpMyAdmin SQL Dump
-- version 4.2.13
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Дек 11 2014 г., 01:40
-- Версия сервера: 5.6.22-log
-- Версия PHP: 5.5.3

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `test`
--
CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `test`;

-- --------------------------------------------------------

--
-- Структура таблицы `design`
--

DROP TABLE IF EXISTS `design`;
CREATE TABLE IF NOT EXISTS `design` (
`id_design` int(11) NOT NULL COMMENT 'УН дизайна\n',
  `name` varchar(120) DEFAULT NULL COMMENT 'наименование дизайна',
  `comment` varchar(250) NOT NULL COMMENT 'комментарий '
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='таблица дизайнов';

--
-- Дамп данных таблицы `design`
--

INSERT INTO `design` (`id_design`, `name`, `comment`) VALUES
(1, 'Дизайн 1', 'тестовая запись 1'),
(2, 'Дизайн 2', 'тестовая запись 2'),
(3, 'Дизайн 3', 'тестовая запись 3'),
(4, 'Дизайн 4', 'тестовая запись 4');

-- --------------------------------------------------------

--
-- Структура таблицы `design_threads`
--

DROP TABLE IF EXISTS `design_threads`;
CREATE TABLE IF NOT EXISTS `design_threads` (
`id_design_threads` int(11) NOT NULL,
  `id_design` int(11) NOT NULL,
  `id_threads` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4;

--
-- СВЯЗИ ТАБЛИЦЫ `design_threads`:
--   `id_design`
--       `design` -> `id_design`
--   `id_threads`
--       `threads` -> `id_threads`
--

--
-- Дамп данных таблицы `design_threads`
--

INSERT INTO `design_threads` (`id_design_threads`, `id_design`, `id_threads`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 2, 1),
(4, 2, 2),
(5, 2, 3),
(6, 2, 4);

-- --------------------------------------------------------

--
-- Структура таблицы `threads`
--

DROP TABLE IF EXISTS `threads`;
CREATE TABLE IF NOT EXISTS `threads` (
`id_threads` int(11) NOT NULL,
  `artikul` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
  `name` varchar(45) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='каталог ниток';

--
-- Дамп данных таблицы `threads`
--

INSERT INTO `threads` (`id_threads`, `artikul`, `name`) VALUES
(1, 'ART_1', 'Красная нитка'),
(2, 'ART_2', 'Зеленая нитка'),
(3, 'ART_3', 'Белая нитка'),
(4, 'ART_4', 'Черная нитка');

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `design`
--
ALTER TABLE `design`
 ADD PRIMARY KEY (`id_design`);

--
-- Индексы таблицы `design_threads`
--
ALTER TABLE `design_threads`
 ADD PRIMARY KEY (`id_design_threads`), ADD KEY `id_design_idx` (`id_design`), ADD KEY `id_threads_design_idx` (`id_threads`);

--
-- Индексы таблицы `threads`
--
ALTER TABLE `threads`
 ADD PRIMARY KEY (`id_threads`), ADD UNIQUE KEY `artikul` (`artikul`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `design`
--
ALTER TABLE `design`
MODIFY `id_design` int(11) NOT NULL AUTO_INCREMENT COMMENT 'УН дизайна\n',AUTO_INCREMENT=5;
--
-- AUTO_INCREMENT для таблицы `design_threads`
--
ALTER TABLE `design_threads`
MODIFY `id_design_threads` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;
--
-- AUTO_INCREMENT для таблицы `threads`
--
ALTER TABLE `threads`
MODIFY `id_threads` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5;
--
-- Ограничения внешнего ключа сохраненных таблиц
--

--
-- Ограничения внешнего ключа таблицы `design_threads`
--
ALTER TABLE `design_threads`
ADD CONSTRAINT `design_threads_ibfk_1` FOREIGN KEY (`id_design`) REFERENCES `design` (`id_design`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `design_threads_ibfk_2` FOREIGN KEY (`id_threads`) REFERENCES `threads` (`id_threads`) ON DELETE NO ACTION ON UPDATE NO ACTION;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Нужно сделать форму примерно такого состава:

 Главная форма (таблица design) – Дизайны в виде таблицы, которая позволяет добавлять, редактировать и изменять дизайны.
 Подчиненная форма (субформа) – Нитки в дизайне в виде таблицы, которая позволяет просматривать, удалять, изменять нитки, которые используются в дизайне. И чтобы выбор осуществлялся в понятном пользователю виде – выпадающий список с множественным выбором.

В общем, таблица design_threads  должна заполняться, а в субформе можно было в понятной форме добавлять, удалять, изменять состав ниток, которые используются в дизайне.

Подскажите, пожалуйста, как это реализовать в Libreoffice Base!
« Последнее редактирование: 11 Декабря 2014, 01:21:21 от dtox »

 

© 2012-2017 LibreOffice по-русски. Powered by SMF®

Яндекс.Метрика