|
|
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
есть такая таблица: годы.....объем 2002.....100 2003.....120 2004.....135 как запросом посчитать темпы роста по годам, что бы получилось вот так: 2002.....1 2003.....1,2 2004.....1,125 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 13:38 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Решение в лоб Query4 Код: plaintext 1. Код: plaintext 1. Код: plaintext 1. объем - Value годы - Year Можно попытаться объеденить в один запрос, но тут надо знать версию Access'a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 13:51 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
access 2000 9.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 13:57 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Еще предложите, пожалуйста, варианты! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:22 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Так тож работать должно к сожалению проверить не могу Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:28 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
SELECT s1.fy, nz(s1.fval/s2.fval,1) AS fprc FROM ff AS s1 LEFT JOIN [select * from ff]. AS s2 ON s1.fy=s2.fy+1; Таблица ff (fy, fval) при условии, что записи по годам не повторяются Вариант для MDB, для сиквела немного по-другому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:37 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Да чуть не забыл, мой вариант будет работать если записи по годам без "дырок", т.е. нет разрывов между годами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:42 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
To incold А разве в 2000м вложеный запрос так { }. As записываеться? Вопрос для общего развития вместо - "{" - читай квадратные скобки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:42 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
2 Sfagnum Как в 2000-м не знаю я не использую построитель, пишу запросы руками, и использую AccessXp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:44 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
мдаа... нет просто у меня 97\'ой\r \r просто ЛП тут, от Дата: 9 май 03, 02:49, писал что в ХР по другому вкладывабт запросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:47 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Не вижу разницы как ассекс преобразовал запрос (главное результат), могу написать текст, который я писал, до преобразования SELECT s1.fy, nz(s1.fval/s2.fval,1) AS fprc FROM ff s1 LEFT OUTER JOIN (select * from ff) s2 ON s1.fy=s2.fy+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:50 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
да, спасибо все работает, только у Sfagnum'a считаются индексы по первому значению, у incold так как мне и надо-отношение последующего к предыдущему. Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 14:55 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
2 bazil Сорьки не правильно понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 15:07 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
to incold and others Блин, все сильно усложнилось: есть еще столбцы, т.е алгоритм incold'a не работает, выглядит все приблизительно вот так: segment.........year.......sum x..................2002......100 x..................2003......120 x..................2004......135 ... y.................2002......110 y.................2003......115 y.................2004......125 ... есть ли алгоритм по которому можно будет считать цепные индексы(2004/2003 и т.п.) в одном запросе, что бы на выходе получалось: x..................2002.....1 x..................2003.....1.2 x..................2004.....1.125 ... y..................2002.....1.05 и т.д. можно ли это сделать при большем количестве столбцов? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 16:24 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Блин, а самому немного подумать?! SELECT s1.seg, s1.fy, nz(s1.fval/s2.fval,1) AS fprc FROM ff AS s1 LEFT JOIN [select * from ff]. AS s2 ON s1.fy=s2.fy+1 and s1.seg=s2.seg; Таблица ff (seg, fy, fval) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 16:30 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
-) Сорри, наверное и подумал бы, тем более , что в других областях деятельности у меня это неплохо получается-), но все что Вы мне предложили выходит за пределы моего знания аксеса-), так что использую, не понимая как это работает. Спасибо, за долготерпение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 16:35 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
В начале предупреждать надо об уровне подготовки Варианты: - только не бейте - извините, что к вам обращаемся, мы сами не местные - помогите чайнику ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 16:39 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
- извините, что к вам обращаемся, мы сами не местные Все прекрасно, но если у меня нет столбца с номерами, то как быть??? Этот алгоритм тогда не прокатит. Надо посчитать себестоимость. 1 строка берется из таблички "Входящее_сальдо". Дальше по каждому материалу должна рассчитываться себестоимость. ......1............2..............3............4.............5............6 ---Дата......Кол-во......Сумма.......с/с.........Остаток.... 1...............100............1000........10..........100........ - это втрока вход 2сальдо 2.................60.............1000......12,5..........160...... 3.................40...............800........14..........200....... 4................-50..............0............14.........150..... Ну и так далее. Думаю, что большинство программеров баз данных знает как формируется себестоимость. Столец 4 формируется сдедующим образом: Для второй строки: (с/с1*Остаток1+Сумма2)/Остаток2 Для третьей строки: (с/с2*Остаток2+Самму3)/Остаток3 ......... Уникальных номеров строк нет. Попробовал пример из http://am.rusimport.ru/msaccess/topic.aspx?ID=87, но у меня не получилось. Пишет про ошибку в выражении FROM. :((( ПоможИте, пжалуста!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:02 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Должен же в таблице быть ключ. (не обязательно номер, это может быть комбинация полей которые однозначно идетифицируют записб) Какой он (ключ)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:06 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Это не таблица. Это запрос. В таблицах, ессно, есть уникальные номера (кстати, если была отмена ввода, то они не обязательно уникальные (это для поля типа Счетчик)). Данные в запрос Себестоимости тянуться из 3-х таблиц. Почему? Ну так уж я написал. Можно уменьшить до двух, но уже поздно. :)) Просто есть поставка товара и у этой поставке может быть 2, а то и 3 перевозчика, следовательно еще одна табличка с перевозчиками и суммой перевозки (транспортные расходы тоже в себестоимость). Вои и получается, что тяну сумму и контрагента юнионом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:12 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
:( Ничем помочь не могу, т.к. не все программеры баз данных знают как формируется себестоимость Базы данных - это не только бухгалтерия. Может быть если будет пример как у автора топика: Есть набор записей (со значением каждого столбца), хочу получить такой набор записей (с формулой расчета каждого столбца). Тогда может что-то и подскажу, хотя особо надеяться на это не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:22 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Есть запрос: .......Дата.......Кол-во......Сумма 1.....................100............1000 - это строка вход сальдо (она постоянна) 2.....................60.............1000 3.....................40...............800 4.....................-50..............0 Интересует получить из нее следующее: ---Дата......Кол-во......Сумма.......с/с.........Остаток.... 1...............100............1000........10..........100........ - это строка вход сальдо 2.................60.............1000......12,5..........160...... 3.................40...............800........14..........200....... 4................-50..............0............14.........150..... Расчет четвертого столбца (формула) Для второй строки: (с/с1*Остаток1+Сумма2)/Остаток2 Для третьей строки: (с/с2*Остаток2+Самму3)/Остаток3 и так далее Расчет пятого столбца (формула) Для второй строки: Остаток1+Кол-во1 Для третьей строки: Остаток2+Кол-во2 и так далее ---- Надеюсь хоть чуть-чуть понятно объяснил. :) --- --- > Базы данных - это не только бухгалтерия. Ага, это еще и финансово-экономические отделы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:38 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
2 TRoUbLEs Какая зависимость между датами? Если ее нет, т.е даты могут быть произвольными, то нужно копать в сторону варианта Sfagnum SELECT Table1.Year, Table1.Value/Query5.Value FROM Table1, (SELECT Table1.Value FROM Table1 INNER JOIN (SELECT Min(Table1.Year) AS MinOfYear FROM Table1) As Query4 ON Table1.Year = Query4.MinOfYear) As Query5; Ваше время истекло , мое т.е. так что дальше не сегодня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:46 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Дата здесь нужна только для сортировки по возрастанию, чтобы на определенную дату по ПРАВИЛЬНОЙ себестоимость списать материалы. Одной даты может быть штуки 3-4 (вариант с GROUP не подходит). ----- Ну ладно, завтра так завтра. ;-) Ибо правильно сказано "мое время истекло." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:55 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
2 Basil Можно еще так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 19:35 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Или так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 20:25 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Ну что ж, вот и наступило это самое "ЗАВТРА" Задача немного сдвинулась с места, но тут начался очередной пригорок, поэтому так и не поехали. 1) Как добавлять нумерацию строк в запрос, основанный на таблички, где есть id я разобрался. Но у меня совершенно не получилось пронумеровать табличку, где этого самого id нет. :( Вопрос: Возможно ли это??? Хотя... Как я уже говорил, этот запрос тянет данные из 3 таблиц, посредством ЮНИОНа. В принципе, можно сделать уникальнам составной ключ (id, tabl), но тогда я не понимаю как пронумеровать записи. :(( У меня не получилось. 2) Т.к. этот ЮНИОН-запрос, то организовывать СЕЛЕКТ в СЕЛЕКТе нежелательно, ибо сами понимаете, что будет со скоростью (вчера так и не должадся окончания этого увлекательного процесса и снял Аксес по трем пальцам). Может можно обойтись без этого, но как??? 3) Основная задача стоит в том, чтобы брать данные из предыдущей строки и заносить их в последующую, выполняя нужные расчеты. P.S. извините, что к Вам обращаемся, сами мы не местные. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 11:25 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Ну что ж, вот и наступило это самое "ЗАВТРА" Задача немного сдвинулась с места, но тут начался очередной пригорок, поэтому так и не поехали. 1) Как добавлять нумерацию строк в запрос, основанный на таблички, где есть id я разобрался. Но у меня совершенно не получилось пронумеровать табличку, где этого самого id нет. :( Вопрос: Возможно ли это??? Хотя... Как я уже говорил, этот запрос тянет данные из 3 таблиц, посредством ЮНИОНа. В принципе, можно сделать уникальнам составной ключ (id, tabl), но тогда я не понимаю как пронумеровать записи. :(( У меня не получилось. 2) Т.к. этот ЮНИОН-запрос, то организовывать СЕЛЕКТ в СЕЛЕКТе нежелательно, ибо сами понимаете, что будет со скоростью (вчера так и не должадся окончания этого увлекательного процесса и снял Аксес по трем пальцам). Может можно обойтись без этого, но как??? 3) Основная задача стоит в том, чтобы брать данные из предыдущей строки и заносить их в последующую, выполняя нужные расчеты. P.S. извините, что к Вам обращаемся, сами мы не местные. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 11:43 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Вот день пришел - и никого, лишь я один за всех (с) почти классика Жаль, что никто ничего не может сказать по моему вопросу. :((( Если это где-то уже обсуждалось, то ткните туда, если не сложно (мне поиск не помог особо) или в первый(!) том Гетца (второго пока нет). Ну и если кто-то надумает что-то, то буду весьма прЫзнателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 13:18 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
2TRoUbLEs Нумерация строк в запросе, говоришь, тебя спасет? Попробуй такую функцию написать: Public Function GetNextNumber(a) as Long Static Dim t as long t=t+1 GetNextNumber = t End Function И вызывай ее из запроса. Только в параметр ей какое-нибудь поле передавай, а то она пересчитываться для каждой строки не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 13:27 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Там в одном из топиков fedd говорил "скажи зачем, а тебе скажут как без этого обойтись". Себестоимость продукции в общем смысле расчитывается как отношение всех затрат на производство продукции к количеству произведенной продукции за тот же период, а ленточные вычисления придумали чтобы упростить расчет на арифмометре. В твоем случае себестоимость тоже можно вычислить как отношение всех затрат ко всему количеству: 1000/100=10 2000/160=12.5 2800/200=14. ... Может поможет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 13:39 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
То Geo: Можно нескромный вопрос? Ты у себя запускал этот код? Просто у меня первое, что выдал, как это "Ошибка компиляции..." и сослался на Static. "Ладно", - думаю, - "Все равно я тебя нае#у" (это про Аксес). Написал несколько иначе: Public k Public Function GetNextNumber(a) As Long Dim t As Long 'Static t t = k + 1 k = t GetNextNumber = k End Function (nfrbt pfgenrb c k и t сделал потому, что если просто оставить t, то присваивается только 1 (единица) во всем столбце. Но этот код работает еще веселее. Если я кручу полосу прокрутки (записей всего несколько больше 6300 штук), то автоматом в столбце с этой функцией пересчитываются значения. Прокрутив два-три раза полосу туда-сюда, можно получить 12, а то и все 18 тысяч, если крутить отначала и до конца. Итак, ничего не вышло. На выходных буду думать, какой код написать, чтобы все-таки это возможно было сделать. ---- ---- То Roalex: Ну с себестоимостью ты прав, но только в ОЧЕНЬ общем смысле. ;-) Как рассчитать себестоимость - я знаю, но меня же интересует именно вариант построчного расчета, т.к. тут можно видешь на чем у нас растет себестоимость, а на чем уменьшается и насколько. Соответственно надо отследить момент, когда будет нерентабельно продавать материалы, как сопутствующая деятельность. Аналогично, надо на любой момент времени видеть по какой себестоимости списывать товар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 15:57 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Честно - нет, конечно :) Странно, что не работает... Чичас посмотрим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 16:00 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Что-то я погорячился. :(\r Для нумерации строк в запросе нужнен или уникальный ключ, или временная таблица...\r Признаю себя ослом...\r \r /topic/3948 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 17:18 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Здесь конечно тоже все можно отследить, но это все дело субьективное. А что касается ленточных или как ты говоришь построчных вычислений, то лучше чем временная таблица и код на VBA(VB) я не встречал(наверное мало искал). Код пишется быстро и все в своих руках, а если долбаться с запросами, то потом,если надо что-то еще посчитать, зарываешься в такие дебри, что это только на любителя и для повышения профессионального уровня, но, ИМХО, не для создания действующих и постоянно изменяющихся проектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 17:21 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
To Geo: Хе. сеньксь, кАнЭшна, но только этот ФАК уже у меня на компе в локальном виде дома лежит. Учора уже все что можно было выжать с форума - выжал. Ну коли уж ты привел тот ФАК, то скажи, как сделать временную табличку с идентификатором не на скуле, а в mdb? Что-то у меня никак не выходит. То Roalex: Не понял, это ты про какие дебри? Я создаюзапрос для того, чтобы если что-то пропустил на какую-то дату (не ввели накладную или счет-фактуру), то автоматом бы пересчитывалась себестоимость с той даты и до текущего момента. Time is up! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 18:08 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Я вот о чем: в такой ситуации я создал бы временную таблицу и не компостировал бы себе ничего. А про дебри, вот что хотел скзать: вдруг потом в этот запрос, который решит твою задачу на настоящий момент, надо будет несколько усложнить (что-нибудь типа хитрого дополнительного условия), то долбаться надо не слабо, вместо того что-бы добавить один оператор в коде VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 08:45 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
То Roalex: Ты невнимательно прочитал мой предыдущий пост. :( Я уже понял, что скорее всего это получится сделать только во временной табличке. Поэтому уже спросил, как ее создать, вернее не ее, а индекс в ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 11:05 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
Можно попробовать метод CreateIndex, или инструкцию SQL CREATE INDEX в зависимости от ситуации. А можно индекс и не создавать для решения задачи :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 11:25 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
"Static Dim t as long " 1/ с точностью до наоборот Static t As Long. 2/ это условие - ключевое. 3/ второе ключевое условие - необновляемый запрос (distinct, group , или (по моему обязательно, но не помню) в [тип набора записей] = "Статический набор"). Тогда данные считаются 1 раз, и не пересчитываются при скроллинге.) Ф-ю не смотрел. Но смысл статической переменной - служить накопителем при выходе из ф-ии. Применяется для расчета "агрегатов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 12:07 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
То assa: Спасибо! Действительно, если поставить в запросе DISTINCT и "Статический набор записей", то данные не обновляются при скролле. Только теперь очередная загвоздка: в запросе всего 6384 записи (на момент проверки их столько). Запустил запрос - все нормально. Закрыл, запустил заново первая запись начинается с 6385 и до 12768. :) Вот код: Public Function GetNextNumber(a) As Long Static t As Long t = t + 1 GetNextNumber = t End Function Как его теперь обулить-то? В голову лезет только то, что можно посчитать сначала посчитать кол-во записей, которов возвращает сей запрос, а потом t сравнивать с этим значением и как только они равны - обнулять ее. Если убрать Паблик перед функцией, то ничего не меняется. В принципе, основная задача решена - получить нумерованный список с шагом в 1, для дальнейшей обработки, посредством кода, который привел incold (Дата: 27 авг 03, 14:37). Но все же, хотелось до конца разобраться в этой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 13:04 |
|
||
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#18+
См. статью Шермана (по моему). Там правильный вызов функций такого рода. На вскидку не помню. Ибо не пользуюсь :). Смысл -вызвать при вызове первой строки обнуление. Там разберешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 13:13 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1679676]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 393ms |

| 0 / 0 |
