|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.12.2009, 11:30 | #1 |
Пользователь
Регистрация: 24.10.2009
Сообщений: 87
|
Как сделать БД на основе двух других
Подскажите по базам данных
Есть две базы данных Первая БД находится на Листе №1, состоит из двух столбцов «Дата1» и «Кол-во плюс» Дата1 Кол-во плюс 01.01.2009 / 25 02.01.2009 / 30 03.01.2009 / 15 04.01.2009 / 24 05.01.2009 / 43 07.01.2009 / 21 09.01.2009 / 19 Вторая БД находится на Листе №2, состоит из двух столбцов «Дата2» и «Кол-во минус» Во второй БД дата представлена в формате - 01.01.2009 9:00:00 (дата + время начало смены) Во второй БД каждая дата может быть представлена два раза (две смены) Во второй БД может не быть даты, которая есть в первой БД и наоборот Дата2 / Кол-во минус 01.01.2009 9:00:00 / 7 01.01.2009 21:00:00 / 15 02.01.2009 9:00:00 / 14 04.01.2009 21:00:00 / 18 05.01.2009 9:00:00 / 25 05.01.2009 21:00:00 / 24 06.01.2009 21:00:00 / 29 08.01.2009 9:00:00 / 18 08.01.2009 21:00:00 / 27 09.01.2009 9:00:00 / 22 Необходимо На Листе №3 сформировать третью БД на основе двух предыдущих Третья БД должна состоять из четырёх столбцов Первый столбец «Дата3» - формируется из последовательных уникальных дат, которые встречаются в столбцах «Дата1» и «Дата2» Второй столбец «Кол-во плюс2» - формируется из данных столбца «Кол-во плюс», если в данную дату была поставка («Дата3» = «Дата1») то «Кол-во плюс2» = «Кол-во плюс», иначе 0. Третий столбец «Минус 9.00» - формируется из данных двух столбцов: «Дата1» и «Кол-во минус» Если в столбце «Дата1» присутствует время 9:00:00 то в столбец «Минус 9.00» заносятся данные из столбца «Кол-во минус», иначе в столбец «Минус 9.00» заносится 0. Четвертый столбец «Минус 21.00» - формируется из данных двух столбцов: «Дата1» и «Кол-во плюс» Если в столбце «Дата1» присутствует время 21:00:00 то в столбец «Минус 21.00» заносятся данные из столбца «Кол-во плюс», иначе в столбец «Минус 21.00» заносится 0. Дата3 /Кол-во плюс2 /Минус 9.00/Минус 21.00 01.01.2009 / 25 / 7 / 15 02.01.2009 / 30 / 14 / 0 03.01.2009 / 15 / 0 / 0 04.01.2009 / 24 / 0 / 18 05.01.2009 / 43 / 25 / 24 06.01.2009 / 0 / 0 / 21 07.01.2009 / 21 / 0 / 0 08.01.2009 / 0 / 18/ 27 09.01.2009 / 19 / 22/ 0 |
09.12.2009, 12:59 | #2 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Здравствуйте PARTOS
Чтобы быстрее получить решение,я бы на вашем месте,создал образец.Заполнил данными с различными возможными вариантами заполнения Лично мне создавать и заполнять желания нет,да и время забирает.
Анализ,обработка данных Недорого
|
09.12.2009, 14:38 | #3 |
Пользователь
Регистрация: 24.10.2009
Сообщений: 87
|
Образец того что меня интересует в приложении, с описанием внутри
|
09.12.2009, 15:13 | #4 |
Пользователь
Регистрация: 02.02.2009
Сообщений: 59
|
Посмотрите прикрепленный файл.
С уважением, Александр. |
09.12.2009, 19:23 | #5 |
Пользователь
Регистрация: 24.10.2009
Сообщений: 87
|
Всё отлично работает кроме столбца с датами «Дата3»
Я изменил в столбце «Дата1» значение месяца с первого на второй: Даты в столбце «Дата3» не изменились а поставки «Кол-во плюс2» все обнулились Более подробно в приложении |
09.12.2009, 22:25 | #6 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте PARTOS.
Предлагаю посмотреть на вариант решения Вашей задачи с участием библиотеки ADO, применяемой для работы с табличными данными с использованием SQL (структурированный язык запросов). Эта технология редко, но все же применяется при обращении к данным расположенным в электронных таблицах Excel. Евгений. |
10.12.2009, 11:05 | #7 |
Пользователь
Регистрация: 24.10.2009
Сообщений: 87
|
Попробовал применить вариант решения с применением библиотеки ADO на исторических данных с начала 2001 года по начало 2005 года, результат:
Компьютер долго думал, потом выдал «Run-time error -2147467259(80004005) Потеряна связь с Microsoft Excel для просмотра присоединённых листов» Потом опять долго думал и выдал результат, но… В результирующей колонке «Дата 3» даты выстроились не по мере возрастания (01.01.2001; 02.01.2001;03.01.2001 и т.д.) а в следующем порядке: Сначала все ПЕРВЫЕ числа всех месяцев и всех годов встречающихся в исходных базах дат «Дата 1» и «Дата 2» (01.01.2001; 01.02.2001; 01.03.2001……01.12.2004) потом идут все ВТОРЫЕ числа всех месяцев и всех годов встречающихся в исходных базах дат «Дата 1» и «Дата 2» (02.01.2001; 02.02.2001; 02.03.2001……02.12.2004) и т.д. |
10.12.2009, 22:30 | #8 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте PARTOS.
Вы конечно правы я ошибся, без корректировки кода конструкция бесполезна. Евгений. |
11.12.2009, 07:54 | #9 |
Пользователь
Регистрация: 24.10.2009
Сообщений: 87
|
Спасибо за подсказки.
Я занялся изучением Excel недавно, поэтому, всё что серьёзнее написания формул с использованием стандартных Функций для меня, ПОКА, тёмный лес. Буду потихоньку разбираться с библиотеками ADO, применяемыми для работы с табличными данными с использованием SQL (структурированный язык запросов). Спасибо. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в один лист можно собрать данные с других листов | Lis000iq | Microsoft Office Excel | 12 | 24.08.2015 12:51 |
Как сделать в таблице (StringGrid) ячейку состоящую из двух ячеек на манер Exel | бедный_студент | Помощь студентам | 3 | 28.04.2009 01:15 |
Как сделать чтобы двумерный массив который создается в функции можно было использовать в других функциях | Olya90 | Помощь студентам | 4 | 20.04.2009 18:39 |
Из двух dat файлов сделать txt | valdem | Общие вопросы C/C++ | 1 | 19.02.2009 19:33 |
Из двух dat файлов сделать txt | valdem | Помощь студентам | 5 | 19.02.2009 17:21 |