Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
2 / 2 / 2
Регистрация: 04.09.2012
Сообщений: 9
1

Создание таблицы на основе перебора значений из других таблиц

02.11.2014, 20:34. Показов 1742. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, уважаемые посетители форма.
Прошу помощи в решении следующего вопроса. Не знаю как к нему подступиться.

Необходимо составить бланк задания для курсовых. Курсовой представляет собой расчет напряжения и тока на всех участках цепи.
Дана цепь, представленная на рисунке во вложении.
На каждом отрезке цепи может быть либо источник напряжения, либо источник тока, либо комплексное сопротивление.
При чем в схеме присутствуют 3 источника напряжения и один источник тока, остальные 4 участка - сопротивления.
Есть следующие таблицы:
  1. Значения возможных напряжений
  2. Значения возможных фаз напряжения
  3. Значения возможных токов
  4. Значения возможных сопротивлений
Необходимо перебрать все возможные варианты расположения элементов и их номиналов.
Выходная таблица должна иметь вид: 8 столбцов, содержащих номиналы элементов для каждого из восьми отрезков цепи.

Можно ли решить данный вопрос без использования Visual Basic?
Если нельзя, то, помогите, пожалуйста, с кодом.
Миниатюры
Создание таблицы на основе перебора значений из других таблиц  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2014, 20:34
Ответы с готовыми решениями:

Создание таблицы в Access на основе других таблиц
Есть 3 таблицы: Движение, ЛЗК, Требования. В каждой находится столбец "Код материала", в таблице...

Создание таблицы со значениями из других таблиц
Доброй ночи. Изучаю php и mysql для курсовой работы. Прошу оказать помощь. Необходимо вставить...

Создание таблицы на основе данных из нескольких таблиц
Здравствуйте, подскажите пожалуйста, есть база данных абонентов из нескольких таблиц, как сделать...

Создание таблицы на основе введенных значений
Добрый день, подскажите. Мне надо сделать так, чтобы после нажатия на кнопку "Добавить" создавалась...

9
Эксперт MS Access
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.11.2014, 20:45 2
Цитата Сообщение от To-toshick Посмотреть сообщение
Есть следующие таблицы:Значения возможных напряжений Значения возможных фаз напряжения Значения возможных токов Значения возможных сопротивлений Необходимо перебрать все возможные варианты расположения элементов и их номиналов.
Выходная таблица должна иметь вид: 8 столбцов, содержащих номиналы элементов для каждого из восьми отрезков цепи.
Можно ли решить данный вопрос без использования Visual Basic?
Без проблем. Запросом, в котором таблицы создают декартово умножение записей, т.е. между таблицами не установлено никаких связей и будут выводиться все мыслимые сочетания записей всех таблиц.
Visual Basic
1
2
Select Напряжения.*, Фазы.*, Токи.*, Сопротивления.*
from Напряжения, Фазы, Токи, Сопротивления
1
9108 / 6037 / 590
Регистрация: 27.03.2013
Сообщений: 19,813
02.11.2014, 20:46 3
Цитата Сообщение от To-toshick Посмотреть сообщение
Значения возможных напряжений Значения возможных фаз напряжения Значения возможных токов Значения возможных сопротивлений
Скорее всего нужно эти 4 таблички для начала со всяческими звозможными значениями сделать, типа справочников. только уже потом таблицу фактов, а уже по ней создать запрос с вычислениями всяких всячин.
Кстати, по каким формулам всё должно расчитываться?
0
2 / 2 / 2
Регистрация: 04.09.2012
Сообщений: 9
02.11.2014, 21:13  [ТС] 4
Рассчитываться ничего не должно. Нужно просто составить бланки задания.

Эти 4 таблички уже готовы:

Например таблица напряжений содержит значения: 100, 200 В.
Таблица токов: 1, 2, 3, 4, 5 А.
Таблица фаз напряжений: -180, -135, - 90 ... +135, +180.
Таблица сопротивлений: 50 + j100, 50 - j100 ...

Я не знаю как программно реализовать объединение этих таблиц.
Выходная таблица должна иметь вид, подобный тому, что представлено во вложении.
Обязательно должно присутствовать 3 источника напряжения напряжения, 1 источник тока и 4 сопротивления.

