Леонид, спасибо
да, все верно, такого рода таблицу я хочу получить... схема для изучения масштабная
затем после объединения таблиц хочу научиться проводить расчеты
нужно было сделать мне умнее (прошу прощения это мой бок) и показать, что я хочу получить в конечном виде на примере моего же файла MS Excel
вот ссылка на мой файл с данными для объединения (листы Kod, Ostatki, Prodazi) http://s-tigers.com.ua/load_result.xls я добавил лист "результат", на котором с помощью функций MS Excel отобразил расчеты, которые должны производится над объединенными данными... Как вы видите, после объединения данных, дальше идет расчет категории по АВС-анализу и затем проверяется каждая позиция на неликвидность (то есть была в наличии в течении 6 мес., но не продавалась)...
сейчас у меня стоит задача разобраться, как проводить подобного рода расчеты в самой таблице, используя данные столбцов... Спасибо!
Этот топик читают: Гость
Ответов: 19
Рейтинг: 1
|
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
stygar, ведь кто-то должен заносить данные о продажах и остатках! "Если бы директором был я, то:" сделал в Excel (Access-е) табличку кодов и табличку прихода/расхода, а всё остальное на формулах и макроссах (а за коды типа "Код 72_1" бухгалтеров расстреливал из рогатки ). А уж если переносить данные в другую программу, то тоже подготавливал и считал в Excel-е, и готовые массивы копипастил
Вот что-то вроде этого: load_result_2.rar |
|||
карма: 19 |
| ||
файлы: 1 | load_result_2.rar [44.2KB] [192] |
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-22 08:55:48 |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
stygar писал(а): Имея объединенные данные по движению товара, уже можно проводить множество расчетов по каждой позиции. Например, в самом Excel я без проблем для каждой позиции рассчитаю категорию по АВС-анализу, XYZ-анализу... и т.п.Даже не имея объединенных данных по движению товара, а имея только исходные три таблицы, одним запросом получу категорию по АВС-анализу каждой позиции.(Это если применять OLEDB) И не надо рассказывать, что stygar писал(а): большинство людей эксель не знаютЛеонид писал(а): считаю, что Excel самодостаточна и прикручивать к ней свои программки излишне. |
|||
карма: 25 |
|
Ответов: 19
Рейтинг: 1
|
|||
Tad писал(а): Даже не имея объединенных данных по движению товара, а имея только исходные три таблицы, одним запросом получу категорию по АВС-анализу каждой позиции. |
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
stygar, издание второе, переработанное и дополненное (примечания к определяющим алгоритм компонентам и группировка их с пояснениями). Так же рекомендую посмотреть на код скрипта для понимания работы его. Получше проверьте правильность извлечения данных, хотя я и проверял, но вдруг недопроверил
|
|||
карма: 19 |
| ||
файлы: 1 | mytablexcelend.rar [5.2KB] [181] |
Ответов: 19
Рейтинг: 1
|
|||
Леонид, спасибо большое!
Буду изучать вашу схему. |
|||
карма: 0 |
|
Ответов: 19
Рейтинг: 1
|
|||
а кто может помочь в таком вопросе... все по тому же объединению таблиц из Excel файлов.
Все что нужно сделал, выводится в StringTableMT необходимый результат... Проблема в том, что при 1000 и выше строк зависает программа... А нужно по 10000-20000 строк загружать и производить над ними там дальнейшие расчеты... ------------ Дoбавленo в 12.28: Может как-то порционно загружать строки? По 200 строк, например? |
|||
карма: 0 |
|
Ответов: 8928
Рейтинг: 823
|
|||
stygar, за что боролись, на то и напоролись Не исключено, что ИНТЕРФЕЙСНАЯ таблица МТ при проступлении очередного значения чесно перерисовывает всю таблицу, а перерисовка отнимает время, а тут приходит ещё одно значение и крах программы.
В такой ситуации с обычной таблицей (или с картинками) можно было бы заносить данные в неотображаемый StrList и по окончании заполнения перекидывать данные в таблицу, при этом существенно, в разы, уменьшается время заполнения, но как это сделать с МТ не знаю, может Nesco подскажет (И ещё раз: приведись мне желание выводить данные из Excel в свою программу, все расчёты, новые таблицы по ним, вплоть до печати готовых отчётов, делал в самой Excel с помощью формул и макросов, а из своей программы только запускал макросы и выводил результаты ) |
|||
карма: 19 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Леонид писал(а): при этом существенно, в разы, уменьшается время заполненияВряд ли сильно поможет при таком количестве строк. Леонид писал(а): И ещё раз: приведись мне желание выводить данные из Excel в свою программу, все расчёты, новые таблицы по ним, вплоть до печати готовых отчётов, делал в самой Excel с помощью формул и макросов, а из своей программы только запускал макросы и выводил результатыВот это правильно. Я бы тоже пошел таким путем. stygar писал(а): Может как-то порционно загружать строки? По 200 строк, например?Тут надо учесть тот момент, что с таблицей до окончания загрузки всего списка, ничего нельзя будет сделать, только тупо смотреть, как она загружает в себя список кусками. И я бы категорически не советовал использовать StringTableMT, для таких вещей больше подходит MTStrTbl |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
stygar писал(а): А нужно по 10000-20000 строк загружать и производить над ними там дальнейшие расчеты...stygar писал(а): Может как-то порционно загружать строки? По 200 строк, например?Пожалей оператора. Ослепнет. |
|||
карма: 25 |
|
Ответов: 19
Рейтинг: 1
|
|||
nesco писал(а): И я бы категорически не советовал использовать StringTableMT, для таких вещей больше подходит MTStrTblэто не проблема, уже переделал, спасибо за совет Tad писал(а): Расчеты нужно производить до загрузки в таблицу, а таблица - это ОКНО для просмотра РЕЗУЛЬТАТА. Как только это поймешь - сразу отпадут все проблмы и вопросы.ну так в sql-запросе и происходит объединение необходимой информации, а при выводе данных все зависает... если порционно вывожу маленькое количество строк, то все нормально происходит... не могу только разобраться, как с помощью одного sql-запроса выводить определенное количество строк порциями... Tad писал(а): А глаза не вылезут при просмотре по 200 строк ?Пожалей оператора. Ослепнет. оператор в этот момент не работает с данными, смысл ему с ними работать если они не загружены... |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
1. В MTStrTbl есть нижняя точка PerPage -
2. Запрос строишь такой: SELECT <что нужно>
Результат - мгновенный вывод на экран, т.к. выводятся только те строки, что помещаются в видимую на экране область таблицы.
FROM <откуда> WHERE <условие> LIMIT <PerPage> OFFSET <здесь значение меняется от клавиш управления PgUP,PgDown,Home,End и стрелок курсора> Демонстрация вышесказанного : http://www.fayloobmennik.net/4050409 Там в таблице не 20 тыс. строк, а все 800 тысяч. |
|||
карма: 25 |
|
Ответов: 19
Рейтинг: 1
|
|||
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 |
|
Ответов: 824
Рейтинг: 138
|
|||
карма: 1 |
|