Вверх ↑
Этот топик читают: Гость
Ответов: 19
Рейтинг: 1
#16: 2014-08-12 09:46:04 ЛС | профиль | цитата
Леонид, спасибо

да, все верно, такого рода таблицу я хочу получить... схема для изучения масштабная
затем после объединения таблиц хочу научиться проводить расчеты

нужно было сделать мне умнее (прошу прощения это мой бок) и показать, что я хочу получить в конечном виде на примере моего же файла MS Excel

вот ссылка на мой файл с данными для объединения (листы Kod, Ostatki, Prodazi) http://s-tigers.com.ua/load_result.xls я добавил лист "результат", на котором с помощью функций MS Excel отобразил расчеты, которые должны производится над объединенными данными... Как вы видите, после объединения данных, дальше идет расчет категории по АВС-анализу и затем проверяется каждая позиция на неликвидность (то есть была в наличии в течении 6 мес., но не продавалась)...

сейчас у меня стоит задача разобраться, как проводить подобного рода расчеты в самой таблице, используя данные столбцов... Спасибо!




карма: 0

0
Ответов: 8928
Рейтинг: 823
#17: 2014-08-12 13:54:14 ЛС | профиль | цитата
stygar, ведь кто-то должен заносить данные о продажах и остатках! "Если бы директором был я, то:" сделал в Excel (Access-е) табличку кодов и табличку прихода/расхода, а всё остальное на формулах и макроссах (а за коды типа "Код 72_1" бухгалтеров расстреливал из рогатки ). А уж если переносить данные в другую программу, то тоже подготавливал и считал в Excel-е, и готовые массивы копипастил
Вот что-то вроде этого: load_result_2.rar
карма: 19

0
файлы: 1load_result_2.rar [44.2KB] [192]
Гость
Ответов: 17029
Рейтинг: 0
#18: 2014-08-12 15:05:48 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 08:55:48
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#19: 2014-08-12 15:32:39 ЛС | профиль | цитата
stygar писал(а):
Имея объединенные данные по движению товара, уже можно проводить множество расчетов по каждой позиции. Например, в самом Excel я без проблем для каждой позиции рассчитаю категорию по АВС-анализу, XYZ-анализу... и т.п.
Или я нихрена не понимаю, или ...
Даже не имея объединенных данных по движению товара, а имея только исходные три таблицы, одним запросом получу категорию по АВС-анализу каждой позиции.(Это если применять OLEDB)
И не надо рассказывать, что
stygar писал(а):
большинство людей эксель не знают
Они могут его и не знать. Они должны знать, что на листе "АВС" их всегда ждёт, рассчитанная на данную минуту, категория каждой позиции по ABC-анализу и т.п. не только в цифрах, но и в графике.
Леонид писал(а):
считаю, что Excel самодостаточна и прикручивать к ней свои программки излишне.
Полностью согласен с Леонидом

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 19
Рейтинг: 1
#20: 2014-08-12 15:39:23 ЛС | профиль | цитата
Tad писал(а):
Даже не имея объединенных данных по движению товара, а имея только исходные три таблицы, одним запросом получу категорию по АВС-анализу каждой позиции.
У вас большой опыт. У меня к сожалению не такой уж... Благодарен за мнения и советы.

карма: 0

0
Ответов: 8928
Рейтинг: 823
#21: 2014-08-13 16:57:28 ЛС | профиль | цитата
stygar, издание второе, переработанное и дополненное (примечания к определяющим алгоритм компонентам и группировка их с пояснениями). Так же рекомендую посмотреть на код скрипта для понимания работы его. Получше проверьте правильность извлечения данных, хотя я и проверял, но вдруг недопроверил
карма: 19

0
файлы: 1mytablexcelend.rar [5.2KB] [181]
Ответов: 19
Рейтинг: 1
#22: 2014-08-14 08:33:00 ЛС | профиль | цитата
Леонид, спасибо большое!
Буду изучать вашу схему.
карма: 0

0
Ответов: 19
Рейтинг: 1
#23: 2014-08-21 12:28:46 ЛС | профиль | цитата
а кто может помочь в таком вопросе... все по тому же объединению таблиц из Excel файлов.
Все что нужно сделал, выводится в StringTableMT необходимый результат...

Проблема в том, что при 1000 и выше строк зависает программа... А нужно по 10000-20000 строк загружать и производить над ними там дальнейшие расчеты...

------------ Дoбавленo в 12.28:
Может как-то порционно загружать строки? По 200 строк, например?
карма: 0

0
Ответов: 8928
Рейтинг: 823
#24: 2014-08-21 12:59:32 ЛС | профиль | цитата
stygar, за что боролись, на то и напоролись Не исключено, что ИНТЕРФЕЙСНАЯ таблица МТ при проступлении очередного значения чесно перерисовывает всю таблицу, а перерисовка отнимает время, а тут приходит ещё одно значение и крах программы.
В такой ситуации с обычной таблицей (или с картинками) можно было бы заносить данные в неотображаемый StrList и по окончании заполнения перекидывать данные в таблицу, при этом существенно, в разы, уменьшается время заполнения, но как это сделать с МТ не знаю, может Nesco подскажет
(И ещё раз: приведись мне желание выводить данные из Excel в свою программу, все расчёты, новые таблицы по ним, вплоть до печати готовых отчётов, делал в самой Excel с помощью формул и макросов, а из своей программы только запускал макросы и выводил результаты )
карма: 19

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#25: 2014-08-21 13:42:11 ЛС | профиль | цитата
Леонид писал(а):
при этом существенно, в разы, уменьшается время заполнения

