![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли сделать такой запрос: [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]
какая СУБД?