Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли сделать такой запрос: [D6, Access]


Владий ©   (2003-08-11 09:50:00) 

Есть таблица с договорами. По ним идут перечисления, но не каждый день. Нужно выводить в таблицу таким образом, чтоб если ны было перечисления на дату, то писалось бы значение, предыдущего перечисления. И так по каждому договору...

Так можно сделать?

Хорошей Удачи!
Владий // ICQ: 47659886


Владий   (2003-08-11 17:10:00) [1]

Как я понимаю, мне нужно делать доп. таблицу куда перекидывать данные, вставляя нехватающие строки (ибо перечисления далеко не ежедневны).
Данные все вносятся вручную...

PS. По поводу последнего скрипта - эксес не понимает откуда появились т2 и т3 =/


denche   (2003-08-11 13:53:00) [2]

Вот такой запрос не подойдет???

SELECT t1.Contr, t1.GSum , t1.GDate
FROM tabl AS t1
inner join
(SELECT max(t2.GDate) as GDate, t2.Contr
FROM tabl AS t2
where t2.GDate <= #01/01/2003#
group by t2.Contr
) as t3
on t1.contr = t3.contr
and t1.Gdate = t3.GDate

order by t1.contr


отлажен на Accesse 2000


Hawk2   (2003-08-11 11:17:00) [3]

Туговато соображаю, вобщем если есть возможность изменить программу, то делай как написал Соловьев, только я думаю здесь нужно использовать второй запрос, чтобы найти последнюю запись с суммой нужного нам договора, ну а потом вставка или апдейт, смотря что нужно. Кстати у тебя записи с договорами каждый день добавляются или в начале месяца? Если каждый день то как, автоматом или вручную? И еще, если все же програмку (которая заводит эти договора) изменить нельзя и приходится работать с чем есть, то наверное всетаки через временные таблицы.


stud   (2003-08-11 11:12:00) [4]

если выбрать все договора с максимальной датой? по идее получатся договора с текущей датой или последней введенной, те. предыдущей


Владий   (2003-08-11 11:05:00) [5]

Все правильно. но вот каким образом это все организовать я пока не представляю...


Hawk2   (2003-08-11 10:45:00) [6]

Я думаю автор имел ввиду другое. Если я правильно понял то в таблице будут записи на каждий день по каждому введенному договору, но чтобы реализовать запрос автора нужно либо в программе делать так чтобы каждый день на каждый договор (если небыло перечислений) отискивалась запись с предидущей сумой и записывалась в поле GSum. Или если работать с уже имеющейся базой то тут не обойтись без промежуточных таблиц. Или может я чего-то не понял?


Соловьев   (2003-08-11 10:30:00) [7]

а на какую дату? на текущую тебе?
думаю 2 запроса вида
select *
from table
where gdate=now and contr=:n_dog

и еще один

select *
from table
where contr=:n_dog
order by gdate desc

а в проге
if not query1.isempty then
edit1.text := query1.fieldbyname("gsum").asstring
else
edit1.text := query2.fieldbyname("gsum").asstring


Владий   (2003-08-11 10:19:00) [8]

Соответственно, как я понимаю - нужно разсортировать по договору, а потом по датампроверить на наличие записей и если таковой нет, то добавить... Или я не понимаю чего-то?...


Владий   (2003-08-11 10:16:00) [9]

Таблица в Access"ной базе

ID_P - счетчик
GDate - дата перечисления
Contr - Договор
GSum - сумма перечисления

Хорошей Удачи!
Владий // ICQ: 47659886


Hawk2   (2003-08-11 10:06:00) [10]

И структуру таблиц неплохо бы узнать?


Соловьев   (2003-08-11 09:56:00) [11]

какая СУБД?


Наверх

Титульная страница Поиск, карта сайта Написать письмо