Topic: Импорт из Excel (многостраничная книга)

Всем доброго вечера!  Похоже, что это будет первый вопрос в новом году smile)))

До этого вопроса я импортировал из csv файла, но там все данные были на одном листе. Теперь нужно импортировать из многостраничной книги (где каждый лист - это однотипные данные за год). Как лучше сделать, объединить все данные из разных листов на одном листе и потом уже из него сделать экспорт в csv  файл и далее импортировать все данные скопом в одну таблицу, или же сделать несколько таблиц, так же по годам и каждый лист импортировать только в свою таблицу, а потом уже, в запросах - джойнить их вместе и получать сводные отчеты?

P.S. я понимаю, что вопрос скорее риторический и относится в общем к проектированию баз данных, нежели к программированию конкретной MVDB, но может быть кто сталкивался с подобной дилеммой и  даст совет как правильнее сделать?

Re: Импорт из Excel (многостраничная книга)

Приветствую,


я не вижу смысла записи из разных годов импортировать в разные таблицы БД, сущность одна ведь, только даты разные.

Dmitry.

3 (edited by zoomix 2015-01-03 12:07:50)

Re: Импорт из Excel (многостраничная книга)

Спасибо за совет. Я тоже склоняюсь к тому, что т.к. данные однотипные, то делить их по годам в разные таблицы нет смысла, проще будет Селектом фильтровать по годам, чем разными таблицами.
=========================================

Еще такой вопросик - есть в таблице, кроме прочих колонок,  еще и такие колонки: дата, приход, расход, остаток. Колонку остаток, хочу сделать вычисляемым полем, но там есть такая особенность расчета:
=================
[остаток за предыдущий день] + [приход сегодня] - [расход сегодня] = [остатку за сегодняшний день].

Как мне в формуле указать [остаток за предыдущий день] и что делать с самой первой записью, у которой нет остатка за предыдущий день? Оператором "IF"? Типа, если есть остаток за предыдущий день, то считаем так как по формуле выше, а если нет остатка, то считаем просто: "приход - расход'...

Re: Импорт из Excel (многостраничная книга)

Думаю выч. поле будет примерно таким:

( (SELECT 
TOTAL(prihod) - TOTAL(rashod) 

FROM table 

WHERE
date('now', '-1 day') = datefield ) 

+

(SELECT 
TOTAL(prihod) - TOTAL(rashod) 

FROM table 

WHERE
date('now') = datefield) )

если остатка у предыдущего дня нет, то первая часть запроса просто вернет ноль, думаю ничего с эти делать не нужно.

Dmitry.

Re: Импорт из Excel (многостраничная книга)

Спасибо, попробую!

6 (edited by zoomix 2015-01-09 08:41:57)

Re: Импорт из Excel (многостраничная книга)

Скорее всего я не совсем точно сформулировал свой вопрос - упустил из виду, что дата в качестве указателя предыдущей записи - не подойдет, т.к. за один день м.б. несколько операций, а формула, основанная на дате, будет ссылаться на остаток вчерашнего дня...
Поэтому похоже, что тут нужно как-то использовать rowid или добавить свое поле id
Что бы хотелось от конкретной таблицы:
----------
Остаток по текущей записи = Остаток по предыдущей записи  + Приход по текущей записи - Расход по текущей записи.
----------
А нет ли возможности ссылаться в запросах на значение полей предыдущей записи.
Например, как-то так:
(Остаток.id-1)+Приход-Расход  ?
Не для расчетных полей, понятно, т.к. там не на что ссылаться - в таких полях нет записанных данных. А если ч/з временную переменную, там хранить значение предыдущего остатка, и потом использовать его
в расчетах и переприсваивать затем новой значение?
Трививльная задача для Excel, FoxPro - а здесь в ступоре...


Вот в картинке, что хотелось бы получить в расчетном поле "Остаток".

Post's attachments

Attachment icon ostatok.jpg 61.57 kb, 289 downloads since 2015-01-08