Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

Можно ли сделать такой запрос:   Найти похожие ветки 

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

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

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

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


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

какая СУБД?


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

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


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

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

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

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


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

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


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

а на какую дату? на текущую тебе?
думаю 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


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

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


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

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


 
stud ©   (2003-08-11 11:12) [8]

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


 
Hawk2   (2003-08-11 11:17) [9]

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


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

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

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-1456
Jacob
2003-08-18 12:24
2003.09.01
Сортировка TListView


1-1363
Fog
2003-08-19 17:00
2003.09.01
EListError при обращении к TToolBar.Buttons


3-1336
ZyXEL
2003-08-07 15:17
2003.09.01
ADO (*.xls) -> DBF ?


3-1341
filya
2003-08-06 18:29
2003.09.01
Interbase и русские символы (работа UPPER)


1-1370
Kiloput
2003-08-17 15:39
2003.09.01
Копирование файлов