|
|
|
расчет индексов, помогите
|
|||
|---|---|---|---|
|
#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?fid=45&msg=32250286&tid=1679676]: |
0ms |
get settings: |
11ms |
get forum list: |
26ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 394ms |

| 0 / 0 |