Вряд ли сильно поможет при таком количестве строк.
Леонид писал(а):
И ещё раз: приведись мне желание выводить данные из Excel в свою программу, все расчёты, новые таблицы по ним, вплоть до печати готовых отчётов, делал в самой Excel с помощью формул и макросов, а из своей программы только запускал макросы и выводил результаты

Вот это правильно. Я бы тоже пошел таким путем.
stygar писал(а):
Может как-то порционно загружать строки? По 200 строк, например?

Тут надо учесть тот момент, что с таблицей до окончания загрузки всего списка, ничего нельзя будет сделать, только тупо смотреть, как она загружает в себя список кусками. И я бы категорически не советовал использовать StringTableMT, для таких вещей больше подходит MTStrTbl
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2014-08-21 20:34:42 ЛС | профиль | цитата
stygar писал(а):
А нужно по 10000-20000 строк загружать и производить над ними там дальнейшие расчеты...
Расчеты нужно производить до загрузки в таблицу, а таблица - это ОКНО для просмотра РЕЗУЛЬТАТА. Как только это поймешь - сразу отпадут все проблмы и вопросы.
stygar писал(а):
Может как-то порционно загружать строки? По 200 строк, например?
А глаза не вылезут при просмотре по 200 строк ?
Пожалей оператора.
Ослепнет.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 19
Рейтинг: 1
#27: 2014-08-23 09:27:28 ЛС | профиль | цитата


nesco писал(а):
И я бы категорически не советовал использовать StringTableMT, для таких вещей больше подходит MTStrTbl

это не проблема, уже переделал, спасибо за совет

Tad писал(а):
Расчеты нужно производить до загрузки в таблицу, а таблица - это ОКНО для просмотра РЕЗУЛЬТАТА. Как только это поймешь - сразу отпадут все проблмы и вопросы.

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

Tad писал(а):
А глаза не вылезут при просмотре по 200 строк ?
Пожалей оператора.
Ослепнет.


оператор в этот момент не работает с данными, смысл ему с ними работать если они не загружены...
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#28: 2014-08-23 12:19:14 ЛС | профиль | цитата
1. В MTStrTbl есть нижняя точка PerPage -
2. Запрос строишь такой:
SELECT <что нужно>
FROM <откуда>
WHERE <условие>
LIMIT <PerPage>
OFFSET <здесь значение меняется от клавиш управления PgUP,PgDown,Home,End и стрелок курсора>
Результат - мгновенный вывод на экран, т.к. выводятся только те строки, что помещаются в видимую на экране область таблицы.
Демонстрация вышесказанного : http://www.fayloobmennik.net/4050409
Там в таблице не 20 тыс. строк, а все 800 тысяч.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 19
Рейтинг: 1
#29: 2014-08-25 18:59:36 ЛС | профиль | цитата
Tad писал(а):
В MTStrTbl есть нижняя точка PerPage

Спасибо за подсказку.

Tad, вы мне уже помогли ранее с правильностью построения sql-запроса для объединения необходимой информации с разных страниц MS Excel.

Буду рад, если ещё поможете.

Ситуация такая, после sql-запроса в MT таблицу выводится NULL... Мне нужно этот NULL заменить на 0.
Решить в принципе можно, как я пока понял, двум вариантами: (1) непосредственно в самом sql-запросе сделать указание на замену NULL, (2) в сформированной МТ таблице воспользоваться элементом MST_FindText. Второй вариант менее желателен, так как будет много дополнительных расчетов, как я понял. Первый - лучше. С этими двумя вариантами у меня ничего не выходит. Я уже старался найти инфо по sql-запросу, чтоб вас не дергать, нашел про ISNULL, IFNULL... но не получается с ними у меня ничего. Вот пример кода, который я указывал:

SELECT `номенклатура$`.Код, `номенклатура$`.Наименование, `номенклатура$`.Группа, `номенклатура$`.Бренд,
IFNULL((SELECT `остатки$`.Ост_тек FROM `%1`.`остатки$` `остатки$` WHERE `номенклатура$`.Код = `остатки$`.Код),0)
FROM `%1`.`номенклатура$` `номенклатура$`

Но он не срабатывает... Можете подсказать, в чем здесь проблема? Как мне NULL на 0 заменить при запросе?

И по второму варианту решения данной проблемы. Указываю в MST_FindText искомый текст NULL, указываю текст замены 0. Подсчитал сколько всего значений NULL в таблице после запроса и пустил с помощью элемента "Цикл со счетчиком (for)" действие на точку doFindNext. Если счетчик до 10 повторений, то NULL заменяется, если больше 10, то выдает ошибку "ExceptionE in modul C:\WINDOWS\system32\ntdll.dll at 00012ACE Access violation at adsress 7C912ACE in modul 'ntldll.dll'. Write of address 004036AD"

В чём может быть проблема в первом и втором случае?
карма: 0

0
Ответов: 824
Рейтинг: 138
#30: 2014-08-25 19:05:15 ЛС | профиль | цитата
в MT таблицу выводится NULL
stygar, Смотрим сюда, функция"IIF"
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)