Текущий архив: 2004.09.19;
Скачать: CL | DM;
Вниз
Выбока максимального значения поля Найти похожие ветки
← →
Вика2 (2004-08-19 11:50) [0]Подскажите плиз как можно программно без использования SQL выбрать максимальное значение поля (тип дата) ?
Thanx...
← →
Соловьев © (2004-08-19 11:58) [1]
> как можно программно без использования SQL
зачем? с помощью скл это быстрее и правельнее
← →
Ильш (2004-08-19 11:58) [2]перебором как же еще
тока без SQL это изврат конкретный
← →
surkis (2004-08-19 12:06) [3]> программно без использования SQL
думаю имеется уже готовый датасет и нужно найти запись с максимальным значением даты, тогда
var
NumOfRec:Integer;
MaxDate:TDateTime;
...
begin
...
Query.First;
MaxDate:=Query.FieldByName("Date").asDateTime;
NumOfRec:=Query.RecNo;
for i:=1 to Query.RecordCount do
begin
if MaxDate<Query.FieldByName("Date").asDateTime then
begin
MaxDate:=Query.FieldByName("Date").asDateTime;
NumOfRec:=Query.RecNo;
Query.Next;
end;
else Query.Next;
end;
Query.RecNo:=NumOfRec;
...
end;
← →
Соловьев © (2004-08-19 12:10) [4]
> Query.
Я бы понял если бы это была Table, но если запрос... ужас.
← →
Ильш (2004-08-19 12:10) [5]забавно
если человек не может даже просто найти максимальное в неком массиве
на уроках информатики такое по моему проходят
← →
surkis (2004-08-19 12:12) [6]> > Query.
> Я бы понял если бы это была Table, но если запрос... ужас.
Может у неё и Table я по привычке написал Query
← →
Соловьев © (2004-08-19 12:14) [7]
> for i:=1 to Query.RecordCount do
да и это потенциальная ошибка.
← →
Соловьев © (2004-08-19 12:15) [8]
> NumOfRec:=Query.RecNo;
А это вообще застрелится.
← →
surkis (2004-08-19 12:16) [9]> > for i:=1 to Query.RecordCount do
> да и это потенциальная ошибка.
это почему?
← →
Соловьев © (2004-08-19 12:24) [10]да потому... прочти про свойство датасета BOF и EOF
← →
Ильш (2004-08-19 12:25) [11]ghbvth в С++ (с Дельфями давно не общался просто)
for (Table->First();Table->Eof;Table->Next())
{
....и погнали максимум искати :))))
}
← →
surkis (2004-08-19 12:30) [12]> Соловьев © (19.08.04 12:24) [10]
> да потому... прочти про свойство датасета BOF и EOF
Спасибо за совет, свойства я такие знаю. Факт в том что моя схема меня не разу не подводила потому для меня не разницы я пишу и так и так
← →
Ильш (2004-08-19 12:35) [13]
> Факт в том что моя схема меня не разу не подводила потому
> для меня не разницы я пишу и так и так
можно правой ного почесать левое ухо
никто не говорит что нельзя
но удобно ли????
← →
Кщд © (2004-08-19 13:10) [14]if MaxDate<Query.FieldByName("Date").asDateTime then
begin
...
Query.Next;
end
else Query.Next;
← →
}{ander © (2004-08-19 13:18) [15]
> surkis (19.08.04 12:30) [12]
> Факт в том что моя схема меня не разу не подводила потому для меня не разницы
> я пишу и так и так
А ты попробуй использовать с этой "схемой" TIBDataSet и увидишь, что получится - если не сделать предварительно FetchAll, то будет еще хороше, если твой цикл выполнится хотя бы раз, не смотря на то, что в выборке может быть туча записей ;-)
← →
Вика2 (2004-08-19 13:53) [16]вобщем понятно, спасибо, я сделала это с помощью SQL"я. Подскажите плиз, если например из одной таблицы надо выудить несколько значений, как-то:
1. Число доступных карт
2. Число активированных карт
3. Число заблокированных карт
Это надо 3 запроса делать? или можно как-нибудь в одном? :((
← →
Соловьев © (2004-08-19 13:54) [17]можно, групировка для этого есть.
← →
Вика2 (2004-08-19 14:39) [18]2 Соловьев ©
Запрос получился:
SELECT count(idcard) AS numCards, status AS nameStatus
FROM cards
GROUP BY status;
В Access все нормально работает, возрращает все как надо, попробовала этот же запрос в Delph"e: выдается ошибка:
...Exception class EAccessViolation with message "Access violation at adress 1Bxxxx in module msjet40.dll" Read of adress ...
???
Страницы: 1 вся ветка
Текущий архив: 2004.09.19;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.034 c