Как я представляю, на основе таблиц номиналов и фаз напряжения с помощью
VB.NET
1
2
Select Напряжения.*, Фазы.*, Токи.*, Сопротивления.*
from Напряжения, Фазы, Токи, Сопротивления
будет составлена таблица полных значений напряжений (номинал + фаза) (спасибо mobile)

Потом надо выбрать 3 случайные ячейки и в них поместить полные значения напряжений (случайные значения из ранее созданной таблицы).
Потом выбрать случайную ячейку из незаполненных и поместить значение тока (случайное значение из таблицы тока).
В оставшиеся поместить случайные значения из таблицы сопротивлений.
Как раз создать таблицу фактов.
И так перебрать все возможные варианты. Но как это сделать, пока что идей нет =(
Миниатюры
Создание таблицы на основе перебора значений из других таблиц  
0
ltv_1953
02.11.2014, 21:16
  #5

Не по теме:

ТОЭ помню уже смутно (правила Кирхгофа и т.п.), но неужели в такой топологии возможно любое расположение источников тока? (3, 8, 6), например? Не должны ли выполняться некоторые ограничения в "восьмерках"?

0
Эксперт MS Access
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.11.2014, 21:31 6
Цитата Сообщение от To-toshick Посмотреть сообщение
Потом надо выбрать 3 случайные ячейки и в них поместить полные значения напряжений (случайные значения из ранее созданной таблицы).
SQL
1
2
3
4
5
6
SELECT Top 3 q.Напряжение
FROM (
     SELECT Напряжения.*, Фазы.*, Токи.*, Сопротивления.*
     FROM Напряжения, Фазы, Токи, Сопротивления
     ) q
ORDER BY rnd(Напряжения.ID+Фазы.ID+Токи.ID+Сопротивления.ID) DESC
В каждой таблице (Напряжения, Фазы, Токи, Сопротивления) должно быть поле счетчика для обеспечения работы генератора случайных чисел rnd. Эти поля счетчиков обозначены имятаблицы.ID

По остальным условиям перенедопонятость :-)
1
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
03.11.2014, 08:17 7
Цитата Сообщение от To-toshick Посмотреть сообщение
Как я представляю, на основе таблиц номиналов и фаз напряжения с помощью
SQL
1
2
SELECT Напряжения.*, Фазы.*, Токи.*, Сопротивления.*
FROM Напряжения, Фазы, Токи, Сопротивления
будет составлена таблица полных значений напряжений (номинал + фаза)
Таблицы Токи, Сопротивления в данном случае излишни.
Цитата Сообщение от To-toshick Посмотреть сообщение
Например таблица напряжений содержит значения: 100, 200 В.
Таблица токов: 1, 2, 3, 4, 5 А.
Таблица фаз напряжений: -180, -135, - 90 ... +135, +180.
Таблица сопротивлений: 50 + j100, 50 - j100 ...

Выходная таблица должна иметь вид, подобный тому, что представлено во вложении.
Обязательно должно присутствовать 3 источника напряжения напряжения, 1 источник тока и 4 сопротивления.
Потом надо выбрать 3 случайные ячейки и в них поместить полные значения напряжений (случайные значения из ранее созданной таблицы).
Потом выбрать случайную ячейку из незаполненных и поместить значение тока (случайное значение из таблицы тока).
В оставшиеся поместить случайные значения из таблицы сопротивлений.
Как раз создать таблицу фактов.
И так перебрать все возможные варианты.
Посмотрим сколько же таких вариантов.
Таблица полных значений напряжений (номинал + фаза) содержит n=18 значений, из которых нужно выбрать k=3 значения, что можно сделать u=1140 способами (использовалась формула (n+k-1)!/(k!*(n-1)!) числа сочетаний с повторениями из n по k).
Аналогично:
для токов: n=5, k=1, количество вариантов i=5;
для сопротивлений: n=10 (предположительно), k=4, количество вариантов r=715.
Общее количество вариантов, содержащих все 8 элементов, равно произведению u*i*r=4075500, каждый из которых может быть размещен на схеме 8!=40320 способами.
Итак, общее количество всех возможных вариантов равно 4075500*40320=164 324 160 000.
И что вы будете со всем этим добром делать?
Да и Access, быстрее всего, надорвется.
1
2 / 2 / 2
Регистрация: 04.09.2012
Сообщений: 9
13.11.2014, 23:03  [ТС] 8
Я думал access сможет справиться с таким объемом данных. Ну раз надорвется, то решил рандомно генерировать строку с данными, потом сравнивать ее с ранее сгенерированными. если не совпадает, то добавлять в таблицу.
Создал запросы, которые рандомно выбирают ток, полное напряжение (номинал и фаза) и сопротивления. Создал таблицу с номерами 1,2,3...8 из которой запросом тяну 4 случайных неповторяющихся цифры (номера веток для источника тока и трех источников напряжения).
К сожалению столкнулся с проблемой с таблицей, которая содержит 4 случайные цифры. Таблица вертикальная (1 столбец), а надо бы превратить ее в горизонтальную. Пробовал много методов, в том числе и pivot, но в итоге элементы строки (рандомные цифры) всегда сортируются по возрастанию (к сожалению код запросов не сохранился). Например таблица после запроса:
ID
7
4
3
8
Превращается в
I U1 U2 U3
3 4 7 8
Получается, что источник тока никогда не будет располагаться в ветках 6-8.
Как вариант думал сохранить запрос с 4-мя случайными цифрами в таблицу, пронумеровать строки и потом элементарными запросами с where вытягивать нужные мне значения в правильном порядке.

