Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Нужен Цикл Do While


Автор: nekstv 27.7.2007, 23:12
Есть таблица в которой 2 поля. поле- KODUCH( код товара) и поле DATAPRIX ( в котором размещаются даты прихода товара). Мне надо создать цикл, что бы двигаясь по полю KODUCH, вычитались даты, следующая дата вычитала предыдущую! ( примерно так Di - Di-1) и так до следующего ТМЦ, потом цикл считает даты следующего ТМЦ. И все это записывалась в поле другой таблицы. Помогите с циклом!!!!!!

НАчатый  код:
Код

Private Sub Формирование_ННЗ_Click()
Dim rstPriH As Recordset      
Dim rstPlecho As Recordset

Set rstPriH = CurrentDb.OpenRecordset("PrDokO")
Set rstPlecho = CurrentDb.OpenRecordset("PrDokO")
rstPriH.MoveFirst

per = rstPriH!KODUCH
Do While per = rstPriH!KODUCH  // KODUCH это код



Loop



End Sub

Автор: cardinal 28.7.2007, 00:57
Модератор: Используйте теги "Код"!

Автор: Akina 29.7.2007, 20:42
Цитата(nekstv @  28.7.2007,  00:12 Найти цитируемый пост)
Мне надо создать цикл

Надо? Создайте.

Хотя не понимаю, зачем тут цикл, когда все делается одним (правда, слегка замороченным) запросом.

Автор: nekstv 29.7.2007, 23:28
У меня он не получается! 

Автор: Akina 30.7.2007, 12:10
Пример.

Есть таблица с полями:
ID
C (Category)
D (Date)
V (Value)


Надо по каждой категории получить прирост значения по сравнению с предыдущей датой.

Запрос 1. Цель - получение всех разностей. Его имя - Q1.

Код

Select T.C, T.D, (T.V-T1.V) As dV, (T.D-T1.D) As dD
From T, T As T1
Where ((T.C=T1.C) AND ((T.D-T1.D)>0))


Запрос 2. Цель - отобрать минимальные (т.е. собственно прирост). Его имя - Q2.

Код

Select C, D, Min(dD) As mdD
From Q1
Group By C, D


Запрос 3. Получение требуемых данных. Его имя - Q3.

Код

Select Q1.C, Q1.D, Q1.dV
From Q1 
  Inner Join Q2
    On ((Q1.C=Q2.C) AND (Q1.D=Q2.D) AND (Q1.dD=Q2.mdD))


Осталось все это собрать в один запрос. При всем его монстроидальном виде, он вполне работоспособен.

PS. Это всего лишь пример, демонстрирующий идею. Посему писан на коленке и работоспособность не гарантирую. Но кому надо, тот разберется.

Автор: nekstv 1.8.2007, 23:12
Спасибо! Я разобрался с циклом, все получиось, все работате!!!!!!!!!!!!

Добавлено через 6 минут и 40 секунд
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)