|
|
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Есть таблица с двумя полями время и масса вида: Time m 10:12:00 73 10:14:00 74 10:25:05 75 10:43:00 75 10:47:10 74 Нужно добавить поле со значениями, если масса увеличивается то "1", если уменьшается "-1", если не изменяется "0". Т.е должно получится: Time m State 10:12:00 73 1 10:14:00 74 1 10:25:05 75 1 10:43:00 75 0 10:47:10 74 -1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 08:17 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
А записей в таблице очень много ? А то я в ADO тебе напишу, а это долго выполняется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 08:36 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Нет немного, порядка 10-20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 08:42 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Поищи по форуму топик "FAQ: что мы знаем о каунтерах". Там на последней странице (или предпоследней) есть способ нумерации записей в запросе. Аналогично и твою задачу решить можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 08:47 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Таблица: MyTable, Поля: Time, Massa, Itog Public Function UpItog() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim dTime As Date Dim intMassa As Integer Set cnn = CurrentProject.Connection rst.Open "Select * from MyTable Order by Time", cnn, adOpenKeyset, adLockPessimistic dTime = rst!Time intMassa = rst!massa rst.MoveNext Do Until rst.EOF With rst !itog = IIf(!massa > intMassa, "1", IIf(!massa < intMassa, "-1", "0")) .Update End With dTime = rst!Time intMassa = rst!massa rst.MoveNext Loop rst.Close cnn.Close End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 08:59 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Так With использована чуть-чуть красивее... Public Function UpItog() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim dTime As Date Dim intMassa As Integer Set cnn = CurrentProject.Connection rst.Open "Select * from MyTable Order by Time", cnn, adOpenKeyset, adLockPessimistic With rst dTime = !Time intMassa = !massa .MoveNext Do Until .EOF !itog = IIf(!massa > intMassa, "1", IIf(!massa < intMassa, "-1", "0")) .Update dTime = !Time intMassa = !massa .MoveNext Loop .Close cnn.Close End With End Function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:05 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Я имел в виду что-то вроде этого (при id - счетчик) Запрос1: select t1.id as id1, max(t2.id) as id2 from table1 as t1 left join table1 as t2 on t2.id<t1.id group by id1 Запрос2: select t1.*, ((nz(t1.m,0)<nz(t2.m,0)) - (nz(t1.m,0)>nz(t2.m,0))) as Delta from table1 as t1 left join Запрос1 on t1.id=Запрос1.id1 left join table1 as t2 on t2.id=Запрос1.id2 (не проверял) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:43 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Вот, проверил: Запрос1 Код: plaintext 1. 2. Запрос2 Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:55 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
2 GEO Я тоже, сначала, хотел запросом сделать...что-то типа: Взять текущюю запись, из нее извлечь ID, ID-1 (берем предыдущюю запись), сравниваем поля МАССА, пихаем результат IIF-а в текущюю запись....но понял - что мои познания SQL скудны для этого и в нем я не силен (в ADO, честно говоря, тоже...)...но, как я понимаю - если объемы большие, то SQL выполняется быстрее...Короче - я бы с удовольствием увидел вариант с SQL, для личного развития.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:55 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
Во втором запросе орет, что ссылка на поле t1.m может относится к полям нескольких таблиц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 10:07 |
|
||
|
Нарастающий итог
|
|||
|---|---|---|---|
|
#18+
У меня все получилось в точности как предложил GEO! И результат выдает правильный! ТОлько Аксесс ругается в первом запросе can't represent join represent t2.id<t1.id. И я его понимаю ;-) Но столкнулся с такой ситуацией столкнулся впервые - выражение синтаксически правильное, а вот отобразить его нельзя. Надо попробовать на серверных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 10:17 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1660&tid=1675793]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
288ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 556ms |

| 0 / 0 |