Есть ли более элегантный способ развернуть один столбец, задать названия столбцов и исключить сортировку?
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
14.11.2014, 19:05 9
To-toshick, решить поставленную задачу, исключая требование о всех возможных вариантах (кстати, так и не дождался пояснения, нафига более 150 миллиардов вариантов), поможет процедура IUR, находящаяся в модуле Module1. Результат в таблице Result.
Не злоупотребляйте количеством вариантов.
Вложения
Тип файла: rar db2.rar (15.0 Кб, 10 просмотров)
1
2 / 2 / 2
Регистрация: 04.09.2012
Сообщений: 9
18.12.2014, 20:17  [ТС] 10
Спасибо большое, помогло.

Так вышло, что преподаватель изменил немного задачу. Стало нужно помещать в ветви с источниками напряжения активные и/или реактивные сопротивления. А сами сопротивления должны быть представлены в виде комбинации RLC, а не одного комплексного числа.

minob, спасибо за помощь, но, к сожалению, я не смогла изменить код под свою задачу, поэтому решила писать все без VBA. Получилось кривовато и работает медленно, но работает правильно =)

В итоге у меня получились следующие запросы:
8 из них составляют случайные номиналы RLC для каждой ветки.
3 из них составляют случайные параметры источников токов
1 запрос выбирает номинал тока
1 запрос случайно выбирает номера ветвей без повторов для всех источников сразу (чтобы не было повторений).

Один макрос удаляет R, L и C из ветви, в которой поселился ток.
Другой - сравнивает получившуюся строку с ранее сгенерированными.
При чем я могу задавать количество одновременно генерируемых вариантов. От идеи генерировать сразу же все возможные варианты я отказалась.

Всем спасибо за подсказки. Они помогли.

Теперь нужно загрузить картинку в отчет (по каждому варианту своя, хранятся в определенной папке). В название картинки входит ID (для каждого варианта это поле уникально). Проблема в том что картинок очень много и они будут ответом на задачу по данным этого вариант. Картинку нужно вывести в отчет. Можно ли как-то программно задавать путь до картинки (название= ID.jpg), а потом записывать его в переменную пути элемента Picture на отчет?
0
18.12.2014, 20:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2014, 20:17
Помогаю со студенческими работами здесь

Автоматическое создание запросов на основе значений столбца таблицы
Здравствуйте! Выкручивался ранее в экселе, но объемы стали выше критических. Таблица имеет...

Создание таблиц из количества значений другой таблицы
Здравствуйте. Есть таблица с N значений, нужно чтобы для каждого N создавалась новая таблица. Т.е....

Редактирование произвольной таблицы, если ряд полей таблиц содержит коды объектов из других таблиц
Уважаемые, Гуру! Хотелось бы построить редактор произвольной таблицы БД. Загрузка таблицы "select...

Создание формы (запроса) с выводом всех значений одной из таблиц, но по условиям полей из другой таблицы
Добрый день, уважаемые форумчане!!! Сформулировал заголовок как смог :) Имеем: - таблица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru